@@ -16,10 +16,6 @@ include_guard(GLOBAL)
1616include (CMakeDependentOption)
1717include (FeatureSummary)
1818
19- ################################################################################
20- # Customizable variables.
21- ################################################################################
22-
2319set (PHP_UNAME "" CACHE STRING "Build system uname" )
2420mark_as_advanced (PHP_UNAME)
2521
@@ -64,41 +60,67 @@ if(NOT PHP_LAYOUT STREQUAL "GNU")
6460 # TODO: DATAROOTDIR should be "php" instead of default "share".
6561endif ()
6662
67- set (
68- PHP_EXTENSION_DIR ""
69- CACHE PATH
70- "Default directory for dynamically loadable PHP extensions. If left empty, it\
71- is determined automatically. Can be overridden using the PHP 'extension_dir'\
72- INI directive."
73- )
74- mark_as_advanced (PHP_EXTENSION_DIR)
75-
7663set (
7764 PHP_CONFIG_FILE_SCAN_DIR ""
78- CACHE PATH "The path where to scan for additional INI configuration files"
65+ CACHE PATH "The path where to scan for additional INI configuration files; By\
66+ default it is empty value; Pass it as a relative string inside the install\
67+ prefix, which will be automatically prepended; If given as an absolute path,\
68+ prefix is not prepended."
7969)
8070mark_as_advanced (PHP_CONFIG_FILE_SCAN_DIR)
71+ set (
72+ PHP_FULL_CONFIG_FILE_SCAN_DIR "" CACHE INTERNAL
73+ "Absolute path to the additional INI configuration files directory"
74+ )
75+ if (IS_ABSOLUTE "${PHP_CONFIG_FILE_SCAN_DIR} " )
76+ set_property (
77+ CACHE PHP_FULL_CONFIG_FILE_SCAN_DIR
78+ PROPERTY VALUE "${PHP_CONFIG_FILE_SCAN_DIR} "
79+ )
80+ elseif (PHP_CONFIG_FILE_SCAN_DIR)
81+ set_property (
82+ CACHE PHP_FULL_CONFIG_FILE_SCAN_DIR
83+ PROPERTY VALUE "${CMAKE_INSTALL_PREFIX} /${PHP_CONFIG_FILE_SCAN_DIR} "
84+ )
85+ endif ()
8186
8287if (NOT CMAKE_SYSTEM_NAME STREQUAL "Windows" )
8388 set (
8489 PHP_CONFIG_FILE_PATH ""
85- CACHE FILEPATH "The path in which to look for php.ini."
90+ CACHE FILEPATH "The path in which to look for php.ini; By default it is set\
91+ to sysconfdir (for GNU layout) or libdir (for PHP layout); Pass it as a\
92+ relative string inside the install prefix, which will be automatically\
93+ prepended; If given as an absolute path, prefix is not appended."
8694 )
8795 mark_as_advanced (PHP_CONFIG_FILE_PATH)
88-
8996 if (NOT PHP_CONFIG_FILE_PATH)
9097 if (PHP_LAYOUT STREQUAL "GNU" )
9198 set_property (
9299 CACHE PHP_CONFIG_FILE_PATH
93- PROPERTY VALUE "${CMAKE_INSTALL_FULL_SYSCONFDIR } "
100+ PROPERTY VALUE "${CMAKE_INSTALL_SYSCONFDIR } "
94101 )
95102 else ()
96103 set_property (
97104 CACHE PHP_CONFIG_FILE_PATH
98- PROPERTY VALUE "${CMAKE_INSTALL_FULL_LIBDIR } "
105+ PROPERTY VALUE "${CMAKE_INSTALL_LIBDIR } "
99106 )
100107 endif ()
101108 endif ()
109+ set (
110+ PHP_FULL_CONFIG_FILE_PATH "" CACHE INTERNAL
111+ "Absolute path in which to look for php.ini"
112+ )
113+ if (IS_ABSOLUTE "${PHP_CONFIG_FILE_PATH} " )
114+ set_property (
115+ CACHE PHP_FULL_CONFIG_FILE_PATH
116+ PROPERTY VALUE "${PHP_CONFIG_FILE_PATH} "
117+ )
118+ elseif (PHP_CONFIG_FILE_PATH)
119+ set_property (
120+ CACHE PHP_FULL_CONFIG_FILE_PATH
121+ PROPERTY VALUE "${CMAKE_INSTALL_PREFIX} /${PHP_CONFIG_FILE_PATH} "
122+ )
123+ endif ()
102124endif ()
103125
104126set (PHP_PROGRAM_PREFIX "" CACHE STRING "Prepend prefix to the program names" )
@@ -107,10 +129,6 @@ mark_as_advanced(PHP_PROGRAM_PREFIX)
107129set (PHP_PROGRAM_SUFFIX "" CACHE STRING "Append suffix to the program names" )
108130mark_as_advanced (PHP_PROGRAM_SUFFIX)
109131
110- ################################################################################
111- # General options.
112- ################################################################################
113-
114132option (PHP_RE2C_CGOTO "Enable computed goto GCC extension with re2c" OFF )
115133mark_as_advanced (PHP_RE2C_CGOTO)
116134
@@ -176,6 +194,78 @@ mark_as_advanced(PHP_LIBGCC)
176194option (PHP_CCACHE "Use ccache if available on the system" ON )
177195mark_as_advanced (PHP_CCACHE)
178196
197+ ################################################################################
198+ # Set PHP_EXTENSION_DIR.
199+ ################################################################################
200+
201+ set (
202+ PHP_EXTENSION_DIR ""
203+ CACHE PATH
204+ "Default directory for dynamically loadable PHP extensions. If left empty, it\
205+ is determined automatically. Can be overridden using the PHP 'extension_dir'\
206+ INI directive."
207+ )
208+ mark_as_advanced (PHP_EXTENSION_DIR)
209+
210+ block()
211+ if (NOT PHP_EXTENSION_DIR)
212+ file (READ ${PHP_SOURCE_DIR} /Zend/zend_modules.h content )
213+ string (REGEX MATCH "#define ZEND_MODULE_API_NO ([0-9]*)" _ "${content} " )
214+ set (zend_module_api_no ${CMAKE_MATCH_1} )
215+
216+ set (extension_dir "${CMAKE_INSTALL_LIBDIR} /php" )
217+
218+ if (PHP_LAYOUT STREQUAL "GNU" )
219+ set (extension_dir "${extension_dir} /${zend_module_api_no} " )
220+
221+ # TODO: When apache2handler SAPI enforces the thread safe build (as done
222+ # in the Autotools), the PHP_THREAD_SAFETY variable isn't yet available.
223+ if (PHP_THREAD_SAFETY)
224+ set (extension_dir "${extension_dir} -zts" )
225+ endif ()
226+
227+ if (PHP_DEBUG)
228+ set (extension_dir "${extension_dir} -debug" )
229+ endif ()
230+ else ()
231+ set (extension_dir "${extension_dir} /extensions" )
232+
233+ if (PHP_DEBUG)
234+ set (extension_dir "${extension_dir} /debug" )
235+ else ()
236+ set (extension_dir "${extension_dir} /no-debug" )
237+ endif ()
238+
239+ if (PHP_THREAD_SAFETY)
240+ set (extension_dir "${extension_dir} -zts" )
241+ else ()
242+ set (extension_dir "${extension_dir} -non-zts" )
243+ endif ()
244+
245+ set (extension_dir "${extension_dir} -${zend_module_api_no} " )
246+ endif ()
247+
248+ set_property (CACHE PHP_EXTENSION_DIR PROPERTY VALUE "${extension_dir} " )
249+ endif ()
250+ endblock()
251+
252+ set (
253+ PHP_FULL_EXTENSION_DIR "" CACHE INTERNAL
254+ "Absolute path for the dynamically loadable extensions."
255+ )
256+
257+ if (IS_ABSOLUTE "${PHP_EXTENSION_DIR} " )
258+ set_property (
259+ CACHE PHP_FULL_EXTENSION_DIR
260+ PROPERTY VALUE "${PHP_EXTENSION_DIR} "
261+ )
262+ elseif (PHP_EXTENSION_DIR)
263+ set_property (
264+ CACHE PHP_FULL_EXTENSION_DIR
265+ PROPERTY VALUE "${CMAKE_INSTALL_PREFIX} /${PHP_EXTENSION_DIR} "
266+ )
267+ endif ()
268+
179269################################################################################
180270# Various global internal configuration.
181271################################################################################
@@ -251,50 +341,3 @@ set_package_properties(
251341 URL "https://zlib.net/"
252342 DESCRIPTION "Compression library"
253343)
254-
255- ################################################################################
256- # Adjust configuration.
257- ################################################################################
258-
259- # Set default PHP_EXTENSION_DIR based on the layout used.
260- block()
261- if (NOT PHP_EXTENSION_DIR)
262- file (READ ${PHP_SOURCE_DIR} /Zend/zend_modules.h content )
263- string (REGEX MATCH "#define ZEND_MODULE_API_NO ([0-9]*)" _ "${content} " )
264- set (zend_module_api_no ${CMAKE_MATCH_1} )
265-
266- set (extension_dir "${CMAKE_INSTALL_FULL_LIBDIR} /php" )
267-
268- if (PHP_LAYOUT STREQUAL "GNU" )
269- set (extension_dir "${extension_dir} /${zend_module_api_no} " )
270-
271- # TODO: When apache2handler SAPI enforces the thread safe build (as done
272- # in the Autotools), the PHP_THREAD_SAFETY variable isn't yet available.
273- if (PHP_THREAD_SAFETY)
274- set (extension_dir "${extension_dir} -zts" )
275- endif ()
276-
277- if (PHP_DEBUG)
278- set (extension_dir "${extension_dir} -debug" )
279- endif ()
280- else ()
281- set (extension_dir "${extension_dir} /extensions" )
282-
283- if (PHP_DEBUG)
284- set (extension_dir "${extension_dir} /debug" )
285- else ()
286- set (extension_dir "${extension_dir} /no-debug" )
287- endif ()
288-
289- if (PHP_THREAD_SAFETY)
290- set (extension_dir "${extension_dir} -zts" )
291- else ()
292- set (extension_dir "${extension_dir} -non-zts" )
293- endif ()
294-
295- set (extension_dir "${extension_dir} -${zend_module_api_no} " )
296- endif ()
297-
298- set_property (CACHE PHP_EXTENSION_DIR PROPERTY VALUE "${extension_dir} " )
299- endif ()
300- endblock()
0 commit comments