blob: 789f4205e82e1e411fd5f8fe63135afe8630f6a1 [file] [log] [blame]
project(
'test both libraries',
'c',
meson_version: '>= 1.6.0',
)
expected = 0
with_bl = both_libraries(
'with_bl',
files('src/both_libraries.c'),
c_shared_args: ['-DEXPORT'],
)
with_bl_dep = declare_dependency(
link_with: with_bl,
)
if get_option('use_dep')
lib_deps = [with_bl_dep]
lib_links = []
else
lib_deps = []
lib_links = [with_bl]
endif
with_library = library(
'with_library',
files('src/library.c'),
c_shared_args: ['-DEXPORT'],
link_with: lib_links,
dependencies: lib_deps,
)
with_library_dep = declare_dependency(
link_with: with_library,
)
if get_option('default_library') == 'shared'
expected += 1
if get_option('default_both_libraries') in ['shared', 'auto']
expected += 1
endif
elif get_option('default_library') == 'both'
if get_option('default_both_libraries') in ['shared', 'auto']
expected += 2
endif
else
if get_option('default_both_libraries') == 'shared'
expected += 1
endif
endif
if get_option('use_dep')
main_deps = [with_library_dep]
main_links = []
else
main_deps = []
main_links = [with_library]
endif
main = executable(
'main',
files('src/main.c'),
c_args: [f'-DEXPECTED=@expected@'],
link_with: main_links,
dependencies: main_deps,
)
test('test both libs', main)
if get_option('default_library') == 'both' and get_option('default_both_libraries') == 'auto'
# With those options, even if the both_libraries defaults to 'shared',
# 'static' version is used when linking to the static part of another both_libraries.
if get_option('use_dep')
main_static_deps = [with_library_dep.as_static(recursive: true)]
main_static_links = []
else
main_static_deps = []
main_static_links = [with_library.get_static_lib()]
endif
main_static = executable(
'main_static',
files('src/main.c'),
c_args: [f'-DEXPECTED=0'],
link_with: main_static_links,
dependencies: main_static_deps,
)
test('test static', main_static)
if get_option('use_dep')
main_shared_deps = [with_library_dep.as_shared(recursive: true)]
main_shared_links = []
else
main_shared_deps = []
main_shared_links = [with_library.get_shared_lib()]
endif
main_shared = executable(
'main_shared',
files('src/main.c'),
c_args: [f'-DEXPECTED=2'],
link_with: main_shared_links,
dependencies: main_shared_deps,
)
test('test shared', main_shared)
endif
# Test case for https://github.com/mesonbuild/meson/pull/14098
if get_option('default_library') == 'shared'
if get_option('use_dep')
lib_deps = [with_bl_dep.as_static(recursive: true)]
lib_links = []
else
lib_deps = []
lib_links = [with_bl.get_static_lib()]
endif
lib_with_static_dep = library(
'lib_with_static_dep',
files('src/library.c'),
c_shared_args: ['-DEXPORT'],
link_with: lib_links,
dependencies: lib_deps,
)
main_with_static_dep = executable(
'main_with_static_dep',
files('src/main.c'),
c_args: [f'-DEXPECTED=1'],
link_with: lib_with_static_dep,
)
test('test static dep', main_with_static_dep)
endif