diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2017-04-22 01:00:07 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2017-04-22 01:00:07 +0530 |
commit | 35ffb1a7c262acbcd15e532855471b0cb38379b5 (patch) | |
tree | c7589f1214f24537fb254ab7eafb8e803ead8123 | |
parent | 0ebf79ec8b74c8cbb1ea96fff740a8dfd80340b1 (diff) | |
download | meson-35ffb1a7c262acbcd15e532855471b0cb38379b5.zip meson-35ffb1a7c262acbcd15e532855471b0cb38379b5.tar.gz meson-35ffb1a7c262acbcd15e532855471b0cb38379b5.tar.bz2 |
tests/common/146: Also test against external C++ libs
-rw-r--r-- | test cases/common/146 C and CPP link/meson.build | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/test cases/common/146 C and CPP link/meson.build b/test cases/common/146 C and CPP link/meson.build index 6f68bac..583bd54 100644 --- a/test cases/common/146 C and CPP link/meson.build +++ b/test cases/common/146 C and CPP link/meson.build @@ -14,11 +14,45 @@ project('C and C++ static link test', ['c', 'cpp']) -libcppfoo = static_library('cppfoo', ['foo.cpp', 'foo.hpp']) -libcfoo = static_library('cfoo', ['foo.c', 'foo.h']) +libc = static_library('cfoo', ['foo.c', 'foo.h']) + +# Test that linking C libs to external static C++ libs uses the C++ linker +# Since we can't depend on the test system to provide this, we create one +# ourselves at configure time and then 'find' it with cxx.find_library(). +cxx = meson.get_compiler('cpp') + +if cxx.get_id() == 'msvc' + compile_cmd = ['/c', '@INPUT@', '/Fo@OUTPUT@'] + stlib_cmd = ['lib', '/OUT:@OUTPUT@', '@INPUT@'] +else + compile_cmd = ['-c', '-fPIC', '@INPUT@', '-o', '@OUTPUT@'] + stlib_cmd = ['ar', 'csr', '@OUTPUT@', '@INPUT@'] +endif + +foo_cpp_o = configure_file( + input : 'foo.cpp', + output : 'foo.cpp.o', + command : cxx.cmd_array() + compile_cmd) + +configure_file( + input : foo_cpp_o, + output : 'libstcppext.a', + command : stlib_cmd) + +libstcppext = cxx.find_library('stcppext', dirs : meson.current_build_dir()) + +libfooext = shared_library( + 'fooext', + ['foobar.c', 'foobar.h'], + link_with : libc, + dependencies : libstcppext, +) + +# Test that linking C libs to internal static C++ libs uses the C++ linker +libcpp = static_library('cppfoo', ['foo.cpp', 'foo.hpp']) libfoo = shared_library( 'foo', ['foobar.c', 'foobar.h'], - link_with : [libcfoo, libcppfoo], + link_with : [libc, libcpp], ) |