11#[=============================================================================[
2- # CheckDlsym
3-
4- Check if `dlsym()` requires a leading underscore in symbol name.
2+ Check if dlsym() requires a leading underscore in symbol name.
53
64Some non-ELF platforms, such as OpenBSD, FreeBSD, NetBSD, Mac OSX (~10.3),
7- needed underscore character (`_`) prefix for symbols , when using ` dlsym()` . This
5+ needed to prefix symbols with underscore character (_) , when using dlsym(). This
86module is obsolete on current platforms.
97
10- ## Cache variables
8+ Result variables:
119
12- * ` DLSYM_NEEDS_UNDERSCORE`
10+ * DLSYM_NEEDS_UNDERSCORE
1311#]=============================================================================]
1412
1513include_guard (GLOBAL )
1614
15+ set (DLSYM_NEEDS_UNDERSCORE FALSE )
16+
17+ if (CMAKE_SYSTEM_NAME STREQUAL "Windows" )
18+ return ()
19+ endif ()
20+
1721# Skip in consecutive configuration phases.
18- if (DEFINED DLSYM_NEEDS_UNDERSCORE)
22+ if (DEFINED PHP_ZEND_HAS_DLSYM_NEEDS_UNDERSCORE)
23+ if (PHP_ZEND_HAS_DLSYM_NEEDS_UNDERSCORE)
24+ set (DLSYM_NEEDS_UNDERSCORE TRUE )
25+ endif ()
26+
1927 return ()
2028endif ()
2129
2230include (CheckIncludeFiles)
2331
2432message (
2533 CHECK_START
26- "Checking whether dlsym() requires a leading underscore in symbol names "
34+ "Checking whether dlsym() needs to prefix symbols with underscore "
2735)
2836
37+ # When cross-compiling without emulator, assume that target platform is recent
38+ # enough so that dlsym doesn't need leading underscores.
2939if (CMAKE_CROSSCOMPILING AND NOT CMAKE_CROSSCOMPILING_EMULATOR)
30- # When cross-compiling without emulator, assume that target platform is recent
31- # enough so that dlsym doesn't need leading underscores.
32- set (DLSYM_NEEDS_UNDERSCORE_EXITCODE 0)
40+ set (PHP_ZEND_HAS_DLSYM_NEEDS_UNDERSCORE_EXITCODE 0)
3341endif ()
3442
3543check_include_files(dlfcn.h HAVE_DLFCN_H)
@@ -40,8 +48,8 @@ block()
4048 endif ()
4149
4250 try_run (
43- DLSYM_NEEDS_UNDERSCORE_EXITCODE
44- DLSYM_NEEDS_UNDERSCORE_COMPILED
51+ PHP_ZEND_HAS_DLSYM_NEEDS_UNDERSCORE_EXITCODE
52+ PHP_ZEND_HAS_DLSYM_NEEDS_UNDERSCORE_COMPILED
4553 SOURCE_FROM_CONTENT src.c [[
4654 #ifdef HAVE_DLFCN_H
4755 # include <dlfcn.h>
@@ -116,16 +124,20 @@ block()
116124endblock()
117125
118126set (
119- DLSYM_NEEDS_UNDERSCORE
127+ PHP_ZEND_HAS_DLSYM_NEEDS_UNDERSCORE
120128 ""
121129 CACHE INTERNAL
122130 "Whether 'dlsym()' requires a leading underscore in symbol names."
123131)
124132
125- if (DLSYM_NEEDS_UNDERSCORE_COMPILED AND DLSYM_NEEDS_UNDERSCORE_EXITCODE EQUAL 2)
126- set_property (CACHE DLSYM_NEEDS_UNDERSCORE PROPERTY VALUE TRUE )
127- message (CHECK_PASS "yes" )
133+ if (
134+ PHP_ZEND_HAS_DLSYM_NEEDS_UNDERSCORE_COMPILED
135+ AND PHP_ZEND_HAS_DLSYM_NEEDS_UNDERSCORE_EXITCODE EQUAL 2
136+ )
137+ set_property (CACHE PHP_ZEND_HAS_DLSYM_NEEDS_UNDERSCORE PROPERTY VALUE TRUE )
138+ set (DLSYM_NEEDS_UNDERSCORE TRUE )
139+ message (CHECK_FAIL "yes" )
128140else ()
129- set_property (CACHE DLSYM_NEEDS_UNDERSCORE PROPERTY VALUE FALSE )
130- message (CHECK_FAIL "no" )
141+ set_property (CACHE PHP_ZEND_HAS_DLSYM_NEEDS_UNDERSCORE PROPERTY VALUE FALSE )
142+ message (CHECK_PASS "no" )
131143endif ()
0 commit comments