72 lines
2.5 KiB
CMake
72 lines
2.5 KiB
CMake
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
cmake_minimum_required(VERSION 3.25)
|
|
project(regex_pcre2_bridge LANGUAGES C)
|
|
|
|
if(NOT EMSCRIPTEN)
|
|
message(FATAL_ERROR "The staged PCRE2 pack must be built with Emscripten.")
|
|
endif()
|
|
|
|
if(NOT DEFINED PCRE2_SOURCE_DIR OR NOT IS_DIRECTORY "${PCRE2_SOURCE_DIR}")
|
|
message(FATAL_ERROR "PCRE2_SOURCE_DIR must identify the verified PCRE2 source checkout.")
|
|
endif()
|
|
|
|
if(NOT DEFINED REGEX_PCRE2_OUTPUT_DIR)
|
|
message(FATAL_ERROR "REGEX_PCRE2_OUTPUT_DIR must identify the private staging directory.")
|
|
endif()
|
|
|
|
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
|
|
set(BUILD_STATIC_LIBS ON CACHE BOOL "" FORCE)
|
|
set(PCRE2_BUILD_PCRE2_8 ON CACHE BOOL "" FORCE)
|
|
set(PCRE2_BUILD_PCRE2_16 OFF CACHE BOOL "" FORCE)
|
|
set(PCRE2_BUILD_PCRE2_32 OFF CACHE BOOL "" FORCE)
|
|
set(PCRE2_BUILD_PCRE2GREP OFF CACHE BOOL "" FORCE)
|
|
set(PCRE2_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
|
set(PCRE2_DEBUG OFF CACHE STRING "" FORCE)
|
|
set(PCRE2_REBUILD_CHARTABLES OFF CACHE BOOL "" FORCE)
|
|
set(PCRE2_SHOW_REPORT OFF CACHE BOOL "" FORCE)
|
|
set(PCRE2_STATIC_PIC OFF CACHE BOOL "" FORCE)
|
|
set(PCRE2_SUPPORT_JIT OFF CACHE BOOL "" FORCE)
|
|
set(PCRE2_SUPPORT_UNICODE ON CACHE BOOL "" FORCE)
|
|
|
|
add_subdirectory("${PCRE2_SOURCE_DIR}" pcre2-source EXCLUDE_FROM_ALL)
|
|
|
|
add_executable(regex-pcre2-pack pcre2_bridge.c)
|
|
target_compile_features(regex-pcre2-pack PRIVATE c_std_11)
|
|
target_compile_definitions(regex-pcre2-pack PRIVATE PCRE2_CODE_UNIT_WIDTH=8)
|
|
target_compile_options(
|
|
regex-pcre2-pack
|
|
PRIVATE
|
|
-O3
|
|
-fno-ident
|
|
-fvisibility=hidden
|
|
)
|
|
target_link_libraries(regex-pcre2-pack PRIVATE pcre2-8-static)
|
|
target_link_options(
|
|
regex-pcre2-pack
|
|
PRIVATE
|
|
-O3
|
|
--no-entry
|
|
"SHELL:-s ALLOW_MEMORY_GROWTH=1"
|
|
"SHELL:-s ASSERTIONS=0"
|
|
"SHELL:-s ENVIRONMENT=web,worker,node"
|
|
"SHELL:-s EXPORT_ES6=1"
|
|
"SHELL:-s EXPORT_NAME=createRegexPcre2"
|
|
"SHELL:-s EXPORTED_FUNCTIONS=['_regex_pcre2_bridge_abi_version','_regex_pcre2_compile_probe','_regex_pcre2_config_flags','_regex_pcre2_error_message','_regex_pcre2_execute','_regex_pcre2_self_test','_regex_pcre2_substitute','_regex_pcre2_trace','_regex_pcre2_version','_malloc','_free']"
|
|
"SHELL:-s EXPORTED_RUNTIME_METHODS=['HEAPU8','UTF8ToString']"
|
|
"SHELL:-s FILESYSTEM=0"
|
|
"SHELL:-s INITIAL_MEMORY=16777216"
|
|
"SHELL:-s MALLOC=emmalloc"
|
|
"SHELL:-s MAXIMUM_MEMORY=268435456"
|
|
"SHELL:-s MODULARIZE=1"
|
|
"SHELL:-s NO_EXIT_RUNTIME=1"
|
|
"SHELL:-s STRICT=1"
|
|
)
|
|
set_target_properties(
|
|
regex-pcre2-pack
|
|
PROPERTIES
|
|
OUTPUT_NAME pcre2
|
|
RUNTIME_OUTPUT_DIRECTORY "${REGEX_PCRE2_OUTPUT_DIR}"
|
|
SUFFIX ".mjs"
|
|
)
|