diff options
author | LKedward <laurence.kedward@bristol.ac.uk> | 2020-09-18 10:15:13 +0100 |
---|---|---|
committer | LKedward <laurence.kedward@bristol.ac.uk> | 2020-09-18 11:19:30 +0100 |
commit | f0caa736e0fee49ee8680899ba4d17a6e33d6b10 (patch) | |
tree | 356c4312926d59a80c565d13961734639b0c71a3 | |
parent | 898a4efcfd8a3ab47e79b36a36fd6497777a4d5d (diff) | |
download | fpm-f0caa736e0fee49ee8680899ba4d17a6e33d6b10.tar.gz fpm-f0caa736e0fee49ee8680899ba4d17a6e33d6b10.zip |
Add: example package with c code compilation
-rwxr-xr-x | ci/run_tests.bat | 10 | ||||
-rwxr-xr-x | ci/run_tests.sh | 6 | ||||
-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 |
6 files changed, 62 insertions, 1 deletions
diff --git a/ci/run_tests.bat b/ci/run_tests.bat index 9435e0d..2aa27e7 100755 --- a/ci/run_tests.bat +++ b/ci/run_tests.bat @@ -41,4 +41,14 @@ if errorlevel 1 exit 1 if errorlevel 1 exit 1 .\build\gfortran_debug\test\farewell_test +if errorlevel 1 exit 1 + + +cd ..\with_c +if errorlevel 1 exit 1 + +..\..\..\fpm\build\gfortran_debug\app\fpm build +if errorlevel 1 exit 1 + +.\build\gfortran_debug\app\with_c if errorlevel 1 exit 1
\ No newline at end of file diff --git a/ci/run_tests.sh b/ci/run_tests.sh index 3033c2a..ea29da8 100755 --- a/ci/run_tests.sh +++ b/ci/run_tests.sh @@ -17,4 +17,8 @@ cd ../hello_complex ./build/gfortran_debug/app/say_Hello ./build/gfortran_debug/app/say_goodbye ./build/gfortran_debug/test/greet_test -./build/gfortran_debug/test/farewell_test
\ No newline at end of file +./build/gfortran_debug/test/farewell_test + +cd ../with_c +../../../fpm/build/gfortran_debug/app/fpm build +./build/gfortran_debug/app/with_c
\ 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 |