meson: fix build for FreeBSD/clang compatibility

Remove GCC-specific static link args (-static, -static-libgcc,
-static-libstdc++) that fail under clang. Add threads_dep via
dependency('threads') to all targets so Boost ASIO's pthread
usage links correctly on FreeBSD where clang does not pull it in
implicitly. Linux/GCC builds are unaffected.
This commit is contained in:
waffle2k
2026-05-06 23:50:54 -07:00
parent 88a8ae2a59
commit df160fafca
+7 -5
View File
@@ -6,30 +6,32 @@ project('finger', 'cpp',
# Find Boost dependencies - prefer static libraries # Find Boost dependencies - prefer static libraries
boost_dep = dependency('boost', modules : ['system'], static : true) boost_dep = dependency('boost', modules : ['system'], static : true)
# pthreads — required by Boost ASIO; clang on FreeBSD does not link it implicitly
threads_dep = dependency('threads')
# Find Google Test and Google Mock dependencies # Find Google Test and Google Mock dependencies
gtest_dep = dependency('gtest', main : true, required : true) gtest_dep = dependency('gtest', main : true, required : true)
gmock_dep = dependency('gmock', main : true, required : true) gmock_dep = dependency('gmock', main : true, required : true)
executable('finger', executable('finger',
'main.cpp','handler.cpp', 'main.cpp','handler.cpp',
dependencies : [boost_dep], dependencies : [boost_dep, threads_dep],
link_args : ['-static', '-static-libgcc', '-static-libstdc++'],
install : true) install : true)
# Test executable # Test executable
test_exe = executable('test_handler', test_exe = executable('test_handler',
'test_handler.cpp', 'handler.cpp', 'test_handler.cpp', 'handler.cpp',
dependencies : [boost_dep, gtest_dep, gmock_dep]) dependencies : [boost_dep, threads_dep, gtest_dep, gmock_dep])
# Mock test executable # Mock test executable
test_mock_exe = executable('test_handler_mock', test_mock_exe = executable('test_handler_mock',
'test_handler_mock.cpp', 'handler.cpp', 'test_handler_mock.cpp', 'handler.cpp',
dependencies : [boost_dep, gtest_dep, gmock_dep]) dependencies : [boost_dep, threads_dep, gtest_dep, gmock_dep])
# Real filesystem test executable # Real filesystem test executable
test_real_fs_exe = executable('test_handler_real_filesystem', test_real_fs_exe = executable('test_handler_real_filesystem',
'test_handler_real_filesystem.cpp', 'handler.cpp', 'test_handler_real_filesystem.cpp', 'handler.cpp',
dependencies : [boost_dep, gtest_dep, gmock_dep]) dependencies : [boost_dep, threads_dep, gtest_dep, gmock_dep])
# Register the tests # Register the tests
test('handler_tests', test_exe) test('handler_tests', test_exe)