aboutsummaryrefslogtreecommitdiffstats
path: root/roms/edk2/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma/CMakeLists.txt
diff options
context:
space:
mode:
authorAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
committerAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
commitaf1a266670d040d2f4083ff309d732d648afba2a (patch)
tree2fc46203448ddcc6f81546d379abfaeb323575e9 /roms/edk2/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma/CMakeLists.txt
parente02cda008591317b1625707ff8e115a4841aa889 (diff)
Add submodule dependency filesHEADmaster
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'roms/edk2/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma/CMakeLists.txt')
-rw-r--r--roms/edk2/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma/CMakeLists.txt180
1 files changed, 180 insertions, 0 deletions
diff --git a/roms/edk2/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma/CMakeLists.txt b/roms/edk2/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma/CMakeLists.txt
new file mode 100644
index 000000000..bce888a29
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma/CMakeLists.txt
@@ -0,0 +1,180 @@
+cmake_minimum_required(VERSION 3.1)
+project(oniguruma
+ VERSION 6.9.4
+ LANGUAGES C)
+
+set(PACKAGE onig)
+set(PACKAGE_VERSION ${PROJECT_VERSION})
+
+option(BUILD_SHARED_LIBS "Build shared libraries" ON)
+option(ENABLE_POSIX_API "Include POSIX API" ON)
+if(MSVC)
+ option(MSVC_STATIC_RUNTIME "Build with static runtime" OFF)
+endif()
+
+set(USE_CRNL_AS_LINE_TERMINATOR 0)
+set(VERSION ${PACKAGE_VERSION})
+
+include(CheckCSourceCompiles)
+include(CheckIncludeFiles)
+include(CheckFunctionExists)
+include(CheckSymbolExists)
+include(CheckTypeSize)
+include(TestBigEndian)
+
+check_function_exists(alloca HAVE_ALLOCA)
+check_include_files(alloca.h HAVE_ALLOCA_H)
+check_include_files(stdint.h HAVE_STDINT_H)
+check_include_files(sys/times.h HAVE_SYS_TIMES_H)
+check_include_files(sys/time.h HAVE_SYS_TIME_H)
+check_include_files(sys/types.h HAVE_SYS_TYPES_H)
+check_include_files(unistd.h HAVE_UNISTD_H)
+check_include_files(inttypes.h HAVE_INTTYPES_H)
+check_type_size(int SIZEOF_INT)
+check_type_size(long SIZEOF_LONG)
+
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
+
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/oniguruma.pc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/oniguruma.pc @ONLY)
+
+set(_SRCS src/regint.h src/regparse.h src/regenc.h src/st.h
+ src/regerror.c src/regparse.c src/regext.c src/regcomp.c src/regexec.c
+ src/reggnu.c src/regenc.c src/regsyntax.c src/regtrav.c src/regversion.c
+ src/st.c src/onig_init.c
+ src/unicode.c src/ascii.c src/utf8.c src/utf16_be.c src/utf16_le.c
+ src/utf32_be.c src/utf32_le.c src/euc_jp.c src/sjis.c src/iso8859_1.c
+ src/iso8859_2.c src/iso8859_3.c src/iso8859_4.c src/iso8859_5.c
+ src/iso8859_6.c src/iso8859_7.c src/iso8859_8.c src/iso8859_9.c
+ src/iso8859_10.c src/iso8859_11.c src/iso8859_13.c src/iso8859_14.c
+ src/iso8859_15.c src/iso8859_16.c src/euc_tw.c src/euc_kr.c src/big5.c
+ src/gb18030.c src/koi8_r.c src/cp1251.c
+ src/euc_jp_prop.c src/sjis_prop.c
+ src/unicode_unfold_key.c
+ src/unicode_fold1_key.c src/unicode_fold2_key.c src/unicode_fold3_key.c)
+
+set(_INST_HEADERS src/oniguruma.h src/oniggnu.h)
+
+if(ENABLE_POSIX_API)
+ set(_SRCS ${_SRCS} src/regposix.c src/regposerr.c)
+ set(_INST_HEADERS ${_INST_HEADERS} src/onigposix.h)
+endif()
+
+add_library(onig ${_SRCS})
+target_include_directories(onig PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
+
+target_compile_definitions(onig PUBLIC
+ $<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:ONIG_STATIC>)
+
+if(MSVC)
+ target_compile_options(onig PRIVATE
+ #/W4
+ )
+ if(MSVC_STATIC_RUNTIME)
+ target_compile_options(onig PRIVATE
+ $<$<CONFIG:Release>:/MT>
+ $<$<CONFIG:Debug>:/MTd>
+ $<$<CONFIG:MinSizeRel>:/MT>
+ $<$<CONFIG:RelWithDebgInfo>:/MTd>
+ )
+ endif()
+elseif(CMAKE_COMPILER_IS_GNUCC)
+ target_compile_options(onig PRIVATE
+ -Wall
+ )
+endif()
+
+
+# Installation (https://github.com/forexample/package-example)
+
+# Introduce variables:
+# * CMAKE_INSTALL_LIBDIR
+# * CMAKE_INSTALL_BINDIR
+# * CMAKE_INSTALL_INCLUDEDIR
+include(GNUInstallDirs)
+
+# Layout. This works for all platforms:
+# * <prefix>/lib*/cmake/<PROJECT-NAME>
+# * <prefix>/lib*/
+# * <prefix>/include/
+set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
+
+set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
+
+# Configuration
+set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
+set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
+set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
+set(namespace "${PROJECT_NAME}::")
+
+# Include module with fuction 'write_basic_package_version_file'
+include(CMakePackageConfigHelpers)
+
+# Configure '<PROJECT-NAME>ConfigVersion.cmake'
+# Use:
+# * PROJECT_VERSION
+write_basic_package_version_file(
+ "${version_config}" COMPATIBILITY SameMajorVersion
+)
+
+# Configure '<PROJECT-NAME>Config.cmake'
+# Use variables:
+# * TARGETS_EXPORT_NAME
+# * PROJECT_NAME
+configure_package_config_file(
+ "cmake/Config.cmake.in"
+ "${project_config}"
+ INSTALL_DESTINATION "${config_install_dir}"
+)
+
+# Targets:
+# * <prefix>/lib/libonig.a
+# * header location after install: <prefix>/include/
+# * headers can be included by C code `#include <oniguruma.h>`
+install(
+ TARGETS onig
+ EXPORT "${TARGETS_EXPORT_NAME}"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
+)
+
+# Headers:
+# * src/oniguruma.h -> <prefix>/include/oniguruma
+install(
+ FILES ${_INST_HEADERS}
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
+)
+
+# Config
+# * <prefix>/lib/cmake/oniguruma/onigurumaConfig.cmake
+# * <prefix>/lib/cmake/oniguruma/onigurumaConfigVersion.cmake
+install(
+ FILES "${project_config}" "${version_config}"
+ DESTINATION "${config_install_dir}"
+)
+
+# Config
+# * <prefix>/lib/cmake/oniguruma/onigurumaTargets.cmake
+install(
+ EXPORT "${TARGETS_EXPORT_NAME}"
+ NAMESPACE "${namespace}"
+ DESTINATION "${config_install_dir}"
+)
+
+# Documentation (uses onig not oniguruma for directory)
+install(FILES doc/API doc/API.ja doc/RE doc/RE.ja doc/FAQ doc/FAQ.ja
+ doc/CALLOUTS.BUILTIN doc/CALLOUTS.BUILTIN.ja
+ doc/CALLOUTS.API doc/CALLOUTS.API.ja
+ doc/UNICODE_PROPERTIES
+ DESTINATION "${CMAKE_INSTALL_DATADIR}/${PACKAGE}")
+
+# Other files (uses onig not oniguruma for directory)
+install(FILES AUTHORS COPYING HISTORY README.md
+ DESTINATION "${CMAKE_INSTALL_DATADIR}/${PACKAGE}")
+
+# pkg-config
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/oniguruma.pc
+ DESTINATION lib/pkgconfig)