diff options
author | Ondřej Čertík <ondrej@certik.us> | 2020-09-21 09:07:24 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-21 09:07:24 -0600 |
commit | 313fe327f6dcc71b023d9f32a0650d5cf25ce009 (patch) | |
tree | 12914c1d9ffe8912587a8844119b0f16bb672edd /test | |
parent | db21f136948defe34e3899def604640e9ecfcc86 (diff) | |
parent | db67194d936181916bcef873e9317b3cf5048c3d (diff) | |
download | fpm-313fe327f6dcc71b023d9f32a0650d5cf25ce009.tar.gz fpm-313fe327f6dcc71b023d9f32a0650d5cf25ce009.zip |
Merge pull request #178 from LKedward/more_examples
Add more example packages
Diffstat (limited to 'test')
-rw-r--r-- | test/example_packages/README.md | 18 | ||||
-rw-r--r-- | test/example_packages/program_with_module/app/main.f90 | 10 | ||||
-rw-r--r-- | test/example_packages/program_with_module/fpm.toml | 1 | ||||
-rw-r--r-- | test/example_packages/submodules/fpm.toml | 1 | ||||
-rw-r--r-- | test/example_packages/submodules/src/child1.f90 | 16 | ||||
-rw-r--r-- | test/example_packages/submodules/src/child2.f90 | 10 | ||||
-rw-r--r-- | test/example_packages/submodules/src/grandchild.f90 | 10 | ||||
-rw-r--r-- | test/example_packages/submodules/src/parent.f90 | 15 | ||||
-rw-r--r-- | test/example_packages/with_c/app/main.f90 | 10 | ||||
-rw-r--r-- | test/example_packages/with_c/fpm.toml | 1 | ||||
-rw-r--r-- | test/example_packages/with_c/src/c_code.c | 10 | ||||
-rw-r--r-- | test/example_packages/with_c/src/with_c.f90 | 26 |
12 files changed, 128 insertions, 0 deletions
diff --git a/test/example_packages/README.md b/test/example_packages/README.md new file mode 100644 index 0000000..06de927 --- /dev/null +++ b/test/example_packages/README.md @@ -0,0 +1,18 @@ +# Example packages + +See the table below for a list of the example packages provided in this directory including +the features demonstrated in each package and which versions of fpm are supported. + + +| Name | Features | Bootstrap (Haskell) fpm | fpm | +|---------------------|---------------------------------------------------------------|:-----------------------:|:---:| +| circular_example | Local path dependency; circular dependency | Y | N | +| circular_test | Local path dependency; circular dependency | Y | N | +| hello_complex | Non-standard directory layout; multiple tests and executables | Y | Y | +| hello_fpm | App-only; local path dependency | Y | N | +| hello_world | App-only | Y | Y | +| makefile_complex | External build command (makefile); local path dependency | Y | N | +| program_with_module | App-only; module+program in single source file | Y | Y | +| submodules | Lib-only; submodules (3 levels) | N | Y | +| with_c | Compile with `c` source files | N | Y | +| with_makefile | External build command (makefile) | Y | N |
\ No newline at end of file diff --git a/test/example_packages/program_with_module/app/main.f90 b/test/example_packages/program_with_module/app/main.f90 new file mode 100644 index 0000000..59441f0 --- /dev/null +++ b/test/example_packages/program_with_module/app/main.f90 @@ -0,0 +1,10 @@ +module greet_m + implicit none + character(*), parameter :: greeting = 'Hello, fpm!' +end module greet_m + +program program_with_module + use greet_m, only: greeting + implicit none + print *, greeting +end program program_with_module diff --git a/test/example_packages/program_with_module/fpm.toml b/test/example_packages/program_with_module/fpm.toml new file mode 100644 index 0000000..bce6aa2 --- /dev/null +++ b/test/example_packages/program_with_module/fpm.toml @@ -0,0 +1 @@ +name = "Program_with_module" diff --git a/test/example_packages/submodules/fpm.toml b/test/example_packages/submodules/fpm.toml new file mode 100644 index 0000000..cfc3d61 --- /dev/null +++ b/test/example_packages/submodules/fpm.toml @@ -0,0 +1 @@ +name = "submodules" diff --git a/test/example_packages/submodules/src/child1.f90 b/test/example_packages/submodules/src/child1.f90 new file mode 100644 index 0000000..dbd0fa5 --- /dev/null +++ b/test/example_packages/submodules/src/child1.f90 @@ -0,0 +1,16 @@ +submodule(parent) child1 +implicit none + +interface + module function my_fun() result (b) + integer :: b + end function my_fun +end interface + +contains + +module procedure my_sub1 + a = 1 +end procedure my_sub1 + +end submodule child1
\ No newline at end of file diff --git a/test/example_packages/submodules/src/child2.f90 b/test/example_packages/submodules/src/child2.f90 new file mode 100644 index 0000000..179cc32 --- /dev/null +++ b/test/example_packages/submodules/src/child2.f90 @@ -0,0 +1,10 @@ +submodule(parent) child2 +implicit none + +contains + +module procedure my_sub2 + a = 2 +end procedure my_sub2 + +end submodule child2
\ No newline at end of file diff --git a/test/example_packages/submodules/src/grandchild.f90 b/test/example_packages/submodules/src/grandchild.f90 new file mode 100644 index 0000000..8c5aa17 --- /dev/null +++ b/test/example_packages/submodules/src/grandchild.f90 @@ -0,0 +1,10 @@ +submodule(parent:child1) grandchild +implicit none + +contains + +module procedure my_fun + b = 2 +end procedure my_fun + +end submodule grandchild
\ No newline at end of file diff --git a/test/example_packages/submodules/src/parent.f90 b/test/example_packages/submodules/src/parent.f90 new file mode 100644 index 0000000..570827c --- /dev/null +++ b/test/example_packages/submodules/src/parent.f90 @@ -0,0 +1,15 @@ +module parent +implicit none + +interface + + module subroutine my_sub1(a) + integer, intent(out) :: a + end subroutine my_sub1 + + module subroutine my_sub2(a) + integer, intent(out) :: a + end subroutine my_sub2 +end interface + +end module parent
\ No newline at end of file diff --git a/test/example_packages/with_c/app/main.f90 b/test/example_packages/with_c/app/main.f90 new file mode 100644 index 0000000..4d3174b --- /dev/null +++ b/test/example_packages/with_c/app/main.f90 @@ -0,0 +1,10 @@ +program with_c_app +use with_c +implicit none + +write(*,*) "isdir('app') = ", system_isdir('app') +write(*,*) "isdir('src') = ", system_isdir('src') +write(*,*) "isdir('test') = ", system_isdir('test') +write(*,*) "isdir('bench') = ", system_isdir('bench') + +end program with_c_app
\ No newline at end of file diff --git a/test/example_packages/with_c/fpm.toml b/test/example_packages/with_c/fpm.toml new file mode 100644 index 0000000..97e3110 --- /dev/null +++ b/test/example_packages/with_c/fpm.toml @@ -0,0 +1 @@ +name = "with_c" diff --git a/test/example_packages/with_c/src/c_code.c b/test/example_packages/with_c/src/c_code.c new file mode 100644 index 0000000..44604f0 --- /dev/null +++ b/test/example_packages/with_c/src/c_code.c @@ -0,0 +1,10 @@ +#include <sys/stat.h> +/* + * Decides whether a given file name is a directory. + * return 1 if file exists and is a directory + * Source (Public domain): https://github.com/urbanjost/M_system + */ +int my_isdir (const char *path) { + struct stat sb; + return stat(path, &sb) == 0 && S_ISDIR (sb.st_mode); +}
\ No newline at end of file diff --git a/test/example_packages/with_c/src/with_c.f90 b/test/example_packages/with_c/src/with_c.f90 new file mode 100644 index 0000000..edd839e --- /dev/null +++ b/test/example_packages/with_c/src/with_c.f90 @@ -0,0 +1,26 @@ +module with_c + use iso_c_binding, only: c_char, c_int, c_null_char + implicit none + +contains + + function system_isdir(dirname) + ! Source (Public domain): https://github.com/urbanjost/M_system + ! + implicit none + character(len=*),intent(in) :: dirname + logical :: system_isdir + + interface + function c_isdir(dirname) bind (C,name="my_isdir") result (c_ierr) + import c_char,c_int + character(kind=c_char,len=1),intent(in) :: dirname(*) + integer(kind=c_int) :: c_ierr + end function c_isdir + end interface + + system_isdir= c_isdir(trim(dirname)//c_null_char) == 1 + + end function system_isdir + +end module with_c
\ No newline at end of file |