Skip to content

Commit 2b14a98

Browse files
authored
Merge pull request #497 from apple/revert-492-bsd-free-bsd
Revert "Remove libbsd dependency for Linux"
2 parents d0394bf + 4b87733 commit 2b14a98

File tree

5 files changed

+46
-6
lines changed

5 files changed

+46
-6
lines changed

CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,15 @@ check_function_exists(strlcpy HAVE_STRLCPY)
200200
check_function_exists(sysconf HAVE_SYSCONF)
201201
check_function_exists(arc4random HAVE_ARC4RANDOM)
202202

203+
if(NOT HAVE_STRLCPY AND NOT HAVE_GETPROGNAME)
204+
include(FindPkgConfig)
205+
pkg_check_modules(BSD_OVERLAY libbsd-overlay)
206+
if(BSD_OVERLAY_FOUND)
207+
set(HAVE_STRLCPY 1 CACHE INTERNAL "Have function strlcpy" FORCE)
208+
set(HAVE_GETPROGNAME 1 CACHE INTERNAL "Have function getprogname" FORCE)
209+
endif()
210+
endif()
211+
203212
find_package(Threads REQUIRED)
204213

205214
check_include_files("TargetConditionals.h" HAVE_TARGETCONDITIONALS_H)

src/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,11 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL Android)
205205
PRIVATE
206206
-U_GNU_SOURCE)
207207
endif()
208+
if(BSD_OVERLAY_FOUND)
209+
target_compile_options(dispatch
210+
PRIVATE
211+
${BSD_OVERLAY_CFLAGS})
212+
endif()
208213
if("${CMAKE_C_SIMULATE_ID}" STREQUAL "MSVC")
209214
target_compile_options(dispatch
210215
PRIVATE
@@ -226,6 +231,9 @@ else()
226231
-fblocks
227232
-momit-leaf-frame-pointer)
228233
endif()
234+
if(BSD_OVERLAY_FOUND)
235+
target_link_libraries(dispatch PRIVATE ${BSD_OVERLAY_LDFLAGS})
236+
endif()
229237
if(LibRT_FOUND)
230238
target_link_libraries(dispatch PRIVATE RT::rt)
231239
endif()

src/internal.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -274,10 +274,8 @@ upcast(dispatch_object_t dou)
274274
#include <linux/sysctl.h>
275275
#else
276276
#include <sys/sysctl.h>
277-
#endif /* __ANDROID__ */
278-
#if !defined(__linux__)
279277
#include <sys/queue.h>
280-
#endif
278+
#endif /* __ANDROID__ */
281279
#include <sys/socket.h>
282280
#include <sys/time.h>
283281
#include <sys/mman.h>

src/shims.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
#include "shims/generic_win_stubs.h"
3434
#endif // defined(_WIN32)
3535

36-
#if defined(_WIN32) || defined(__linux__)
36+
#if defined(_WIN32) || defined(__ANDROID__)
3737
#include "shims/generic_sys_queue.h"
3838
#endif
3939

tests/CMakeLists.txt

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ target_include_directories(bsdtests
3131
PUBLIC
3232
# bsdtests.h needs config_ac.h
3333
${PROJECT_BINARY_DIR})
34+
if(BSD_OVERLAY_FOUND)
35+
target_compile_options(bsdtests
36+
PRIVATE
37+
${BSD_OVERLAY_CFLAGS})
38+
endif()
3439
if (WIN32)
3540
target_sources(bsdtests
3641
PRIVATE
@@ -53,13 +58,23 @@ target_include_directories(bsdtestharness
5358
${CMAKE_CURRENT_BINARY_DIR}
5459
${CMAKE_CURRENT_SOURCE_DIR}
5560
${PROJECT_SOURCE_DIR})
61+
if(BSD_OVERLAY_FOUND)
62+
target_compile_options(bsdtestharness
63+
PRIVATE
64+
${BSD_OVERLAY_CFLAGS})
65+
endif()
5666
target_link_libraries(bsdtestharness
5767
PRIVATE
5868
bsdtests
5969
dispatch)
70+
if(BSD_OVERLAY_FOUND)
71+
target_link_libraries(bsdtestharness
72+
PRIVATE
73+
${BSD_OVERLAY_LDFLAGS})
74+
endif()
6075

6176
function(add_unit_test name)
62-
set(options DISABLED_TEST)
77+
set(options DISABLED_TEST;NO_BSD_OVERLAY)
6378
set(single_value_args)
6479
set(multiple_value_args SOURCES)
6580
cmake_parse_arguments(AUT "${options}" "${single_value_args}" "${multiple_value_args}" ${ARGN})
@@ -82,6 +97,11 @@ function(add_unit_test name)
8297
target_include_directories(${name}
8398
SYSTEM BEFORE PRIVATE
8499
"${BlocksRuntime_INCLUDE_DIR}")
100+
if(BSD_OVERLAY_FOUND AND NOT AUT_NO_BSD_OVERLAY)
101+
target_compile_options(${name}
102+
PRIVATE
103+
${BSD_OVERLAY_CFLAGS})
104+
endif()
85105
if("${CMAKE_C_SIMULATE_ID}" STREQUAL "MSVC")
86106
target_compile_options(${name} PRIVATE -Xclang -fblocks)
87107
target_compile_options(${name} PRIVATE /W3 -Wno-deprecated-declarations)
@@ -95,6 +115,11 @@ function(add_unit_test name)
95115
dispatch
96116
Threads::Threads
97117
BlocksRuntime::BlocksRuntime)
118+
if(BSD_OVERLAY_FOUND AND NOT AUT_NO_BSD_OVERLAY)
119+
target_link_libraries(${name}
120+
PRIVATE
121+
${BSD_OVERLAY_LDFLAGS})
122+
endif()
98123
target_link_libraries(${name} PRIVATE bsdtests)
99124
add_test(NAME ${name}
100125
COMMAND bsdtestharness $<TARGET_FILE:${name}>)
@@ -174,7 +199,7 @@ endforeach()
174199
set_tests_properties(dispatch_io_pipe_close PROPERTIES TIMEOUT 5)
175200

176201
# test dispatch API for various C/CXX language variants
177-
add_unit_test(dispatch_c99 SOURCES dispatch_c99.c)
202+
add_unit_test(dispatch_c99 NO_BSD_OVERLAY SOURCES dispatch_c99.c)
178203
add_unit_test(dispatch_plusplus SOURCES dispatch_plusplus.cpp)
179204

180205
# test-specific link options

0 commit comments

Comments
 (0)