diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2021-02-18 17:39:51 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2021-02-19 18:18:39 +0200 |
commit | 72865a2773a2beb4ea570ecbd7d334866099130f (patch) | |
tree | c40687d56d4c55ce71ea9d9dd20827f780df31ba | |
parent | 79f7328d6a010e56c28eb9442b61931cf13b04e6 (diff) | |
download | meson-72865a2773a2beb4ea570ecbd7d334866099130f.zip meson-72865a2773a2beb4ea570ecbd7d334866099130f.tar.gz meson-72865a2773a2beb4ea570ecbd7d334866099130f.tar.bz2 |
Fix combining C and Fortran. Closes #8377.
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 7 | ||||
-rw-r--r-- | test cases/fortran/9 cpp/main.c | 8 | ||||
-rw-r--r-- | test cases/fortran/9 cpp/meson.build | 12 |
3 files changed, 23 insertions, 4 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index b5f46df..58fd5c6 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -2513,15 +2513,18 @@ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47485''')) element.add_item('DEPFILE', dep_file) element.add_item('ARGS', commands) - self.add_dependency_scanner_entries_to_element(target, compiler, element) + self.add_dependency_scanner_entries_to_element(target, compiler, element, src) self.add_build(element) assert(isinstance(rel_obj, str)) assert(isinstance(rel_src, str)) return (rel_obj, rel_src.replace('\\', '/')) - def add_dependency_scanner_entries_to_element(self, target, compiler, element): + def add_dependency_scanner_entries_to_element(self, target, compiler, element, src): if not self.should_use_dyndeps_for_target(target): return + extension = os.path.splitext(src.fname)[1][1:] + if not (extension in compilers.lang_suffixes['fortran'] or extension in compilers.lang_suffixes['cpp']): + return dep_scan_file = self.get_dep_scan_file_for(target) element.add_item('dyndep', dep_scan_file) element.add_orderdep(dep_scan_file) diff --git a/test cases/fortran/9 cpp/main.c b/test cases/fortran/9 cpp/main.c new file mode 100644 index 0000000..c1750ad --- /dev/null +++ b/test cases/fortran/9 cpp/main.c @@ -0,0 +1,8 @@ +#include <stdio.h> + +double fortran(void); + +int main(void) { + printf("FORTRAN gave us this number: %lf.\n", fortran()); + return 0; +} diff --git a/test cases/fortran/9 cpp/meson.build b/test cases/fortran/9 cpp/meson.build index 7f73985..f96944b 100644 --- a/test cases/fortran/9 cpp/meson.build +++ b/test cases/fortran/9 cpp/meson.build @@ -1,4 +1,4 @@ -project('C++ and FORTRAN', 'cpp', 'fortran') +project('C, C++ and Fortran', 'c', 'cpp', 'fortran') cpp = meson.get_compiler('cpp') fc = meson.get_compiler('fortran') @@ -17,9 +17,17 @@ if fc.get_id() == 'intel' endif e = executable( + 'cfort', + ['main.c', 'fortran.f'], + dependencies : link_with, +) + +test('C and Fortran', e) + +e2 = executable( 'cppfort', ['main.cpp', 'fortran.f'], dependencies : link_with, ) -test('C++ FORTRAN', e) +test('C++ and Fortran', e2) |