Skip to content

Commit bcc1a6e

Browse files
committed
cmake: ensure we globally match on _GNU_SOURCE
1 parent 43fa1d4 commit bcc1a6e

File tree

4 files changed

+18
-3
lines changed

4 files changed

+18
-3
lines changed

CMake/_Include.cmake

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
include(_Configure)
22
configure_init(${CMAKE_BINARY_DIR}/mem_config.h)
33

4+
add_compile_definitions(${GLOBAL_DEFINITIONS})
5+
# list(TRANSFORM) requires >=3.12
6+
string(REPLACE ";" " -D" GLOBAL_DEFINITION_FLAGS "${GLOBAL_DEFINITIONS}")
7+
set(GLOBAL_DEFINITION_FLAGS -D${GLOBAL_DEFINITION_FLAGS})
8+
49
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
510
include(CTest)
611
endif()
@@ -32,6 +37,7 @@ macro(check_symbol NAME HEADER)
3237
if(${ARGC} GREATER 1)
3338
string(APPEND CMAKE_REQUIRED_FLAGS " ${ARGV2}")
3439
endif()
40+
list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS})
3541
check_symbol_exists(${NAME} ${HEADER} ${HAVE})
3642
cmake_pop_check_state()
3743
endmacro()
@@ -43,6 +49,7 @@ macro(check_cxx_symbol NAME HEADER)
4349
if(${ARGC} GREATER 1)
4450
string(APPEND CMAKE_REQUIRED_FLAGS " ${ARGN}")
4551
endif()
52+
list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS})
4653
check_cxx_symbol_exists(${NAME} ${HEADER} ${HAVE})
4754
cmake_pop_check_state()
4855
endmacro()
@@ -54,6 +61,7 @@ macro(check_include HEADER)
5461
if(${ARGC} GREATER 1)
5562
string(APPEND CMAKE_REQUIRED_FLAGS " ${ARGN}")
5663
endif()
64+
list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS})
5765
check_include_file(${HEADER} ${HAVE})
5866
cmake_pop_check_state()
5967
endmacro()
@@ -65,6 +73,7 @@ macro(check_cxx_include HEADER)
6573
if(${ARGC} GREATER 1)
6674
string(APPEND CMAKE_REQUIRED_FLAGS " ${ARGN}")
6775
endif()
76+
list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS})
6877
check_include_file_cxx(${HEADER} ${HAVE})
6978
cmake_pop_check_state()
7079
endmacro()
@@ -76,18 +85,25 @@ macro(check_type TYPE)
7685
if(${ARGC} GREATER 1)
7786
list(APPEND CMAKE_EXTRA_INCLUDE_FILES ${ARGN})
7887
endif()
88+
list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS})
7989
check_type_size(${TYPE} ${HAVE})
8090
cmake_pop_check_state()
8191
endmacro()
8292
include(CheckCSourceCompiles)
8393
macro(check_c_source SOURCE HAVE)
8494
configure_define(${HAVE})
95+
cmake_push_check_state()
96+
list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS})
8597
check_c_source_compiles("${SOURCE}" ${HAVE})
98+
cmake_pop_check_state()
8699
endmacro()
87100
include(CheckCXXSourceCompiles)
88101
macro(check_cxx_source SOURCE HAVE)
89102
configure_define(${HAVE})
103+
cmake_push_check_state()
104+
list(APPEND CMAKE_REQUIRED_DEFINITIONS ${GLOBAL_DEFINITION_FLAGS})
90105
check_cxx_source_compiles("${SOURCE}" ${HAVE})
106+
cmake_pop_check_state()
91107
endmacro()
92108

93109
include(CheckBacktrace)

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ set(PROJECT_CONTACT "Michael Wallner <mike@php.net>")
1616
set(CXX_STANDARD 11)
1717
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
1818

19+
set(GLOBAL_DEFINITIONS _GNU_SOURCE)
20+
1921
include(CMakeConfig.txt)
2022
include(GNUInstallDirs)
2123
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake")

contrib/bin/memaslap/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
if(ENABLE_MEMASLAP AND CMAKE_USE_PTHREADS_INIT)
2-
add_definitions(-D_GNU_SOURCE)
32

43
include(CheckAtomics)
54

test/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ configure_define_string(LIBMEMCACHED_WITH_SASL_CONF)
1212
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
1313
include(Catch)
1414

15-
add_definitions(-D_GNU_SOURCE)
16-
set(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
1715
check_symbol(pipe2 unistd.h)
1816
check_symbol(SOCK_NONBLOCK sys/socket.h)
1917
check_symbol(SOCK_CLOEXEC sys/socket.h)

0 commit comments

Comments
 (0)