@@ -44,6 +44,7 @@ target_sources(
4444 streams/xp_socket.c
4545 strlcat.c
4646 strlcpy.c
47+ ${PHP_BINARY_DIR} /main/build -defs.h
4748 PUBLIC
4849 FILE_SET HEADERS
4950 FILES
@@ -247,7 +248,10 @@ function(_php_main_create_files)
247248 # TODO: Set configure command string.
248249 set (CONFIGURE_COMMAND "cmake" )
249250
250- # TODO: Fix the installation prefix when passed via --prefix option.
251+ # TODO: Fix the installation prefixes below when passed via the '--prefix'
252+ # option of the 'cmake --install ...' command. PHP is at the time of writing
253+ # not a relocatable program.
254+
251255 if (PHP_PEAR_DIR)
252256 set (
253257 EXPANDED_PEAR_INSTALLDIR
@@ -267,16 +271,47 @@ function(_php_main_create_files)
267271 "$<PATH:ABSOLUTE_PATH,NORMALIZE,${PHP_EXTENSION_DIR} ,${CMAKE_INSTALL_PREFIX} >"
268272 )
269273
270- set (EXPANDED_PHP_CONFIG_FILE_PATH "${PHP_FULL_CONFIG_FILE_PATH} " )
271- set (EXPANDED_PHP_CONFIG_FILE_SCAN_DIR "${PHP_FULL_CONFIG_FILE_SCAN_DIR} " )
272- set (EXPANDED_BINDIR "${CMAKE_INSTALL_FULL_BINDIR} " )
273- set (EXPANDED_SBINDIR "${CMAKE_INSTALL_FULL_SBINDIR} " )
274- set (EXPANDED_MANDIR "${CMAKE_INSTALL_FULL_MANDIR} " )
275- set (EXPANDED_LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR} " )
276- set (EXPANDED_DATADIR "${CMAKE_INSTALL_FULL_DATADIR} " )
274+ # Set the directory where php.ini is looked for.
275+ set (
276+ EXPANDED_PHP_CONFIG_FILE_PATH
277+ "$<PATH:ABSOLUTE_PATH,NORMALIZE,${PHP_CONFIG_FILE_PATH} ,${CMAKE_INSTALL_PREFIX} >"
278+ )
279+
280+ # Set the directory where additional ini files are searched for.
281+ set (
282+ EXPANDED_PHP_CONFIG_FILE_SCAN_DIR
283+ "$<PATH:ABSOLUTE_PATH,NORMALIZE,${PHP_CONFIG_FILE_SCAN_DIR} ,${CMAKE_INSTALL_PREFIX} >"
284+ )
285+
286+ set (
287+ EXPANDED_BINDIR
288+ "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_BINDIR} ,${CMAKE_INSTALL_PREFIX} >"
289+ )
290+
291+ set (
292+ EXPANDED_SBINDIR
293+ "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_SBINDIR} ,${CMAKE_INSTALL_PREFIX} >"
294+ )
295+
296+ set (
297+ EXPANDED_MANDIR
298+ "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_MANDIR} ,${CMAKE_INSTALL_PREFIX} >"
299+ )
300+
301+ set (
302+ EXPANDED_LIBDIR
303+ "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_LIBDIR} ,${CMAKE_INSTALL_PREFIX} >"
304+ )
305+
306+ set (
307+ EXPANDED_DATADIR
308+ "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_DATADIR} ,${CMAKE_INSTALL_PREFIX} >"
309+ )
310+
277311 set (EXPANDED_SYSCONFDIR "${CMAKE_INSTALL_FULL_SYSCONFDIR} " )
278312 set (EXPANDED_LOCALSTATEDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR} " )
279313 set (prefix "${CMAKE_INSTALL_PREFIX} " )
314+
280315 # Set shared library object extension.
281316 string (REPLACE "." "" SHLIB_DL_SUFFIX_NAME ${CMAKE_SHARED_MODULE_SUFFIX} )
282317
@@ -306,6 +341,40 @@ function(_php_main_create_files)
306341 CONTENT "${content} "
307342 )
308343
344+ #[[
345+ TODO: This enables regenerating the build-defs.h file on the install step
346+ when using different install prefix at the 'cmake --install ... --prefix'
347+ phase. Needs to be adjusted further to rebuild PHP at such case.
348+ include(PHP/ConfigureFile)
349+ php_configure_file(
350+ ${PHP_SOURCE_DIR}/main/build-defs.h.in
351+ ${PHP_BINARY_DIR}/main/build-defs.h
352+ VARIABLES
353+ CONFIGURE_COMMAND "cmake"
354+ ODBC_CFLAGS "${ODBC_CFLAGS}"
355+ ODBC_LFLAGS "${ODBC_LFLAGS}"
356+ ODBC_LIBS "${ODBC_LIBS}"
357+ ODBC_TYPE "${ODBC_TYPE}"
358+ PROG_SENDMAIL "${PROG_SENDMAIL}"
359+ EXPANDED_PEAR_INSTALLDIR "${EXPANDED_PEAR_INSTALLDIR}"
360+ INCLUDE_PATH "${INCLUDE_PATH}"
361+ EXPANDED_EXTENSION_DIR "${EXPANDED_EXTENSION_DIR}"
362+ prefix "$<INSTALL_PREFIX>"
363+ EXPANDED_BINDIR "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_BINDIR},$<INSTALL_PREFIX>>"
364+ EXPANDED_SBINDIR "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_SBINDIR},$<INSTALL_PREFIX>>"
365+ EXPANDED_MANDIR "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_MANDIR},$<INSTALL_PREFIX>>"
366+ EXPANDED_LIBDIR "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_LIBDIR},$<INSTALL_PREFIX>>"
367+ EXPANDED_DATADIR "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_DATADIR},$<INSTALL_PREFIX>>"
368+ EXPANDED_SYSCONFDIR "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_SYSCONFDIR},$<INSTALL_PREFIX>>"
369+ EXPANDED_LOCALSTATEDIR "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_LOCALSTATEDIR},$<INSTALL_PREFIX>>"
370+ EXPANDED_PHP_CONFIG_FILE_PATH "$<PATH:ABSOLUTE_PATH,NORMALIZE,${PHP_CONFIG_FILE_PATH},$<INSTALL_PREFIX>>"
371+ EXPANDED_PHP_CONFIG_FILE_SCAN_DIR "$<PATH:ABSOLUTE_PATH,NORMALIZE,${PHP_CONFIG_FILE_SCAN_DIR},$<INSTALL_PREFIX>>"
372+ SHLIB_DL_SUFFIX_NAME "${SHLIB_DL_SUFFIX_NAME}"
373+ )
374+ add_custom_target(php_main_build_defs_h DEPENDS ${PHP_BINARY_DIR}/main/build-defs.h)
375+ add_dependencies(php_main php_main_build_defs_h)
376+ #]]
377+
309378 set (HAVE_BUILD_DEFS_H 1)
310379 set (PHP_CONFIG_H_WINDOWS 0)
311380 set (file php_config.h)
0 commit comments