|
|
|
project('generator link_whole', 'c')
|
|
|
|
|
|
|
|
cc = meson.get_compiler('c')
|
|
|
|
if cc.get_id() == 'msvc'
|
|
|
|
if cc.version().version_compare('<19')
|
|
|
|
error('MESON_SKIP_TEST link_whole only works on VS2015 or newer.')
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
# This just generates foo.h and foo.c with int foo() defined.
|
|
|
|
gen_py = find_program('generator.py')
|
|
|
|
gen = generator(gen_py,
|
|
|
|
output: ['@BASENAME@.h', '@BASENAME@.c'],
|
|
|
|
arguments : ['@INPUT@', '@BUILD_DIR@'])
|
|
|
|
|
|
|
|
# Test 1: link directly into executable
|
|
|
|
srcs = gen.process('meson_test_function.tmpl')
|
|
|
|
exe = executable('exe1', [srcs, 'main.c'], c_args : '-DBUILDING_EMBEDDED')
|
|
|
|
test('test1', exe)
|
|
|
|
|
|
|
|
# Test 2: link into shared library and access from executable
|
|
|
|
srcs = gen.process('meson_test_function.tmpl')
|
|
|
|
shlib2 = shared_library('shlib2', [srcs], c_args : '-DBUILDING_DLL')
|
|
|
|
exe = executable('exe2', 'main.c',
|
|
|
|
link_with : shlib2,
|
|
|
|
include_directories : shlib2.private_dir_include(),
|
|
|
|
)
|
|
|
|
test('test2', exe)
|
|
|
|
|
|
|
|
# Test 3: link into static library and access from executable
|
|
|
|
srcs = gen.process('meson_test_function.tmpl')
|
|
|
|
stlib3 = static_library('stlib3', [srcs], c_args : '-DBUILDING_EMBEDDED')
|
|
|
|
exe = executable('exe3', 'main.c',
|
|
|
|
c_args : '-DBUILDING_EMBEDDED',
|
|
|
|
link_with : stlib3,
|
|
|
|
include_directories : stlib3.private_dir_include(),
|
|
|
|
)
|
|
|
|
test('test3', exe)
|
|
|
|
|
|
|
|
# Test 4: link into static library, link into shared
|
|
|
|
# and access from executable. To make sure static_library
|
|
|
|
# is not dropped use pull_meson_test_function helper.
|
|
|
|
srcs = gen.process('meson_test_function.tmpl')
|
|
|
|
stlib4 = static_library('stlib4', [srcs], c_args : '-DBUILDING_DLL')
|
|
|
|
shlib4 = shared_library('shlib4', 'pull_meson_test_function.c',
|
|
|
|
c_args : '-DBUILDING_DLL',
|
|
|
|
link_with : stlib4,
|
|
|
|
include_directories : stlib4.private_dir_include(),
|
|
|
|
)
|
|
|
|
exe = executable('exe4', 'main.c',
|
|
|
|
link_with : shlib4,
|
|
|
|
include_directories : stlib4.private_dir_include(),
|
|
|
|
)
|
|
|
|
test('test4', exe)
|
|
|
|
|
|
|
|
# Test 5: link into static library, link_whole into shared
|
|
|
|
# and access from executable
|
|
|
|
srcs = gen.process('meson_test_function.tmpl')
|
|
|
|
stlib5 = static_library('stlib5', [srcs], c_args : '-DBUILDING_DLL')
|
|
|
|
shlib5 = shared_library('shlib5', link_whole : stlib5)
|
|
|
|
exe = executable('exe5', 'main.c',
|
|
|
|
link_with : shlib5,
|
|
|
|
include_directories : stlib5.private_dir_include(),
|
|
|
|
)
|
|
|
|
test('test5', exe)
|