Skip to content

Commit ce16d51

Browse files
committed
Merge branch 'PHP-8.3' into PHP-8.4
2 parents df752c6 + 422b7bc commit ce16d51

File tree

3 files changed

+42
-53
lines changed

3 files changed

+42
-53
lines changed

cmake/ext/CMakeLists.txt

Lines changed: 36 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -80,23 +80,49 @@ foreach(extension IN LISTS extensions)
8080

8181
add_dependencies(php_${extension} Zend::Zend)
8282

83-
# Add extension's PUBLIC/INTERFACE compile properties to configuration.
84-
# Cleaner COMPILE_ONLY generator expression is available in CMake >= 3.27.
85-
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.27)
86-
target_link_libraries(
83+
# Add extension's transitive compile and link properties to configuration.
84+
# The INTERFACE_SOURCES are propagated separately only to PHP::PHP.
85+
# See: https://cmake.org/cmake/help/latest/manual/cmake-buildsystem.7.html
86+
# TODO: Should PHP_CLI extensions pass properties only to PHP_CLI SAPIs?
87+
get_target_property(type php_${extension} TYPE)
88+
if(NOT type MATCHES "^(MODULE|SHARED)_LIBRARY$")
89+
target_compile_definitions(
90+
php_configuration
91+
INTERFACE
92+
$<TARGET_PROPERTY:PHP::${extension},INTERFACE_COMPILE_DEFINITIONS>
93+
)
94+
95+
target_compile_options(
96+
php_configuration
97+
INTERFACE
98+
$<TARGET_PROPERTY:PHP::${extension},INTERFACE_COMPILE_OPTIONS>
99+
)
100+
101+
target_compile_features(
87102
php_configuration
88103
INTERFACE
89-
$<COMPILE_ONLY:PHP::${extension}>
104+
$<TARGET_PROPERTY:PHP::${extension},INTERFACE_COMPILE_FEATURES>
90105
)
91-
else()
92-
# TODO: Fix this better. Either require 3.27, or limit/adjust compile
93-
# properties propagated globally. Also, shared extensions shouldn't
94-
# propagate globally.
95-
# https://cmake.org/cmake/help/latest/manual/cmake-buildsystem.7.html#id36
106+
96107
target_include_directories(
97108
php_configuration
98109
INTERFACE
99110
$<TARGET_PROPERTY:PHP::${extension},INTERFACE_INCLUDE_DIRECTORIES>
111+
$<TARGET_PROPERTY:PHP::${extension},INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>
112+
)
113+
114+
target_link_libraries(
115+
php_extensions
116+
INTERFACE
117+
$<IF:$<BOOL:$<TARGET_PROPERTY:PHP::${extension},PHP_CLI>>,$<$<BOOL:$<TARGET_PROPERTY:PHP_CLI>>:$<LINK_ONLY:PHP::${extension}>>,$<LINK_ONLY:PHP::${extension}>>
118+
)
119+
120+
target_sources(
121+
php_extensions
122+
INTERFACE
123+
$<IF:$<BOOL:$<TARGET_PROPERTY:PHP::${extension},PHP_CLI>>,$<$<BOOL:$<TARGET_PROPERTY:PHP_CLI>>:$<TARGET_OBJECTS:PHP::${extension}>>,$<TARGET_OBJECTS:PHP::${extension}>>
124+
125+
$<IF:$<BOOL:$<TARGET_PROPERTY:PHP::${extension},PHP_CLI>>,$<$<BOOL:$<TARGET_PROPERTY:PHP_CLI>>:$<TARGET_PROPERTY:PHP::${extension},INTERFACE_SOURCES>>,$<TARGET_PROPERTY:PHP::${extension},INTERFACE_SOURCES>>
100126
)
101127
endif()
102128

@@ -109,44 +135,6 @@ foreach(extension IN LISTS extensions)
109135
$<TARGET_PROPERTY:php_configuration,INTERFACE_COMPILE_OPTIONS>
110136
)
111137

112-
get_target_property(type php_${extension} TYPE)
113-
get_target_property(isCli php_${extension} PHP_CLI)
114-
if(NOT type MATCHES "^(MODULE|SHARED)_LIBRARY$")
115-
# If extension is STATIC library link as whole archive, otherwise link
116-
# normally. CLI-based extensions are linked only to CLI-based SAPIs.
117-
if(NOT isCli)
118-
target_link_libraries(
119-
php_extensions
120-
INTERFACE
121-
$<IF:$<STREQUAL:$<TARGET_PROPERTY:PHP::${extension},TYPE>,STATIC_LIBRARY>,$<LINK_LIBRARY:WHOLE_ARCHIVE,PHP::${extension}>,PHP::${extension}>
122-
)
123-
124-
target_sources(
125-
php_extensions
126-
INTERFACE
127-
# If extension is OBJECT library:
128-
$<$<STREQUAL:$<TARGET_PROPERTY:PHP::${extension},TYPE>,OBJECT_LIBRARY>:$<TARGET_OBJECTS:PHP::${extension}>>
129-
# If extension and linked target (SAPI) are both STATIC libraries:
130-
$<$<AND:$<STREQUAL:$<TARGET_PROPERTY:TYPE>,STATIC_LIBRARY>,$<STREQUAL:$<TARGET_PROPERTY:PHP::${extension},TYPE>,STATIC_LIBRARY>>:$<TARGET_OBJECTS:PHP::${extension}>>
131-
)
132-
else()
133-
target_link_libraries(
134-
php_extensions
135-
INTERFACE
136-
$<$<BOOL:$<TARGET_PROPERTY:PHP_CLI>>:$<IF:$<STREQUAL:$<TARGET_PROPERTY:PHP::${extension},TYPE>,STATIC_LIBRARY>,$<LINK_LIBRARY:WHOLE_ARCHIVE,PHP::${extension}>,PHP::${extension}>>
137-
)
138-
139-
target_sources(
140-
php_extensions
141-
INTERFACE
142-
# If extension is OBJECT library:
143-
$<$<BOOL:$<TARGET_PROPERTY:PHP_CLI>>:$<$<STREQUAL:$<TARGET_PROPERTY:PHP::${extension},TYPE>,OBJECT_LIBRARY>:$<TARGET_OBJECTS:PHP::${extension}>>>
144-
# If extension and linked target (SAPI) are both STATIC libraries:
145-
$<$<BOOL:$<TARGET_PROPERTY:PHP_CLI>>:$<$<AND:$<STREQUAL:$<TARGET_PROPERTY:TYPE>,STATIC_LIBRARY>,$<STREQUAL:$<TARGET_PROPERTY:PHP::${extension},TYPE>,STATIC_LIBRARY>>:$<TARGET_OBJECTS:PHP::${extension}>>>
146-
)
147-
endif()
148-
endif()
149-
150138
message(CHECK_PASS "enabled")
151139
list(POP_BACK CMAKE_MESSAGE_CONTEXT)
152140
endforeach()

cmake/ext/standard/CMakeLists.txt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -574,8 +574,12 @@ target_link_libraries(
574574
PRIVATE $<TARGET_PROPERTY:php_standard,LINK_LIBRARIES>
575575
)
576576

577-
add_dependencies(php_standard_functions_cli php_standard)
578-
add_dependencies(php_standard_functions php_standard)
577+
# ext/standard functions objects based on the SAPI type.
578+
target_sources(
579+
php_standard
580+
INTERFACE
581+
$<IF:$<BOOL:$<TARGET_PROPERTY:PHP_CLI>>,$<TARGET_OBJECTS:php_standard_functions_cli>,$<TARGET_OBJECTS:php_standard_functions>>
582+
)
579583

580584
################################################################################
581585
# Configuration header

cmake/main/CMakeLists.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,9 +216,6 @@ target_sources(
216216
$<$<AND:$<STREQUAL:$<TARGET_PROPERTY:TYPE>,STATIC_LIBRARY>,$<STREQUAL:$<TARGET_PROPERTY:Zend::Zend,TYPE>,STATIC_LIBRARY>>:$<TARGET_OBJECTS:Zend::Zend>>
217217

218218
$<$<TARGET_EXISTS:PHP::windows>:$<TARGET_OBJECTS:PHP::windows>>
219-
220-
# ext/standard functions objects based on the SAPI type.
221-
$<IF:$<BOOL:$<TARGET_PROPERTY:PHP_CLI>>,$<TARGET_OBJECTS:php_standard_functions_cli>,$<TARGET_OBJECTS:php_standard_functions>>
222219
)
223220

224221
################################################################################

0 commit comments

Comments
 (0)