Skip to content

Commit a6117ac

Browse files
committed
Merge branch 'PHP-8.3' into PHP-8.4
2 parents 44f9096 + 6a61008 commit a6117ac

File tree

1 file changed

+39
-20
lines changed

1 file changed

+39
-20
lines changed

cmake/ext/opcache/CMakeLists.txt

Lines changed: 39 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ Enable the extension. This extension is always built as shared when enabled.
1717
1818
Enable copying PHP CODE pages into HUGE PAGES.
1919
20+
> [!NOTE]
21+
> This option is not available when the target system is Windows.
22+
2023
## PHP_EXT_OPCACHE_JIT
2124
2225
* Default: `ON`
@@ -58,6 +61,11 @@ cmake_dependent_option(
5861
[[PHP_EXT_OPCACHE AND NOT CMAKE_SYSTEM_NAME STREQUAL "Windows"]]
5962
OFF
6063
)
64+
add_feature_info(
65+
"ext/opcache HUGE PAGES"
66+
PHP_EXT_OPCACHE_HUGE_CODE_PAGES
67+
"PHP CODE pages are copied into HUGE PAGES"
68+
)
6169

6270
cmake_dependent_option(
6371
PHP_EXT_OPCACHE_JIT
@@ -129,7 +137,10 @@ endif()
129137

130138
# Check if JIT is supported by the target architecture.
131139
if(PHP_EXT_OPCACHE_JIT)
132-
if(NOT CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "(i[3456]86|x86_64|aarch64|arm64|x64|X86)")
140+
if(
141+
NOT CMAKE_C_COMPILER_ARCHITECTURE_ID
142+
MATCHES "(i[3456]86|x86_64|aarch64|arm64|x64|X86)"
143+
)
133144
message(
134145
WARNING
135146
"JIT is not supported by target architecture "
@@ -159,33 +170,33 @@ target_include_directories(
159170
if(PHP_EXT_OPCACHE_JIT)
160171
# Find out which ABI to use.
161172
if(CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "(x86_64|x64)")
162-
set(IR_TARGET "IR_TARGET_X64")
163-
set(DASM_FLAGS -D X64=1)
164-
set(DASM_ARCH "x86")
173+
set(ir_target "IR_TARGET_X64")
174+
set(dasm_flags -D X64=1)
175+
set(dasm_arch "x86")
165176
elseif(CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "(i[34567]86|X86)")
166-
set(IR_TARGET "IR_TARGET_X86")
167-
set(DASM_ARCH "x86")
177+
set(ir_target "IR_TARGET_X86")
178+
set(dasm_arch "x86")
168179
elseif(CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "(arm64|ARM64|aarch64)")
169-
set(IR_TARGET "IR_TARGET_AARCH64")
170-
set(DASM_ARCH "aarch64")
180+
set(ir_target "IR_TARGET_AARCH64")
181+
set(dasm_arch "aarch64")
171182
endif()
172183

173184
if(
174185
CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "x86_64"
175186
AND CMAKE_SYSTEM_NAME STREQUAL "Darwin"
176187
)
177-
list(APPEND DASM_FLAGS -D X64APPLE=1)
188+
list(APPEND dasm_flags -D X64APPLE=1)
178189
endif()
179190

180191
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
181-
list(APPEND DASM_FLAGS -D WIN=1)
192+
list(APPEND dasm_flags -D WIN=1)
182193
endif()
183194

184195
if(
185196
CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "(x86_64|x64|ARM64|aarch64)"
186197
AND CMAKE_SYSTEM_NAME STREQUAL "Windows"
187198
)
188-
list(APPEND DASM_FLAGS -D X64WIN=1)
199+
list(APPEND dasm_flags -D X64WIN=1)
189200
endif()
190201

191202
# Generate ir_emit_<arch>.h file.
@@ -217,16 +228,16 @@ if(PHP_EXT_OPCACHE_JIT)
217228

218229
# Generate native code generator for selected architecture.
219230
add_custom_command(
220-
OUTPUT jit/ir/ir_emit_${DASM_ARCH}.h
231+
OUTPUT jit/ir/ir_emit_${dasm_arch}.h
221232
COMMAND
222233
php_ext_opcache_jit_minilua ${CMAKE_CURRENT_SOURCE_DIR}/jit/ir/dynasm/dynasm.lua
223-
${DASM_FLAGS}
224-
-o ${CMAKE_CURRENT_BINARY_DIR}/jit/ir/ir_emit_${DASM_ARCH}.h
225-
${CMAKE_CURRENT_SOURCE_DIR}/jit/ir/ir_${DASM_ARCH}.dasc
226-
COMMENT "[ext/opcache] Generating native code generator ${relativeDir}/jit/ir/ir_emit_${DASM_ARCH}.h"
234+
${dasm_flags}
235+
-o ${CMAKE_CURRENT_BINARY_DIR}/jit/ir/ir_emit_${dasm_arch}.h
236+
${CMAKE_CURRENT_SOURCE_DIR}/jit/ir/ir_${dasm_arch}.dasc
237+
COMMENT "[ext/opcache] Generating native code generator ${relativeDir}/jit/ir/ir_emit_${dasm_arch}.h"
227238
DEPENDS
228239
jit/ir/dynasm/dynasm.lua
229-
jit/ir/ir_${DASM_ARCH}.dasc
240+
jit/ir/ir_${dasm_arch}.dasc
230241
VERBATIM
231242
COMMAND_EXPAND_LISTS
232243
)
@@ -236,7 +247,7 @@ if(PHP_EXT_OPCACHE_JIT)
236247
target_compile_definitions(
237248
php_ext_opcache_jit_generator
238249
PRIVATE
239-
${IR_TARGET}
250+
${ir_target}
240251
IR_PHP
241252
IR_PHP_MM=0
242253
)
@@ -277,7 +288,7 @@ if(PHP_EXT_OPCACHE_JIT)
277288
jit/ir/ir.c
278289
jit/zend_jit_vm_helpers.c
279290
jit/zend_jit.c
280-
${CMAKE_CURRENT_BINARY_DIR}/jit/ir/ir_emit_${DASM_ARCH}.h
291+
${CMAKE_CURRENT_BINARY_DIR}/jit/ir/ir_emit_${dasm_arch}.h
281292
${CMAKE_CURRENT_BINARY_DIR}/jit/ir/ir_fold_hash.h
282293
)
283294

@@ -291,10 +302,18 @@ if(PHP_EXT_OPCACHE_JIT)
291302
php_ext_opcache
292303
PRIVATE
293304
IR_PHP
294-
${IR_TARGET}
305+
${ir_target}
295306
$<$<CONFIG:Debug,DebugAssertions>:IR_DEBUG>
296307
)
297308

309+
foreach(
310+
file IN ITEMS
311+
${CMAKE_CURRENT_SOURCE_DIR}/jit/zend_jit_helpers.c
312+
${CMAKE_CURRENT_SOURCE_DIR}/jit/zend_jit_ir.c
313+
)
314+
set_property(SOURCE jit/zend_jit.c APPEND PROPERTY OBJECT_DEPENDS "${file}")
315+
endforeach()
316+
298317
# Check for Capstone.
299318
if(PHP_EXT_OPCACHE_CAPSTONE)
300319
find_package(Capstone 3.0.0)

0 commit comments

Comments
 (0)