Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 13 additions & 11 deletions cmake/Zend/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,15 @@ target_sources(
PUBLIC
FILE_SET HEADERS
FILES
Optimizer/zend_call_graph.h
Optimizer/zend_cfg.h
Optimizer/zend_dfg.h
Optimizer/zend_dump.h
Optimizer/zend_func_info.h
Optimizer/zend_inference.h
Optimizer/zend_optimizer.h
Optimizer/zend_ssa.h
Optimizer/zend_worklist.h
zend_alloc_sizes.h
zend_alloc.h
zend_API.h
Expand Down Expand Up @@ -276,18 +285,9 @@ target_sources(
zend_weakrefs_arginfo.h
zend_weakrefs.h
zend.h
Optimizer/zend_call_graph.h
Optimizer/zend_cfg.h
Optimizer/zend_dfg.h
Optimizer/zend_dump.h
Optimizer/zend_func_info.h
Optimizer/zend_inference.h
Optimizer/zend_optimizer.h
Optimizer/zend_ssa.h
Optimizer/zend_worklist.h
# A separate file set so binary dir can also be created within a source dir.
PUBLIC
FILE_SET HEADERS
FILE_SET generated
TYPE HEADERS
BASE_DIRS ${CMAKE_CURRENT_BINARY_DIR}
FILES
$<$<NOT:$<PLATFORM_ID:Windows>>:${CMAKE_CURRENT_BINARY_DIR}/zend_config.h>
Expand Down Expand Up @@ -686,4 +686,6 @@ install(
ARCHIVE EXCLUDE_FROM_ALL
FILE_SET HEADERS
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PHP_INCLUDE_PREFIX}/Zend
FILE_SET generated
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PHP_INCLUDE_PREFIX}/Zend
)
17 changes: 14 additions & 3 deletions cmake/cmake/modules/PHP/Extensions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -419,16 +419,27 @@ function(php_extensions_postconfigure extension)
set_property(TARGET php_${extension} PROPERTY OUTPUT_NAME ${extension})
endif()

# Add extension's default installation instructions.
# Specify extension's default installation rules.
get_target_property(sets php_${extension} INTERFACE_HEADER_SETS)
set(fileSets "")
foreach(set IN LISTS sets)
list(
APPEND
fileSets
FILE_SET
${set}
DESTINATION
${CMAKE_INSTALL_INCLUDEDIR}/${PHP_INCLUDE_PREFIX}/ext/${extension}
)
endforeach()
install(
TARGETS php_${extension}
ARCHIVE EXCLUDE_FROM_ALL
RUNTIME
DESTINATION ${PHP_EXTENSION_DIR}
LIBRARY
DESTINATION ${PHP_EXTENSION_DIR}
FILE_SET HEADERS
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PHP_INCLUDE_PREFIX}/ext/${extension}
${fileSets}
)

# Configure shared extension.
Expand Down
43 changes: 5 additions & 38 deletions cmake/ext/date/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ project(
LANGUAGES C
)

include(CheckIncludeFile)
include(FeatureSummary)

add_feature_info(
Expand All @@ -22,66 +21,34 @@ add_feature_info(
"date and time"
)

# Check for headers needed by timelib.
check_include_file(io.h HAVE_IO_H)

add_library(php_date OBJECT)

target_sources(
php_date
PRIVATE
lib/astro.c
lib/dow.c
lib/interval.c
lib/parse_date.c
lib/parse_iso_intervals.c
lib/parse_posix.c
lib/parse_tz.c
lib/timelib.c
lib/tm2unixtime.c
lib/unixtime2tm.c
php_date.c
php_date.stub.php
PUBLIC
FILE_SET HEADERS
FILES
lib/timelib.h
php_date.h
# A separate file set so binary dir can also be created within a source dir.
PUBLIC
FILE_SET HEADERS
BASE_DIRS ${CMAKE_CURRENT_BINARY_DIR}
FILES
${CMAKE_CURRENT_BINARY_DIR}/lib/timelib_config.h
)

target_include_directories(php_date PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/lib)
target_compile_definitions(php_date PRIVATE ZEND_ENABLE_STATIC_TSRMLS_CACHE)

target_compile_options(
php_date
PRIVATE
$<$<COMPILE_LANG_AND_ID:C,MSVC>:/wd4244>
)

target_compile_definitions(
php_date
PRIVATE
ZEND_ENABLE_STATIC_TSRMLS_CACHE
HAVE_TIMELIB_CONFIG_H
# The timelib uses C99 strtoll() function conditionally.
HAVE_STRTOLL
)
# Configure timelib.
set(TIMELIB_TARGET php_date)
add_subdirectory(lib)

set(HAVE_TIMELIB_CONFIG_H TRUE)

cmake_path(
RELATIVE_PATH
CMAKE_CURRENT_BINARY_DIR
BASE_DIRECTORY ${CMAKE_BINARY_DIR}
OUTPUT_VARIABLE relativeDir
)
message(STATUS "Creating ${relativeDir}/lib/timelib_config.h")
file(CONFIGURE OUTPUT lib/timelib_config.h CONTENT [[
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/lib/timelib_config.h "\n" [[
#ifdef PHP_WIN32
# include "config.w32.h"
#else
Expand Down
79 changes: 79 additions & 0 deletions cmake/ext/date/lib/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
#[=============================================================================[
# timelib

Simplified CMake-based build system for the timelib library.

## Basic usage

Adding timelib with `add_subdirectory()`:

```cmake
set(TIMELIB_TARGET php_date)
add_subdirectory(lib)
```
#]=============================================================================]

cmake_minimum_required(VERSION 3.25...3.31)

project(Timelib LANGUAGES C)

include(CheckIncludeFile)

if(NOT TIMELIB_TARGET)
set(TIMELIB_TARGET timelib)
add_library(${TIMELIB_TARGET})
endif()

set(
timelibSources
astro.c
dow.c
interval.c
parse_date.c
parse_iso_intervals.c
parse_posix.c
parse_tz.c
timelib.c
tm2unixtime.c
unixtime2tm.c
)

target_sources(
${TIMELIB_TARGET}
PRIVATE
${timelibSources}
PUBLIC
FILE_SET HEADERS
FILES
timelib.h
PUBLIC
FILE_SET generated
TYPE HEADERS
BASE_DIRS $<TARGET_PROPERTY:${TIMELIB_TARGET},BINARY_DIR>
FILES
${CMAKE_CURRENT_BINARY_DIR}/timelib_config.h
)

target_include_directories(${TIMELIB_TARGET} PUBLIC ${CMAKE_CURRENT_BINARY_DIR})

target_compile_definitions(
${TIMELIB_TARGET}
PRIVATE
HAVE_TIMELIB_CONFIG_H
# The timelib uses C99 strtoll() function conditionally.
HAVE_STRTOLL
)

check_include_file(io.h HAVE_IO_H)

cmake_path(
RELATIVE_PATH
CMAKE_CURRENT_BINARY_DIR
BASE_DIRECTORY ${CMAKE_BINARY_DIR}
OUTPUT_VARIABLE relativeDir
)
message(STATUS "Creating ${relativeDir}/timelib_config.h")
file(CONFIGURE OUTPUT timelib_config.h CONTENT [[
/* Define to 1 if you have the <io.h> header file. */
#cmakedefine HAVE_IO_H 1
]])
80 changes: 9 additions & 71 deletions cmake/ext/mbstring/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -84,70 +84,14 @@ endif()
target_sources(
php_mbstring
PRIVATE
libmbfl/filters/html_entities.c
libmbfl/filters/mbfilter_7bit.c
libmbfl/filters/mbfilter_base64.c
libmbfl/filters/mbfilter_cjk.c
libmbfl/filters/mbfilter_htmlent.c
libmbfl/filters/mbfilter_qprint.c
libmbfl/filters/mbfilter_singlebyte.c
libmbfl/filters/mbfilter_ucs2.c
libmbfl/filters/mbfilter_ucs4.c
libmbfl/filters/mbfilter_utf16.c
libmbfl/filters/mbfilter_utf32.c
libmbfl/filters/mbfilter_utf7.c
libmbfl/filters/mbfilter_utf7imap.c
libmbfl/filters/mbfilter_utf8_mobile.c
libmbfl/filters/mbfilter_utf8.c
libmbfl/filters/mbfilter_uuencode.c
libmbfl/mbfl/mbfilter_8bit.c
libmbfl/mbfl/mbfilter_pass.c
libmbfl/mbfl/mbfilter_wchar.c
libmbfl/mbfl/mbfilter.c
libmbfl/mbfl/mbfl_convert.c
libmbfl/mbfl/mbfl_encoding.c
libmbfl/mbfl/mbfl_filter_output.c
libmbfl/mbfl/mbfl_language.c
libmbfl/mbfl/mbfl_memory_device.c
libmbfl/mbfl/mbfl_string.c
libmbfl/nls/nls_de.c
libmbfl/nls/nls_en.c
libmbfl/nls/nls_hy.c
libmbfl/nls/nls_ja.c
libmbfl/nls/nls_kr.c
libmbfl/nls/nls_neutral.c
libmbfl/nls/nls_ru.c
libmbfl/nls/nls_tr.c
libmbfl/nls/nls_ua.c
libmbfl/nls/nls_uni.c
libmbfl/nls/nls_zh.c
mb_gpc.c
mbstring.c
mbstring.stub.php
php_unicode.c
PUBLIC
FILE_SET HEADERS
FILES
libmbfl/mbfl/eaw_table.h
libmbfl/mbfl/mbfilter_8bit.h
libmbfl/mbfl/mbfilter_pass.h
libmbfl/mbfl/mbfilter_wchar.h
libmbfl/mbfl/mbfilter.h
libmbfl/mbfl/mbfl_consts.h
libmbfl/mbfl/mbfl_convert.h
libmbfl/mbfl/mbfl_defs.h
libmbfl/mbfl/mbfl_encoding.h
libmbfl/mbfl/mbfl_filter_output.h
libmbfl/mbfl/mbfl_language.h
libmbfl/mbfl/mbfl_memory_device.h
libmbfl/mbfl/mbfl_string.h
mbstring.h
# A separate file set so binary dir can also be created within a source dir.
PUBLIC
FILE_SET HEADERS
BASE_DIRS ${CMAKE_CURRENT_BINARY_DIR}
FILES
${CMAKE_CURRENT_BINARY_DIR}/libmbfl/config.h
)

target_compile_definitions(php_mbstring PRIVATE ZEND_ENABLE_STATIC_TSRMLS_CACHE)
Expand All @@ -164,27 +108,21 @@ set(HAVE_MBSTRING TRUE)
# Configure libmbfl.
################################################################################

# TODO: Fix this better. See also https://github.com/php/php-src/pull/13713
# TODO: Should status message be here?
message(STATUS "Creating ext/mbstring/libmbfl/config.h")
file(CONFIGURE OUTPUT libmbfl/config.h CONTENT [[
set(LIBMBFL_TARGET php_mbstring)
add_subdirectory(libmbfl)

file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/libmbfl/config.h "\n" [[
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#ifdef _WIN32
# define HAVE_STRICMP 1
#elif defined HAVE_CONFIG_H
# include "<config.h>"
# include <config.w32.h>
#else
# include <main/php_config.h>
# include <php_config.h>
#endif
]])

target_include_directories(
php_mbstring
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/libmbfl
${CMAKE_CURRENT_BINARY_DIR}/libmbfl
${CMAKE_CURRENT_SOURCE_DIR}/libmbfl/mbfl
)

################################################################################
# Multibyte regex.
################################################################################
Expand Down
Loading
Loading