Skip to content

Commit 63eb99b

Browse files
committed
Add separate modular CMakeLists.txt for libmbfl
1 parent 3f710ba commit 63eb99b

File tree

10 files changed

+234
-148
lines changed

10 files changed

+234
-148
lines changed

cmake/Zend/CMakeLists.txt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -656,11 +656,12 @@ configure_file(cmake/zend_config.h.in CMakeFiles/zend_config.h)
656656

657657
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Windows")
658658
cmake_path(
659-
RELATIVE_PATH CMAKE_CURRENT_BINARY_DIR
659+
RELATIVE_PATH
660+
CMAKE_CURRENT_BINARY_DIR
660661
BASE_DIRECTORY ${CMAKE_BINARY_DIR}
661-
OUTPUT_VARIABLE dir
662+
OUTPUT_VARIABLE relativeDir
662663
)
663-
message(STATUS "Creating ${dir}/zend_config.h")
664+
message(STATUS "Creating ${relativeDir}/zend_config.h")
664665
file(
665666
CONFIGURE
666667
OUTPUT zend_config.h

cmake/cmake/modules/FindDTrace.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,8 @@ function(dtrace_target)
197197
]]
198198
)
199199
cmake_path(
200-
RELATIVE_PATH parsed_HEADER
200+
RELATIVE_PATH
201+
parsed_HEADER
201202
BASE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
202203
OUTPUT_VARIABLE header
203204
)

cmake/cmake/modules/FindMC.cmake

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,10 +214,17 @@ function(mc_target)
214214
VERBATIM
215215
)
216216

217+
cmake_path(
218+
RELATIVE_PATH
219+
output
220+
BASE_DIRECTORY ${CMAKE_BINARY_DIR}
221+
OUTPUT_VARIABLE relativePath
222+
)
223+
217224
add_custom_target(
218225
${parsed_NAME}
219226
SOURCES "${parsed_INPUT}"
220227
DEPENDS "${output}"
221-
COMMENT "[MC][${parsed_NAME}] Generating ${output}"
228+
COMMENT "[MC][${parsed_NAME}] Generating ${relativePath}"
222229
)
223230
endfunction()

cmake/cmake/modules/PHP/PkgConfigGenerator.cmake

Lines changed: 34 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ pkgconfig_generate_pc(
2525
)
2626
```
2727
28-
Generate pkgconfig `<pc-file-output>` from the given pc `<pc-template-file>`
28+
Generate pkg-config `<pc-file-output>` from the given pc `<pc-template-file>`
2929
template.
3030
3131
* `TARGET`
@@ -72,20 +72,20 @@ function(_pkgconfig_parse_variables variables)
7272
)
7373
endif()
7474

75-
set(is_value FALSE)
76-
set(variables_options "")
77-
set(result_variables "")
78-
set(result_values "")
75+
set(isValue FALSE)
76+
set(variablesOptions "")
77+
set(resultVariables "")
78+
set(resultValues "")
7979
foreach(variable IN LISTS variables)
80-
if(is_value)
81-
set(is_value FALSE)
80+
if(isValue)
81+
set(isValue FALSE)
8282
continue()
8383
endif()
8484
list(POP_FRONT variables var value)
8585

86-
list(APPEND result_variables ${var})
86+
list(APPEND resultVariables ${var})
8787

88-
# The result_values are for the install(CODE) and generator expression
88+
# The resultValues are for the install(CODE) and generator expression
8989
# $<INSTALL_PREFIX> works since CMake 3.27, for earlier versions the escaped
9090
# variable CMAKE_INSTALL_PREFIX can be used.
9191
if(
@@ -96,16 +96,16 @@ function(_pkgconfig_parse_variables variables)
9696
REPLACE
9797
"$<INSTALL_PREFIX>"
9898
"\${CMAKE_INSTALL_PREFIX}"
99-
replaced_value
99+
replacedValue
100100
"${value}"
101101
)
102-
list(APPEND result_values "${replaced_value}")
102+
list(APPEND resultValues "${replacedValue}")
103103
else()
104-
list(APPEND result_values "${value}")
104+
list(APPEND resultValues "${value}")
105105
endif()
106106

107107
# Replace possible INSTALL_PREFIX in value for usage in add_custom_command,
108-
# in the result_values above the intact genex is left for enabling the
108+
# in the resultValues above the intact genex is left for enabling the
109109
# possible 'cmake --install --prefix ...' override.
110110
if(value MATCHES [[.*\$<INSTALL_PREFIX>.*]])
111111
string(
@@ -117,14 +117,14 @@ function(_pkgconfig_parse_variables variables)
117117
)
118118
endif()
119119

120-
list(APPEND variables_options -D ${var}="${value}")
120+
list(APPEND variablesOptions -D ${var}="${value}")
121121

122-
set(is_value TRUE)
122+
set(isValue TRUE)
123123
endforeach()
124124

125-
set(variables_options "${variables_options}" PARENT_SCOPE)
126-
set(result_variables "${result_variables}" PARENT_SCOPE)
127-
set(result_values "${result_values}" PARENT_SCOPE)
125+
set(variablesOptions "${variablesOptions}" PARENT_SCOPE)
126+
set(resultVariables "${resultVariables}" PARENT_SCOPE)
127+
set(resultValues "${resultValues}" PARENT_SCOPE)
128128
endfunction()
129129

130130
function(pkgconfig_generate_pc)
@@ -209,36 +209,42 @@ function(pkgconfig_generate_pc)
209209
)
210210

211211
if(parsed_TARGET)
212-
set(target_option -D TARGET_FILE="$<TARGET_FILE:${parsed_TARGET}>")
212+
set(targetOption -D TARGET_FILE="$<TARGET_FILE:${parsed_TARGET}>")
213213
endif()
214214

215215
if(parsed_VARIABLES)
216216
_pkgconfig_parse_variables("${parsed_VARIABLES}")
217217
endif()
218218

219-
cmake_path(GET template FILENAME filename)
219+
cmake_path(GET output FILENAME outputFilename)
220+
string(MAKE_C_IDENTIFIER "${outputFilename}" targetName)
220221

221-
string(MAKE_C_IDENTIFIER "${filename}" target_name)
222+
cmake_path(
223+
RELATIVE_PATH
224+
output
225+
BASE_DIRECTORY ${CMAKE_BINARY_DIR}
226+
OUTPUT_VARIABLE outputRelativePath
227+
)
222228

223229
add_custom_target(
224-
pkgconfig_generate_${target_name}
230+
pkgconfig_generate_${targetName}
225231
ALL
226232
COMMAND ${CMAKE_COMMAND}
227233
-D PKGCONFIG_OBJDUMP_EXECUTABLE=${PKGCONFIG_OBJDUMP_EXECUTABLE}
228234
-D TEMPLATE=${template}
229235
-D OUTPUT=${output}
230-
${target_option}
231-
${variables_options}
236+
${targetOption}
237+
${variablesOptions}
232238
-P CMakeFiles/PkgConfigGeneratePc.cmake
233-
COMMENT "[PkgConfig] Generating pkg-config ${filename} file"
239+
COMMENT "[PkgConfig] Generating ${outputRelativePath}"
234240
)
235241

236242
install(CODE "
237243
block()
238-
set(result_variables ${result_variables})
239-
set(result_values \"${result_values}\")
244+
set(resultVariables ${resultVariables})
245+
set(resultValues \"${resultValues}\")
240246
241-
foreach(var value IN ZIP_LISTS result_variables result_values)
247+
foreach(var value IN ZIP_LISTS resultVariables resultValues)
242248
set(\${var} \"\${value}\")
243249
endforeach()
244250

cmake/ext/date/CMakeLists.txt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,12 @@ target_compile_definitions(
7575
set(HAVE_TIMELIB_CONFIG_H TRUE)
7676

7777
cmake_path(
78-
RELATIVE_PATH CMAKE_CURRENT_BINARY_DIR
78+
RELATIVE_PATH
79+
CMAKE_CURRENT_BINARY_DIR
7980
BASE_DIRECTORY ${CMAKE_BINARY_DIR}
80-
OUTPUT_VARIABLE dir
81+
OUTPUT_VARIABLE relativeDir
8182
)
82-
message(STATUS "Creating ${dir}/lib/timelib_config.h")
83+
message(STATUS "Creating ${relativeDir}/lib/timelib_config.h")
8384
file(CONFIGURE OUTPUT lib/timelib_config.h CONTENT [[
8485
#ifdef PHP_WIN32
8586
# include "config.w32.h"

cmake/ext/mbstring/CMakeLists.txt

Lines changed: 15 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ project(
3232
LANGUAGES C
3333
)
3434

35-
include(CheckIncludeFile)
3635
include(CheckSourceCompiles)
37-
include(CheckSymbolExists)
3836
include(CMakeDependentOption)
3937
include(CMakePushCheckState)
4038
include(FeatureSummary)
@@ -107,103 +105,12 @@ add_dependencies(php_mbstring php_pcre)
107105
################################################################################
108106
# Configure libmbfl.
109107
################################################################################
108+
set(LIBMBFL_NAMESPACE php_mbstring_libmbfl)
109+
add_subdirectory(libmbfl EXCLUDE_FROM_ALL)
110+
target_link_libraries(php_mbstring PRIVATE ${LIBMBFL_NAMESPACE})
110111

111-
target_sources(
112-
php_mbstring
113-
PRIVATE
114-
libmbfl/filters/html_entities.c
115-
libmbfl/filters/mbfilter_7bit.c
116-
libmbfl/filters/mbfilter_base64.c
117-
libmbfl/filters/mbfilter_cjk.c
118-
libmbfl/filters/mbfilter_htmlent.c
119-
libmbfl/filters/mbfilter_qprint.c
120-
libmbfl/filters/mbfilter_singlebyte.c
121-
libmbfl/filters/mbfilter_ucs2.c
122-
libmbfl/filters/mbfilter_ucs4.c
123-
libmbfl/filters/mbfilter_utf16.c
124-
libmbfl/filters/mbfilter_utf32.c
125-
libmbfl/filters/mbfilter_utf7.c
126-
libmbfl/filters/mbfilter_utf7imap.c
127-
libmbfl/filters/mbfilter_utf8_mobile.c
128-
libmbfl/filters/mbfilter_utf8.c
129-
libmbfl/filters/mbfilter_uuencode.c
130-
libmbfl/mbfl/mbfilter_8bit.c
131-
libmbfl/mbfl/mbfilter_pass.c
132-
libmbfl/mbfl/mbfilter_wchar.c
133-
libmbfl/mbfl/mbfilter.c
134-
libmbfl/mbfl/mbfl_convert.c
135-
libmbfl/mbfl/mbfl_encoding.c
136-
libmbfl/mbfl/mbfl_filter_output.c
137-
libmbfl/mbfl/mbfl_language.c
138-
libmbfl/mbfl/mbfl_memory_device.c
139-
libmbfl/mbfl/mbfl_string.c
140-
libmbfl/nls/nls_de.c
141-
libmbfl/nls/nls_en.c
142-
libmbfl/nls/nls_hy.c
143-
libmbfl/nls/nls_ja.c
144-
libmbfl/nls/nls_kr.c
145-
libmbfl/nls/nls_neutral.c
146-
libmbfl/nls/nls_ru.c
147-
libmbfl/nls/nls_tr.c
148-
libmbfl/nls/nls_ua.c
149-
libmbfl/nls/nls_uni.c
150-
libmbfl/nls/nls_zh.c
151-
PUBLIC
152-
FILE_SET HEADERS
153-
FILES
154-
libmbfl/mbfl/eaw_table.h
155-
libmbfl/mbfl/mbfilter_8bit.h
156-
libmbfl/mbfl/mbfilter_pass.h
157-
libmbfl/mbfl/mbfilter_wchar.h
158-
libmbfl/mbfl/mbfilter.h
159-
libmbfl/mbfl/mbfl_consts.h
160-
libmbfl/mbfl/mbfl_convert.h
161-
libmbfl/mbfl/mbfl_defs.h
162-
libmbfl/mbfl/mbfl_encoding.h
163-
libmbfl/mbfl/mbfl_filter_output.h
164-
libmbfl/mbfl/mbfl_language.h
165-
libmbfl/mbfl/mbfl_memory_device.h
166-
libmbfl/mbfl/mbfl_string.h
167-
# A separate file set so binary dir can also be created within a source dir.
168-
PUBLIC
169-
FILE_SET HEADERS
170-
BASE_DIRS ${CMAKE_CURRENT_BINARY_DIR}
171-
FILES
172-
${CMAKE_CURRENT_BINARY_DIR}/libmbfl/config.h
173-
)
174-
175-
target_include_directories(
176-
php_mbstring
177-
PRIVATE
178-
${CMAKE_CURRENT_BINARY_DIR}/libmbfl
179-
${CMAKE_CURRENT_SOURCE_DIR}/libmbfl
180-
${CMAKE_CURRENT_SOURCE_DIR}/libmbfl/mbfl
181-
)
112+
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/libmbfl/config.h [[
182113

183-
target_compile_definitions(
184-
php_mbstring
185-
PRIVATE
186-
$<$<AND:$<PLATFORM_ID:Windows>,$<IN_LIST:$<TARGET_PROPERTY:TYPE>,MODULE_LIBRARY;SHARED_LIBRARY>>:MBFL_DLL_EXPORT>
187-
)
188-
189-
# There are duplicate strings.h and strcasecmp checks for the time being.
190-
# See: https://github.com/php/php-src/pull/13713
191-
# Once upstream is refactored, global strings.h and strcasecmp checks with
192-
# Windows unconditional definition can be removed in favor of these checks only
193-
# or done differently.
194-
check_include_file(strings.h HAVE_STRINGS_H)
195-
check_symbol_exists(strcasecmp "strings.h" HAVE_STRCASECMP)
196-
197-
cmake_path(
198-
RELATIVE_PATH CMAKE_CURRENT_BINARY_DIR
199-
BASE_DIRECTORY ${CMAKE_BINARY_DIR}
200-
OUTPUT_VARIABLE dir
201-
)
202-
message(STATUS "Creating ${dir}/libmbfl/config.h")
203-
file(CONFIGURE OUTPUT libmbfl/config.h CONTENT [[
204-
#ifdef HAVE_CONFIG_H
205-
# include <config.h>
206-
#endif
207114
#ifdef _WIN32
208115
# define HAVE_STRICMP 1
209116
# include <config.w32.h>
@@ -212,8 +119,15 @@ file(CONFIGURE OUTPUT libmbfl/config.h CONTENT [[
212119
#endif
213120
]])
214121

122+
install(
123+
TARGETS ${LIBMBFL_NAMESPACE}
124+
ARCHIVE EXCLUDE_FROM_ALL
125+
FILE_SET HEADERS
126+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PHP_INCLUDE_PREFIX}/ext/mbstring/libmbfl
127+
)
128+
215129
################################################################################
216-
# MB regex.
130+
# Multibyte regex.
217131
################################################################################
218132

219133
if(EXT_MBSTRING_MBREGEX)
@@ -228,7 +142,7 @@ if(EXT_MBSTRING_MBREGEX)
228142
target_link_libraries(php_mbstring PRIVATE Oniguruma::Oniguruma)
229143

230144
if(TARGET Oniguruma::Oniguruma)
231-
message(CHECK_START "Checking if Oniguruma has invalid entry for KOI8 encoding")
145+
message(CHECK_START "Checking for invalid KOI8 encoding entry in Oniguruma")
232146
cmake_push_check_state(RESET)
233147
set(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
234148
set(CMAKE_REQUIRED_LIBRARIES Oniguruma::Oniguruma)
@@ -247,7 +161,6 @@ if(EXT_MBSTRING_MBREGEX)
247161
message(CHECK_PASS "no")
248162
else()
249163
message(CHECK_FAIL "yes")
250-
251164
set(PHP_ONIG_BAD_KOI8_ENTRY TRUE)
252165
endif()
253166
endif()
@@ -262,8 +175,6 @@ if(EXT_MBSTRING_MBREGEX)
262175
$<$<PLATFORM_ID:Windows>:ONIG_EXTERN=extern>
263176
)
264177

265-
set(HAVE_MBREGEX TRUE)
266-
267178
target_sources(
268179
php_mbstring
269180
PRIVATE
@@ -274,6 +185,8 @@ if(EXT_MBSTRING_MBREGEX)
274185
php_mbregex.h
275186
php_onig_compat.h
276187
)
188+
189+
set(HAVE_MBREGEX TRUE)
277190
endif()
278191

279192
set(HAVE_MBSTRING TRUE)

cmake/ext/mbstring/cmake/config.h.in

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,5 @@
44
/* Define to 1 if the PHP extension 'mbstring' is available. */
55
#cmakedefine HAVE_MBSTRING 1
66

7-
/* Define to 1 if you have the 'strcasecmp' function. */
8-
#cmakedefine HAVE_STRCASECMP 1
9-
10-
/* Define to 1 if you have the <strings.h> header file. */
11-
#cmakedefine HAVE_STRINGS_H 1
12-
137
/* Define to 1 if Oniguruma has an invalid entry for KOI8 encoding. */
148
#cmakedefine PHP_ONIG_BAD_KOI8_ENTRY 1

0 commit comments

Comments
 (0)