Skip to content

Commit 2de12f5

Browse files
committed
Merge branch 'PHP-8.3' into PHP-8.4
2 parents 20f01a1 + ff6c435 commit 2de12f5

File tree

8 files changed

+248
-126
lines changed

8 files changed

+248
-126
lines changed

cmake/Zend/CMakeLists.txt

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,15 @@ target_sources(
184184
PUBLIC
185185
FILE_SET HEADERS
186186
FILES
187+
Optimizer/zend_call_graph.h
188+
Optimizer/zend_cfg.h
189+
Optimizer/zend_dfg.h
190+
Optimizer/zend_dump.h
191+
Optimizer/zend_func_info.h
192+
Optimizer/zend_inference.h
193+
Optimizer/zend_optimizer.h
194+
Optimizer/zend_ssa.h
195+
Optimizer/zend_worklist.h
187196
zend_alloc_sizes.h
188197
zend_alloc.h
189198
zend_API.h
@@ -283,18 +292,9 @@ target_sources(
283292
zend_weakrefs_arginfo.h
284293
zend_weakrefs.h
285294
zend.h
286-
Optimizer/zend_call_graph.h
287-
Optimizer/zend_cfg.h
288-
Optimizer/zend_dfg.h
289-
Optimizer/zend_dump.h
290-
Optimizer/zend_func_info.h
291-
Optimizer/zend_inference.h
292-
Optimizer/zend_optimizer.h
293-
Optimizer/zend_ssa.h
294-
Optimizer/zend_worklist.h
295-
# A separate file set so binary dir can also be created within a source dir.
296295
PUBLIC
297-
FILE_SET HEADERS
296+
FILE_SET generated
297+
TYPE HEADERS
298298
BASE_DIRS ${CMAKE_CURRENT_BINARY_DIR}
299299
FILES
300300
$<$<NOT:$<PLATFORM_ID:Windows>>:${CMAKE_CURRENT_BINARY_DIR}/zend_config.h>
@@ -716,4 +716,6 @@ install(
716716
ARCHIVE EXCLUDE_FROM_ALL
717717
FILE_SET HEADERS
718718
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PHP_INCLUDE_PREFIX}/Zend
719+
FILE_SET generated
720+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PHP_INCLUDE_PREFIX}/Zend
719721
)

cmake/cmake/modules/PHP/Extensions.cmake

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -419,16 +419,27 @@ function(php_extensions_postconfigure extension)
419419
set_property(TARGET php_${extension} PROPERTY OUTPUT_NAME ${extension})
420420
endif()
421421

422-
# Add extension's default installation instructions.
422+
# Specify extension's default installation rules.
423+
get_target_property(sets php_${extension} INTERFACE_HEADER_SETS)
424+
set(fileSets "")
425+
foreach(set IN LISTS sets)
426+
list(
427+
APPEND
428+
fileSets
429+
FILE_SET
430+
${set}
431+
DESTINATION
432+
${CMAKE_INSTALL_INCLUDEDIR}/${PHP_INCLUDE_PREFIX}/ext/${extension}
433+
)
434+
endforeach()
423435
install(
424436
TARGETS php_${extension}
425437
ARCHIVE EXCLUDE_FROM_ALL
426438
RUNTIME
427439
DESTINATION ${PHP_EXTENSION_DIR}
428440
LIBRARY
429441
DESTINATION ${PHP_EXTENSION_DIR}
430-
FILE_SET HEADERS
431-
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PHP_INCLUDE_PREFIX}/ext/${extension}
442+
${fileSets}
432443
)
433444

434445
# Configure shared extension.

cmake/ext/date/CMakeLists.txt

Lines changed: 5 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ project(
1313
LANGUAGES C
1414
)
1515

16-
include(CheckIncludeFile)
1716
include(FeatureSummary)
1817

1918
add_feature_info(
@@ -22,66 +21,34 @@ add_feature_info(
2221
"date and time"
2322
)
2423

25-
# Check for headers needed by timelib.
26-
check_include_file(io.h HAVE_IO_H)
27-
2824
add_library(php_date OBJECT)
2925

3026
target_sources(
3127
php_date
3228
PRIVATE
33-
lib/astro.c
34-
lib/dow.c
35-
lib/interval.c
36-
lib/parse_date.c
37-
lib/parse_iso_intervals.c
38-
lib/parse_posix.c
39-
lib/parse_tz.c
40-
lib/timelib.c
41-
lib/tm2unixtime.c
42-
lib/unixtime2tm.c
4329
php_date.c
4430
php_date.stub.php
4531
PUBLIC
4632
FILE_SET HEADERS
4733
FILES
48-
lib/timelib.h
4934
php_date.h
50-
# A separate file set so binary dir can also be created within a source dir.
51-
PUBLIC
52-
FILE_SET HEADERS
53-
BASE_DIRS ${CMAKE_CURRENT_BINARY_DIR}
54-
FILES
55-
${CMAKE_CURRENT_BINARY_DIR}/lib/timelib_config.h
5635
)
5736

58-
target_include_directories(php_date PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/lib)
37+
target_compile_definitions(php_date PRIVATE ZEND_ENABLE_STATIC_TSRMLS_CACHE)
5938

6039
target_compile_options(
6140
php_date
6241
PRIVATE
6342
$<$<COMPILE_LANG_AND_ID:C,MSVC>:/wd4244>
6443
)
6544

66-
target_compile_definitions(
67-
php_date
68-
PRIVATE
69-
ZEND_ENABLE_STATIC_TSRMLS_CACHE
70-
HAVE_TIMELIB_CONFIG_H
71-
# The timelib uses C99 strtoll() function conditionally.
72-
HAVE_STRTOLL
73-
)
45+
# Configure timelib.
46+
set(TIMELIB_TARGET php_date)
47+
add_subdirectory(lib)
7448

7549
set(HAVE_TIMELIB_CONFIG_H TRUE)
7650

77-
cmake_path(
78-
RELATIVE_PATH
79-
CMAKE_CURRENT_BINARY_DIR
80-
BASE_DIRECTORY ${CMAKE_BINARY_DIR}
81-
OUTPUT_VARIABLE relativeDir
82-
)
83-
message(STATUS "Creating ${relativeDir}/lib/timelib_config.h")
84-
file(CONFIGURE OUTPUT lib/timelib_config.h CONTENT [[
51+
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/lib/timelib_config.h "\n" [[
8552
#ifdef PHP_WIN32
8653
# include "config.w32.h"
8754
#else

cmake/ext/date/lib/CMakeLists.txt

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
#[=============================================================================[
2+
# timelib
3+
4+
Simplified CMake-based build system for the timelib library.
5+
6+
## Basic usage
7+
8+
Adding timelib with `add_subdirectory()`:
9+
10+
```cmake
11+
set(TIMELIB_TARGET php_date)
12+
add_subdirectory(lib)
13+
```
14+
#]=============================================================================]
15+
16+
cmake_minimum_required(VERSION 3.25...3.31)
17+
18+
project(Timelib LANGUAGES C)
19+
20+
include(CheckIncludeFile)
21+
22+
if(NOT TIMELIB_TARGET)
23+
set(TIMELIB_TARGET timelib)
24+
add_library(${TIMELIB_TARGET})
25+
endif()
26+
27+
set(
28+
timelibSources
29+
astro.c
30+
dow.c
31+
interval.c
32+
parse_date.c
33+
parse_iso_intervals.c
34+
parse_posix.c
35+
parse_tz.c
36+
timelib.c
37+
tm2unixtime.c
38+
unixtime2tm.c
39+
)
40+
41+
target_sources(
42+
${TIMELIB_TARGET}
43+
PRIVATE
44+
${timelibSources}
45+
PUBLIC
46+
FILE_SET HEADERS
47+
FILES
48+
timelib.h
49+
PUBLIC
50+
FILE_SET generated
51+
TYPE HEADERS
52+
BASE_DIRS $<TARGET_PROPERTY:${TIMELIB_TARGET},BINARY_DIR>
53+
FILES
54+
${CMAKE_CURRENT_BINARY_DIR}/timelib_config.h
55+
)
56+
57+
target_include_directories(${TIMELIB_TARGET} PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
58+
59+
target_compile_definitions(
60+
${TIMELIB_TARGET}
61+
PRIVATE
62+
HAVE_TIMELIB_CONFIG_H
63+
# The timelib uses C99 strtoll() function conditionally.
64+
HAVE_STRTOLL
65+
)
66+
67+
check_include_file(io.h HAVE_IO_H)
68+
69+
cmake_path(
70+
RELATIVE_PATH
71+
CMAKE_CURRENT_BINARY_DIR
72+
BASE_DIRECTORY ${CMAKE_BINARY_DIR}
73+
OUTPUT_VARIABLE relativeDir
74+
)
75+
message(STATUS "Creating ${relativeDir}/timelib_config.h")
76+
file(CONFIGURE OUTPUT timelib_config.h CONTENT [[
77+
/* Define to 1 if you have the <io.h> header file. */
78+
#cmakedefine HAVE_IO_H 1
79+
]])

cmake/ext/mbstring/CMakeLists.txt

Lines changed: 9 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -84,69 +84,14 @@ endif()
8484
target_sources(
8585
php_mbstring
8686
PRIVATE
87-
libmbfl/filters/html_entities.c
88-
libmbfl/filters/mbfilter_7bit.c
89-
libmbfl/filters/mbfilter_base64.c
90-
libmbfl/filters/mbfilter_cjk.c
91-
libmbfl/filters/mbfilter_htmlent.c
92-
libmbfl/filters/mbfilter_qprint.c
93-
libmbfl/filters/mbfilter_singlebyte.c
94-
libmbfl/filters/mbfilter_ucs2.c
95-
libmbfl/filters/mbfilter_ucs4.c
96-
libmbfl/filters/mbfilter_utf16.c
97-
libmbfl/filters/mbfilter_utf32.c
98-
libmbfl/filters/mbfilter_utf7.c
99-
libmbfl/filters/mbfilter_utf7imap.c
100-
libmbfl/filters/mbfilter_utf8.c
101-
libmbfl/filters/mbfilter_uuencode.c
102-
libmbfl/mbfl/mbfilter_8bit.c
103-
libmbfl/mbfl/mbfilter_pass.c
104-
libmbfl/mbfl/mbfilter_wchar.c
105-
libmbfl/mbfl/mbfilter.c
106-
libmbfl/mbfl/mbfl_convert.c
107-
libmbfl/mbfl/mbfl_encoding.c
108-
libmbfl/mbfl/mbfl_filter_output.c
109-
libmbfl/mbfl/mbfl_language.c
110-
libmbfl/mbfl/mbfl_memory_device.c
111-
libmbfl/mbfl/mbfl_string.c
112-
libmbfl/nls/nls_de.c
113-
libmbfl/nls/nls_en.c
114-
libmbfl/nls/nls_hy.c
115-
libmbfl/nls/nls_ja.c
116-
libmbfl/nls/nls_kr.c
117-
libmbfl/nls/nls_neutral.c
118-
libmbfl/nls/nls_ru.c
119-
libmbfl/nls/nls_tr.c
120-
libmbfl/nls/nls_ua.c
121-
libmbfl/nls/nls_uni.c
122-
libmbfl/nls/nls_zh.c
12387
mb_gpc.c
12488
mbstring.c
12589
mbstring.stub.php
12690
php_unicode.c
12791
PUBLIC
12892
FILE_SET HEADERS
12993
FILES
130-
libmbfl/mbfl/eaw_table.h
131-
libmbfl/mbfl/mbfilter_8bit.h
132-
libmbfl/mbfl/mbfilter_pass.h
133-
libmbfl/mbfl/mbfilter_wchar.h
134-
libmbfl/mbfl/mbfilter.h
135-
libmbfl/mbfl/mbfl_consts.h
136-
libmbfl/mbfl/mbfl_convert.h
137-
libmbfl/mbfl/mbfl_defs.h
138-
libmbfl/mbfl/mbfl_encoding.h
139-
libmbfl/mbfl/mbfl_filter_output.h
140-
libmbfl/mbfl/mbfl_language.h
141-
libmbfl/mbfl/mbfl_memory_device.h
142-
libmbfl/mbfl/mbfl_string.h
14394
mbstring.h
144-
# A separate file set so binary dir can also be created within a source dir.
145-
PUBLIC
146-
FILE_SET HEADERS
147-
BASE_DIRS ${CMAKE_CURRENT_BINARY_DIR}
148-
FILES
149-
${CMAKE_CURRENT_BINARY_DIR}/libmbfl/config.h
15095
)
15196

15297
target_compile_definitions(php_mbstring PRIVATE ZEND_ENABLE_STATIC_TSRMLS_CACHE)
@@ -163,27 +108,21 @@ set(HAVE_MBSTRING TRUE)
163108
# Configure libmbfl.
164109
################################################################################
165110

166-
# TODO: Fix this better. See also https://github.com/php/php-src/pull/13713
167-
# TODO: Should status message be here?
168-
message(STATUS "Creating ext/mbstring/libmbfl/config.h")
169-
file(CONFIGURE OUTPUT libmbfl/config.h CONTENT [[
111+
set(LIBMBFL_TARGET php_mbstring)
112+
add_subdirectory(libmbfl)
113+
114+
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/libmbfl/config.h "\n" [[
115+
#ifdef HAVE_CONFIG_H
116+
# include <config.h>
117+
#endif
170118
#ifdef _WIN32
171119
# define HAVE_STRICMP 1
172-
#elif defined HAVE_CONFIG_H
173-
# include "<config.h>"
120+
# include <config.w32.h>
174121
#else
175-
# include <main/php_config.h>
122+
# include <php_config.h>
176123
#endif
177124
]])
178125

179-
target_include_directories(
180-
php_mbstring
181-
PRIVATE
182-
${CMAKE_CURRENT_SOURCE_DIR}/libmbfl
183-
${CMAKE_CURRENT_BINARY_DIR}/libmbfl
184-
${CMAKE_CURRENT_SOURCE_DIR}/libmbfl/mbfl
185-
)
186-
187126
################################################################################
188127
# Multibyte regex.
189128
################################################################################

0 commit comments

Comments
 (0)