aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorOndřej Čertík <ondrej@certik.us>2020-09-21 09:07:24 -0600
committerGitHub <noreply@github.com>2020-09-21 09:07:24 -0600
commit313fe327f6dcc71b023d9f32a0650d5cf25ce009 (patch)
tree12914c1d9ffe8912587a8844119b0f16bb672edd /test
parentdb21f136948defe34e3899def604640e9ecfcc86 (diff)
parentdb67194d936181916bcef873e9317b3cf5048c3d (diff)
downloadfpm-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.md18
-rw-r--r--test/example_packages/program_with_module/app/main.f9010
-rw-r--r--test/example_packages/program_with_module/fpm.toml1
-rw-r--r--test/example_packages/submodules/fpm.toml1
-rw-r--r--test/example_packages/submodules/src/child1.f9016
-rw-r--r--test/example_packages/submodules/src/child2.f9010
-rw-r--r--test/example_packages/submodules/src/grandchild.f9010
-rw-r--r--test/example_packages/submodules/src/parent.f9015
-rw-r--r--test/example_packages/with_c/app/main.f9010
-rw-r--r--test/example_packages/with_c/fpm.toml1
-rw-r--r--test/example_packages/with_c/src/c_code.c10
-rw-r--r--test/example_packages/with_c/src/with_c.f9026
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