Skip to content

Commit a8495c3

Browse files
committed
Remove PHP_LAYOUT and adjust installation
- The PHP_LAYOUT to match the PHP Autotools --with-layout configure option is a redundant configuration to simplify the installation a bit further. - Added program prefixes and suffixes - Fixed php_configure_file for phpize and php_config scripts - Move fuzzer SAPI few steps forward
1 parent 7f631bb commit a8495c3

File tree

11 files changed

+63
-71
lines changed

11 files changed

+63
-71
lines changed

cmake/cmake/Configuration.cmake

Lines changed: 17 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -48,18 +48,6 @@ mark_as_advanced(PHP_BUILD_COMPILER)
4848
set(PHP_BUILD_PROVIDER "" CACHE STRING "Build provider displayed in phpinfo")
4949
mark_as_advanced(PHP_BUILD_PROVIDER)
5050

51-
set(
52-
PHP_LAYOUT "PHP"
53-
CACHE STRING
54-
"Set how installed files will be laid out. Type can be PHP (default) or GNU"
55-
)
56-
set_property(CACHE PHP_LAYOUT PROPERTY STRINGS "GNU" "PHP")
57-
mark_as_advanced(PHP_LAYOUT)
58-
59-
if(NOT PHP_LAYOUT STREQUAL "GNU")
60-
# TODO: DATAROOTDIR should be "php" instead of default "share".
61-
endif()
62-
6351
set(
6452
PHP_INCLUDE_PREFIX "php"
6553
CACHE STRING
@@ -98,24 +86,17 @@ endif()
9886
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Windows")
9987
set(
10088
PHP_CONFIG_FILE_PATH ""
101-
CACHE FILEPATH "The path in which to look for php.ini; By default it is set\
102-
to sysconfdir (for GNU layout) or libdir (for PHP layout); Pass it as a\
103-
relative string inside the install prefix, which will be automatically\
104-
prepended; If given as an absolute path, prefix is not appended."
89+
CACHE FILEPATH "The path in which to look for php.ini; By default, it is\
90+
set to SYSCONFDIR (etc); Relative path gets the CMAKE_INSTALL_PREFIX\
91+
automatically prepended; If given as an absolute path, install prefix is\
92+
not appended."
10593
)
10694
mark_as_advanced(PHP_CONFIG_FILE_PATH)
10795
if(NOT PHP_CONFIG_FILE_PATH)
108-
if(PHP_LAYOUT STREQUAL "GNU")
109-
set_property(
110-
CACHE PHP_CONFIG_FILE_PATH
111-
PROPERTY VALUE "${CMAKE_INSTALL_SYSCONFDIR}"
112-
)
113-
else()
114-
set_property(
115-
CACHE PHP_CONFIG_FILE_PATH
116-
PROPERTY VALUE "${CMAKE_INSTALL_LIBDIR}"
117-
)
118-
endif()
96+
set_property(
97+
CACHE PHP_CONFIG_FILE_PATH
98+
PROPERTY VALUE "${CMAKE_INSTALL_SYSCONFDIR}"
99+
)
119100
endif()
120101
set(
121102
PHP_FULL_CONFIG_FILE_PATH "" CACHE INTERNAL
@@ -226,16 +207,15 @@ block()
226207

227208
set(extension_dir "${CMAKE_INSTALL_LIBDIR}/php")
228209

229-
if(PHP_LAYOUT STREQUAL "GNU")
230-
set(extension_dir "${extension_dir}/${zend_module_api_no}")
231-
set(extension_dir "${extension_dir}$<$<BOOL:$<TARGET_PROPERTY:php_configuration,PHP_THREAD_SAFETY>>:-zts>")
232-
set(extension_dir "${extension_dir}$<IF:$<CONFIG:Debug,DebugAssertions>,-debug,>")
233-
else()
234-
set(extension_dir "${extension_dir}/extensions")
235-
set(extension_dir "${extension_dir}/$<IF:$<CONFIG:Debug,DebugAssertions>,debug,no-debug>")
236-
set(extension_dir "${extension_dir}$<IF:$<BOOL:$<TARGET_PROPERTY:php_configuration,PHP_THREAD_SAFETY>>,-zts,-non-zts>")
237-
set(extension_dir "${extension_dir}-${zend_module_api_no}")
238-
endif()
210+
# This resembles the PHP Autotools --with-layout=GNU:
211+
set(extension_dir "${extension_dir}/${zend_module_api_no}")
212+
set(extension_dir "${extension_dir}$<$<BOOL:$<TARGET_PROPERTY:php_configuration,PHP_THREAD_SAFETY>>:-zts>")
213+
set(extension_dir "${extension_dir}$<$<CONFIG:Debug,DebugAssertions>:-debug>")
214+
# This would be the PHP Autotools --with-layout=PHP (default):
215+
# set(extension_dir "${extension_dir}/extensions")
216+
# set(extension_dir "${extension_dir}/$<IF:$<CONFIG:Debug,DebugAssertions>,debug,no-debug>")
217+
# set(extension_dir "${extension_dir}$<IF:$<BOOL:$<TARGET_PROPERTY:php_configuration,PHP_THREAD_SAFETY>>,-zts,-non-zts>")
218+
# set(extension_dir "${extension_dir}-${zend_module_api_no}")
239219

240220
set_property(CACHE PHP_EXTENSION_DIR PROPERTY VALUE "${extension_dir}")
241221
endif()

cmake/cmake/modules/PHP/ConfigureFile.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ function(php_configure_file)
174174
cmake_path(GET ___phpConfigureFileOutput FILENAME filename)
175175
set(
176176
___phpConfigureFileOutputTemporary
177-
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${filename}.cmake.in
177+
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/__phpConfigureFile_${filename}.cmake.in
178178
)
179179

180180
if(parsed_VARIABLES)

cmake/cmake/modules/Packages/LibXml2.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ See: https://cmake.org/cmake/help/latest/module/FindLibXml2.html
99
1010
The `FetchContent` CMake module does things differently compared to the
1111
`find_package()` flow:
12-
* By default it uses `QUIET` in its `find_package()` call when calling the
12+
* By default, it uses `QUIET` in its `find_package()` call when calling the
1313
`FetchContent_MakeAvailable()`;
1414
* When using `FeatureSummary`, dependencies must be moved manually to
1515
`PACKAGES_FOUND` from the `PACKAGES_NOT_FOUND` global property;

cmake/ext/phar/CMakeLists.txt

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ if(PHP_EXECUTABLE)
196196
-d phar.readonly=0
197197
${CMAKE_CURRENT_BINARY_DIR}/phar.php
198198
pack
199-
-f \${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/phar.phar
199+
-f ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${PHP_PROGRAM_PREFIX}phar${PHP_PROGRAM_SUFFIX}.phar
200200
-a pharcommand
201201
-c auto
202202
-p 0
@@ -207,8 +207,9 @@ if(PHP_EXECUTABLE)
207207
)
208208
209209
file(
210-
CHMOD
211-
\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/phar.phar
210+
INSTALL
211+
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${PHP_PROGRAM_PREFIX}phar${PHP_PROGRAM_SUFFIX}.phar
212+
DESTINATION \${DESTDIR}\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}
212213
FILE_PERMISSIONS
213214
OWNER_READ
214215
OWNER_WRITE
@@ -221,8 +222,8 @@ if(PHP_EXECUTABLE)
221222
222223
file(
223224
CREATE_LINK
224-
phar.phar
225-
\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/phar
225+
${PHP_PROGRAM_PREFIX}phar${PHP_PROGRAM_SUFFIX}.phar
226+
\${DESTDIR}\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/phar
226227
SYMBOLIC
227228
)
228229
")
@@ -233,8 +234,13 @@ configure_file(phar.1.in phar.1 @ONLY)
233234
configure_file(phar.phar.1.in phar.phar.1 @ONLY)
234235

235236
install(
236-
FILES
237-
${CMAKE_CURRENT_BINARY_DIR}/phar.1
238-
${CMAKE_CURRENT_BINARY_DIR}/phar.phar.1
237+
FILES ${CMAKE_CURRENT_BINARY_DIR}/phar.1
238+
RENAME ${PHP_PROGRAM_PREFIX}phar${PHP_PROGRAM_SUFFIX}.1
239+
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
240+
)
241+
242+
install(
243+
FILES ${CMAKE_CURRENT_BINARY_DIR}/phar.phar.1
244+
RENAME ${PHP_PROGRAM_PREFIX}phar${PHP_PROGRAM_SUFFIX}.phar.1
239245
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
240246
)

cmake/pear/CMakeLists.txt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,7 @@ if(NOT EXT_XML)
4444
endif()
4545

4646
if(NOT PHP_PEAR_DIR)
47-
if(PHP_LAYOUT STREQUAL "GNU")
48-
set(_php_pear_dir "\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/pear")
49-
else()
50-
set(_php_pear_dir "\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/php")
51-
endif()
47+
set(_php_pear_dir "\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/pear")
5248
else()
5349
set(_php_pear_dir "${PHP_PEAR_DIR}")
5450
endif()

cmake/sapi/cgi/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ target_link_options(
3939
set_target_properties(
4040
php_cgi
4141
PROPERTIES
42-
OUTPUT_NAME php-cgi
42+
OUTPUT_NAME ${PHP_PROGRAM_PREFIX}php-cgi${PHP_PROGRAM_SUFFIX}
4343
# TODO: Check if there's a better solution here:
4444
ENABLE_EXPORTS TRUE
4545
)
@@ -67,7 +67,7 @@ install(
6767
)
6868

6969
install(
70-
FILES
71-
${CMAKE_CURRENT_BINARY_DIR}/php-cgi.1
70+
FILES ${CMAKE_CURRENT_BINARY_DIR}/php-cgi.1
71+
RENAME ${PHP_PROGRAM_PREFIX}php-cgi${PHP_PROGRAM_SUFFIX}.1
7272
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
7373
)

cmake/sapi/cli/CMakeLists.txt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ target_link_options(
9292
set_target_properties(
9393
php_cli
9494
PROPERTIES
95-
OUTPUT_NAME php
95+
OUTPUT_NAME ${PHP_PROGRAM_PREFIX}php${PHP_PROGRAM_SUFFIX}
9696
# TODO: Check if there's a better solution here:
9797
ENABLE_EXPORTS TRUE
9898
)
@@ -113,7 +113,11 @@ if(SAPI_CLI_WIN_NO_CONSOLE)
113113
ps_title.c
114114
)
115115

116-
set_target_properties(php_cli_win_no_console PROPERTIES OUTPUT_NAME php-win)
116+
set_target_properties(
117+
php_cli_win_no_console
118+
PROPERTIES
119+
OUTPUT_NAME ${PHP_PROGRAM_PREFIX}php-win${PHP_PROGRAM_SUFFIX}
120+
)
117121

118122
target_compile_definitions(
119123
php_cli_win_no_console
@@ -150,7 +154,7 @@ install(
150154
)
151155

152156
install(
153-
FILES
154-
${CMAKE_CURRENT_BINARY_DIR}/php.1
157+
FILES ${CMAKE_CURRENT_BINARY_DIR}/php.1
158+
RENAME ${PHP_PROGRAM_PREFIX}php${PHP_PROGRAM_SUFFIX}.1
155159
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
156160
)

cmake/sapi/fpm/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ target_link_libraries(php_fpm PRIVATE PHP::main)
157157
set_target_properties(
158158
php_fpm
159159
PROPERTIES
160-
OUTPUT_NAME php-fpm
160+
OUTPUT_NAME ${PHP_PROGRAM_PREFIX}php-fpm${PHP_PROGRAM_SUFFIX}
161161
# TODO: Check if there's a better solution here:
162162
ENABLE_EXPORTS TRUE
163163
)
@@ -471,7 +471,6 @@ php_configure_file(
471471
EXPANDED_SYSCONFDIR "$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_SYSCONFDIR},$<INSTALL_PREFIX>>"
472472
)
473473

474-
# TODO: Add program file prefix and suffix.
475474
install(TARGETS php_fpm DESTINATION ${CMAKE_INSTALL_SBINDIR})
476475

477476
# Create log and run directories on installation.

cmake/sapi/fuzzer/CMakeLists.txt

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ if(PHP_THREAD_SAFETY)
5050
)
5151
endif()
5252

53+
add_executable(php_fuzzer)
54+
5355
if(LIB_FUZZING_ENGINE OR "$ENV{LIB_FUZZING_ENGINE}")
5456
if(LIB_FUZZING_ENGINE)
5557
set(libFuzzingEngine "${LIB_FUZZING_ENGINE}")
@@ -108,7 +110,14 @@ else()
108110
)
109111
endif()
110112

111-
#add_executable(php_fuzzer)
112-
#set_target_properties(php_fuzzer PROPERTIES OUTPUT_NAME fuzzer)
113-
#target_link_libraries(php_fuzzer PRIVATE PHP::main)
114-
#install(TARGETS php_fuzzer DESTINATION ${CMAKE_INSTALL_BINDIR})
113+
target_sources(php_fuzzer PRIVATE fuzzer-sapi.c)
114+
115+
set_target_properties(
116+
php_fuzzer
117+
PROPERTIES
118+
OUTPUT_NAME ${PHP_PROGRAM_PREFIX}fuzzer${PHP_PROGRAM_SUFFIX}
119+
)
120+
121+
target_link_libraries(php_fuzzer PRIVATE PHP::main)
122+
123+
install(TARGETS php_fuzzer RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})

cmake/sapi/litespeed/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,11 @@ target_link_libraries(php_litespeed PRIVATE PHP::main)
3131
set_target_properties(
3232
php_litespeed
3333
PROPERTIES
34-
OUTPUT_NAME lsphp
34+
OUTPUT_NAME ${PHP_PROGRAM_PREFIX}lsphp${PHP_PROGRAM_SUFFIX}
3535
# TODO: Check if there's a better solution here.
3636
ENABLE_EXPORTS TRUE
3737
)
3838

39-
# TODO: Add prefix and suffix to installed executable file.
4039
install(
4140
TARGETS php_litespeed
4241
RUNTIME

0 commit comments

Comments
 (0)