@@ -17,6 +17,9 @@ Enable the extension. This extension is always built as shared when enabled.
1717
1818Enable 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
6270cmake_dependent_option(
6371  PHP_EXT_OPCACHE_JIT
@@ -129,7 +137,10 @@ endif()
129137
130138# Check if JIT is supported by the target architecture. 
131139if (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(
159170if (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