summaryrefslogtreecommitdiff
path: root/Utilities/cmexpat
diff options
context:
space:
mode:
authorRaul Tambre <raul@tambre.ee>2022-11-10 22:23:35 +0200
committerBrad King <brad.king@kitware.com>2022-11-10 16:04:38 -0500
commit019af622941ba93470c96cd148d4ca26941aafd0 (patch)
tree3b2d24f32acad6b6470fbddece62d619b3c075bf /Utilities/cmexpat
parent2780c3c683ae3e11807c897dc519a49d8fd2c63f (diff)
downloadcmake-019af622941ba93470c96cd148d4ca26941aafd0.tar.gz
expat: Activate POSIX APIs even without compiler extensions
Compile with the preprocessor definitions necessary for the `arc4random` family so it's available even when compiler extensions are not enabled. Similar things are done in cmbzip2, cmcurl, cmlibarchive, cmliblizma and cmlibuv. This issue surfaced on a nightly bot after glibc 2.36 added arc4random functions. cmlibarchive defines the necessary macro, but also relies on `HAVE_ARC4RANDOM_BUF`. cmlibarchive's check with the necessary macro defined was skipped due to cmexpat running the same check before, but without the macros, and it being cached. This extends commit c7c3e39e4f (Utilities: Activate POSIX APIs even without compiler extensions, 2022-06-02, v3.24.0-rc1~34^2) to cover our build of expat too. Issue: #20454
Diffstat (limited to 'Utilities/cmexpat')
-rw-r--r--Utilities/cmexpat/CMakeLists.txt6
1 files changed, 6 insertions, 0 deletions
diff --git a/Utilities/cmexpat/CMakeLists.txt b/Utilities/cmexpat/CMakeLists.txt
index 9a62b79af9..81dfee3124 100644
--- a/Utilities/cmexpat/CMakeLists.txt
+++ b/Utilities/cmexpat/CMakeLists.txt
@@ -6,6 +6,12 @@ ELSEIF(CMAKE_C_COMPILER_ID STREQUAL "PathScale")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -woffall")
ENDIF()
+# Activate POSIX APIs.
+if(CMAKE_SYSTEM_NAME MATCHES "^(Linux)$")
+ add_definitions(-D_DEFAULT_SOURCE -D_BSD_SOURCE)
+ string(APPEND CMAKE_REQUIRED_DEFINITIONS " -D_DEFAULT_SOURCE -D_BSD_SOURCE")
+endif()
+
include(ConfigureChecks.cmake)
configure_file(expat_config.h.cmake expat_config.h @ONLY)