tests/common/146: Also test against external C++ libs
This commit is contained in:
parent
0ebf79ec8b
commit
35ffb1a7c2
|
@ -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],
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue