Skip to content

Commit 5016355

Browse files
committed
Simplify installation few steps forward
- Added few more adjustments for PEAR installation - PHP_EXTENSION_DIR simplifications - Few more configuration variables replaced in the configuration header
1 parent 8ed7907 commit 5016355

File tree

5 files changed

+50
-50
lines changed

5 files changed

+50
-50
lines changed

cmake/cmake/Configuration.cmake

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -221,23 +221,6 @@ block()
221221
endif()
222222
endblock()
223223

224-
set(
225-
PHP_FULL_EXTENSION_DIR "" CACHE INTERNAL
226-
"Absolute path for the dynamically loadable extensions."
227-
)
228-
229-
if(IS_ABSOLUTE "${PHP_EXTENSION_DIR}")
230-
set_property(
231-
CACHE PHP_FULL_EXTENSION_DIR
232-
PROPERTY VALUE "${PHP_EXTENSION_DIR}"
233-
)
234-
elseif(PHP_EXTENSION_DIR)
235-
set_property(
236-
CACHE PHP_FULL_EXTENSION_DIR
237-
PROPERTY VALUE "${CMAKE_INSTALL_PREFIX}/${PHP_EXTENSION_DIR}"
238-
)
239-
endif()
240-
241224
################################################################################
242225
# Various global internal configuration.
243226
################################################################################

cmake/ext/phar/CMakeLists.txt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
include(CMakeDependentOption)
22
include(FeatureSummary)
3-
include(PHP/Install)
43

54
option(EXT_PHAR "Enable the phar extension" ON)
65

@@ -185,7 +184,7 @@ if(PHP_EXECUTABLE)
185184
# Install phar.phar file to destination. Here a duplicate phar.phar generation
186185
# step is used to generate it to a destination directory because of the
187186
# install prefix used in shebang (when using 'cmake --install --prefix ...').
188-
php_install(CODE "
187+
install(CODE "
189188
execute_process(
190189
COMMAND
191190
${PHP_EXECUTABLE}
@@ -203,7 +202,7 @@ if(PHP_EXECUTABLE)
203202
-p 0
204203
-s ${CMAKE_CURRENT_SOURCE_DIR}/phar/phar.php
205204
-h sha1
206-
-b \${CMAKE_INSTALL_FULL_BINDIR}/$<TARGET_FILE_NAME:php_cli>
205+
-b $<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_BINDIR},\${CMAKE_INSTALL_PREFIX}>/$<TARGET_FILE_NAME:php_cli>
207206
${CMAKE_CURRENT_SOURCE_DIR}/phar
208207
)
209208
@@ -223,13 +222,13 @@ if(PHP_EXECUTABLE)
223222
file(
224223
COPY_FILE
225224
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/phar.phar
226-
\$ENV{DESTDIR}\${CMAKE_INSTALL_FULL_BINDIR}/${PHP_PROGRAM_PREFIX}phar${PHP_PROGRAM_SUFFIX}.phar
225+
\$ENV{DESTDIR}$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_BINDIR},\${CMAKE_INSTALL_PREFIX}>/${PHP_PROGRAM_PREFIX}phar${PHP_PROGRAM_SUFFIX}.phar
227226
)
228227
229228
file(
230229
CREATE_LINK
231230
${PHP_PROGRAM_PREFIX}phar${PHP_PROGRAM_SUFFIX}.phar
232-
\$ENV{DESTDIR}\${CMAKE_INSTALL_FULL_BINDIR}/${PHP_PROGRAM_PREFIX}phar${PHP_PROGRAM_SUFFIX}
231+
\$ENV{DESTDIR}$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_BINDIR},\${CMAKE_INSTALL_PREFIX}>/${PHP_PROGRAM_PREFIX}phar${PHP_PROGRAM_SUFFIX}
233232
SYMBOLIC
234233
)
235234
")

cmake/main/CMakeLists.txt

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -246,10 +246,27 @@ function(_php_main_create_files)
246246

247247
# TODO: Set configure command string.
248248
set(CONFIGURE_COMMAND "cmake")
249-
# Set the 'include_path' INI directive.
250-
set(INCLUDE_PATH ".:${EXPANDED_PEAR_INSTALLDIR}")
249+
251250
# TODO: Fix the installation prefix when passed via --prefix option.
252-
set(EXPANDED_EXTENSION_DIR "${PHP_FULL_EXTENSION_DIR}")
251+
if(PHP_PEAR_DIR)
252+
set(
253+
EXPANDED_PEAR_INSTALLDIR
254+
"$<PATH:ABSOLUTE_PATH,NORMALIZE,${PHP_PEAR_DIR},${CMAKE_INSTALL_PREFIX}>"
255+
)
256+
endif()
257+
258+
# Set the 'include_path' INI directive.
259+
set(
260+
INCLUDE_PATH
261+
".$<IF:$<PLATFORM_ID:Windows>,;,:>${EXPANDED_PEAR_INSTALLDIR}"
262+
)
263+
264+
# Set the PHP extensions directory.
265+
set(
266+
EXPANDED_EXTENSION_DIR
267+
"$<PATH:ABSOLUTE_PATH,NORMALIZE,${PHP_EXTENSION_DIR},${CMAKE_INSTALL_PREFIX}>"
268+
)
269+
253270
set(EXPANDED_PHP_CONFIG_FILE_PATH "${PHP_FULL_CONFIG_FILE_PATH}")
254271
set(EXPANDED_PHP_CONFIG_FILE_SCAN_DIR "${PHP_FULL_CONFIG_FILE_SCAN_DIR}")
255272
set(EXPANDED_BINDIR "${CMAKE_INSTALL_FULL_BINDIR}")

cmake/main/php_config.cmake.h.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2115,7 +2115,7 @@
21152115
# cmakedefine CONFIGURE_COMMAND "@CONFIGURE_COMMAND@"
21162116

21172117
/* The PEAR installation directory. */
2118-
# define PEAR_INSTALLDIR "@PREFIX@\\pear"
2118+
# define PEAR_INSTALLDIR "@EXPANDED_PEAR_INSTALLDIR@"
21192119

21202120
/* The path to the bin directory. */
21212121
# define PHP_BINDIR "@PREFIX@"
@@ -2133,7 +2133,7 @@
21332133
# define PHP_EXTENSION_DIR "@PREFIX@\\ext"
21342134

21352135
/* The 'include_path' PHP INI directive. */
2136-
# define PHP_INCLUDE_PATH ".;@PREFIX@\\pear"
2136+
# define PHP_INCLUDE_PATH "@INCLUDE_PATH@"
21372137

21382138
/* The path containing system libraries (lib or lib64). */
21392139
# define PHP_LIBDIR "@PREFIX@"

cmake/pear/CMakeLists.txt

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,17 @@ add_feature_info(
1111

1212
if(PHP_PEAR)
1313
set(
14-
PHP_PEAR_DIR ""
14+
PHP_PEAR_DIR "${CMAKE_INSTALL_DATADIR}/pear"
1515
CACHE FILEPATH
16-
"Install PEAR in DIR (PREFIX/lib/php)"
16+
"The PEAR installation directory (default: DATADIR/pear)"
1717
)
1818
# Change from INTERNAL type to show variable on consecutive configuration run.
1919
set_property(CACHE PHP_PEAR_DIR PROPERTY TYPE FILEPATH)
2020
elseif(DEFINED PHP_PEAR_DIR)
2121
# Hide variable.
2222
set_property(CACHE PHP_PEAR_DIR PROPERTY TYPE INTERNAL)
2323
endif()
24+
mark_as_advanced(PHP_PEAR_DIR)
2425

2526
message(CHECK_START "Checking for PEAR")
2627

@@ -44,16 +45,6 @@ if(NOT EXT_XML)
4445
"PEAR requires the xml extension to be enabled. Set EXT_XML to 'ON'.")
4546
endif()
4647

47-
if(NOT PHP_PEAR_DIR)
48-
set(_php_pear_dir "\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/pear")
49-
else()
50-
set(_php_pear_dir "${PHP_PEAR_DIR}")
51-
endif()
52-
53-
# Defined for build-defs.h.
54-
# TODO: INSTALL_PREFIX here cannot be evaluated during the install phase.
55-
set(EXPANDED_PEAR_INSTALLDIR "${_php_pear_dir}" CACHE INTERNAL "PEAR dir")
56-
5748
if(NOT CMAKE_CROSSCOMPILING)
5849
set(PHP_EXECUTABLE "$<TARGET_FILE:php_cli>")
5950
elseif(CMAKE_CROSSCOMPILING AND CMAKE_CROSSCOMPILING_EMULATOR)
@@ -63,7 +54,16 @@ endif()
6354
set(_phpPearInstallerUrl "https://pear.php.net/install-pear-nozlib.phar")
6455

6556
php_install(CODE "
66-
message(STATUS \"Installing PEAR: \$ENV{DESTDIR}${_php_pear_dir}\")
57+
set(
58+
pearInstallDir
59+
\"$<PATH:ABSOLUTE_PATH,NORMALIZE,${PHP_PEAR_DIR},\${CMAKE_INSTALL_PREFIX}>\"
60+
)
61+
set(
62+
binDir
63+
\"$<PATH:ABSOLUTE_PATH,NORMALIZE,${CMAKE_INSTALL_BINDIR},\${CMAKE_INSTALL_PREFIX}>\"
64+
)
65+
66+
message(STATUS \"Installing PEAR to \$ENV{DESTDIR}\${pearInstallDir}\")
6767
6868
if(EXISTS \"${CMAKE_CURRENT_SOURCE_DIR}/install-pear-nozlib.phar\"
6969
AND NOT \"${CMAKE_CURRENT_SOURCE_DIR}\" STREQUAL \"${CMAKE_CURRENT_BINARY_DIR}\"
@@ -89,7 +89,7 @@ php_install(CODE "
8989
execute_process(
9090
COMMAND ${PHP_EXECUTABLE}
9191
-n
92-
${CMAKE_CURRENT_BINARY_DIR}/fetch.php
92+
${CMAKE_CURRENT_SOURCE_DIR}/fetch.php
9393
${_phpPearInstallerUrl}
9494
${CMAKE_CURRENT_BINARY_DIR}/install-pear-nozlib.phar
9595
OUTPUT_VARIABLE output
@@ -110,14 +110,15 @@ php_install(CODE "
110110
set(ENV{INSTALL_ROOT} \"\$ENV{DESTDIR}\")
111111
endif()
112112
113-
# The PEAR's --config option doesn't seem to install the pear.conf into the
114-
# specified directory, but the sysconf can be also bypassed with the
115-
# environment variable.
113+
# The PEAR sysconf directory by default matches the PHP SYSCONFDIR and it
114+
# doesn't seem that any configuration option installs the pear.conf into the
115+
# manually specified directory. But the sysconf can be also bypassed with
116+
# the environment variable for the installation time.
116117
set(ENV{PHP_PEAR_SYSCONF_DIR} \${CMAKE_INSTALL_FULL_SYSCONFDIR})
117118
118119
file(
119120
MAKE_DIRECTORY
120-
\$ENV{DESTDIR}${_php_pear_dir}
121+
\$ENV{DESTDIR}\${pearInstallDir}
121122
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/pear
122123
)
123124
@@ -130,12 +131,12 @@ php_install(CODE "
130131
-dmemory_limit=-1
131132
-ddetect_unicode=0
132133
${CMAKE_CURRENT_BINARY_DIR}/install-pear-nozlib.phar
133-
--dir \"${_php_pear_dir}\"
134-
--bin \"\${CMAKE_INSTALL_FULL_BINDIR}\"
135-
--metadata \"${_php_pear_dir}\"
136-
--data \"${_php_pear_dir}\"
134+
--dir \"\${pearInstallDir}\"
135+
--bin \"\${binDir}\"
136+
--metadata \"\${pearInstallDir}\"
137+
--data \"\${pearInstallDir}\"
137138
--temp \"${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/pear\"
138-
#--php \${CMAKE_INSTALL_FULL_BINDIR}/$<TARGET_FILE_NAME:php_cli>
139+
--php \${binDir}/$<TARGET_FILE_NAME:php_cli>
139140
-dp a${PHP_PROGRAM_PREFIX}
140141
-ds a${PHP_PROGRAM_SUFFIX}
141142
OUTPUT_VARIABLE output

0 commit comments

Comments
 (0)