|
Packit Service |
bd74e6 |
cmake_minimum_required(VERSION 3.1)
|
|
Packit Service |
bd74e6 |
project(oniguruma VERSION 6.8.2)
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
set(PACKAGE onig)
|
|
Packit Service |
bd74e6 |
set(PACKAGE_VERSION ${PROJECT_VERSION})
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
option(BUILD_SHARED_LIBS "Build shared libraries" ON)
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
set(USE_CRNL_AS_LINE_TERMINATOR 0)
|
|
Packit Service |
bd74e6 |
set(VERSION ${PACKAGE_VERSION})
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
if(MSVC)
|
|
Packit Service |
bd74e6 |
# Force to always compile with W4
|
|
Packit Service |
bd74e6 |
if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
|
|
Packit Service |
bd74e6 |
string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
|
Packit Service |
bd74e6 |
else()
|
|
Packit Service |
bd74e6 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
|
|
Packit Service |
bd74e6 |
endif()
|
|
Packit Service |
bd74e6 |
elseif(CMAKE_COMPILER_IS_GNUCXX)
|
|
Packit Service |
bd74e6 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
|
|
Packit Service |
bd74e6 |
elseif(CMAKE_COMPILER_IS_GNUCC)
|
|
Packit Service |
bd74e6 |
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
|
|
Packit Service |
bd74e6 |
endif()
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
include(CheckCSourceCompiles)
|
|
Packit Service |
bd74e6 |
include(CheckIncludeFiles)
|
|
Packit Service |
bd74e6 |
include(CheckFunctionExists)
|
|
Packit Service |
bd74e6 |
include(CheckSymbolExists)
|
|
Packit Service |
bd74e6 |
include(CheckTypeSize)
|
|
Packit Service |
bd74e6 |
include(TestBigEndian)
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
check_function_exists(alloca HAVE_ALLOCA)
|
|
Packit Service |
bd74e6 |
check_include_files(alloca.h HAVE_ALLOCA_H)
|
|
Packit Service |
bd74e6 |
set(HAVE_PROTOTYPES 1)
|
|
Packit Service |
bd74e6 |
check_include_files(stdarg.h HAVE_STDARG_PROTOTYPES)
|
|
Packit Service |
bd74e6 |
check_include_files(stdint.h HAVE_STDINT_H)
|
|
Packit Service |
bd74e6 |
check_include_files(stdlib.h HAVE_STDLIB_H)
|
|
Packit Service |
bd74e6 |
check_include_files(strings.h HAVE_STRINGS_H)
|
|
Packit Service |
bd74e6 |
check_include_files(string.h HAVE_STRING_H)
|
|
Packit Service |
bd74e6 |
check_include_files(limits.h HAVE_LIMITS_H)
|
|
Packit Service |
bd74e6 |
check_include_files(sys/times.h HAVE_SYS_TIMES_H)
|
|
Packit Service |
bd74e6 |
check_include_files(sys/time.h HAVE_SYS_TIME_H)
|
|
Packit Service |
bd74e6 |
check_include_files(sys/types.h HAVE_SYS_TYPES_H)
|
|
Packit Service |
bd74e6 |
check_include_files(unistd.h HAVE_UNISTD_H)
|
|
Packit Service |
bd74e6 |
check_include_files(inttypes.h HAVE_INTTYPES_H)
|
|
Packit Service |
bd74e6 |
check_type_size(int SIZEOF_INT)
|
|
Packit Service |
bd74e6 |
check_type_size(long SIZEOF_LONG)
|
|
Packit Service |
bd74e6 |
check_type_size(short SIZEOF_SHORT)
|
|
Packit Service |
bd74e6 |
check_include_files("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS)
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/oniguruma.pc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/oniguruma.pc @ONLY)
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
set(_SRCS src/regint.h src/regparse.h src/regenc.h src/st.h
|
|
Packit Service |
bd74e6 |
src/regerror.c src/regparse.c src/regext.c src/regcomp.c src/regexec.c
|
|
Packit Service |
bd74e6 |
src/reggnu.c src/regenc.c src/regsyntax.c src/regtrav.c src/regversion.c
|
|
Packit Service |
bd74e6 |
src/st.c src/regposix.c src/regposerr.c src/onig_init.c
|
|
Packit Service |
bd74e6 |
src/unicode.c src/ascii.c src/utf8.c src/utf16_be.c src/utf16_le.c
|
|
Packit Service |
bd74e6 |
src/utf32_be.c src/utf32_le.c src/euc_jp.c src/sjis.c src/iso8859_1.c
|
|
Packit Service |
bd74e6 |
src/iso8859_2.c src/iso8859_3.c src/iso8859_4.c src/iso8859_5.c
|
|
Packit Service |
bd74e6 |
src/iso8859_6.c src/iso8859_7.c src/iso8859_8.c src/iso8859_9.c
|
|
Packit Service |
bd74e6 |
src/iso8859_10.c src/iso8859_11.c src/iso8859_13.c src/iso8859_14.c
|
|
Packit Service |
bd74e6 |
src/iso8859_15.c src/iso8859_16.c src/euc_tw.c src/euc_kr.c src/big5.c
|
|
Packit Service |
bd74e6 |
src/gb18030.c src/koi8_r.c src/cp1251.c
|
|
Packit Service |
bd74e6 |
src/euc_jp_prop.c src/sjis_prop.c
|
|
Packit Service |
bd74e6 |
src/unicode_unfold_key.c
|
|
Packit Service |
bd74e6 |
src/unicode_fold1_key.c src/unicode_fold2_key.c src/unicode_fold3_key.c)
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
add_library(onig ${_SRCS})
|
|
Packit Service |
bd74e6 |
target_include_directories(onig PUBLIC
|
|
Packit Service |
bd74e6 |
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
|
|
Packit Service |
bd74e6 |
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
# Installation (https://github.com/forexample/package-example)
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
# Introduce variables:
|
|
Packit Service |
bd74e6 |
# * CMAKE_INSTALL_LIBDIR
|
|
Packit Service |
bd74e6 |
# * CMAKE_INSTALL_BINDIR
|
|
Packit Service |
bd74e6 |
# * CMAKE_INSTALL_INCLUDEDIR
|
|
Packit Service |
bd74e6 |
include(GNUInstallDirs)
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
# Layout. This works for all platforms:
|
|
Packit Service |
bd74e6 |
# * <prefix>/lib*/cmake/<PROJECT-NAME>
|
|
Packit Service |
bd74e6 |
# * <prefix>/lib*/
|
|
Packit Service |
bd74e6 |
# * <prefix>/include/
|
|
Packit Service |
bd74e6 |
set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
# Configuration
|
|
Packit Service |
bd74e6 |
set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
|
|
Packit Service |
bd74e6 |
set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
|
|
Packit Service |
bd74e6 |
set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
|
|
Packit Service |
bd74e6 |
set(namespace "${PROJECT_NAME}::")
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
# Include module with fuction 'write_basic_package_version_file'
|
|
Packit Service |
bd74e6 |
include(CMakePackageConfigHelpers)
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
# Configure '<PROJECT-NAME>ConfigVersion.cmake'
|
|
Packit Service |
bd74e6 |
# Use:
|
|
Packit Service |
bd74e6 |
# * PROJECT_VERSION
|
|
Packit Service |
bd74e6 |
write_basic_package_version_file(
|
|
Packit Service |
bd74e6 |
"${version_config}" COMPATIBILITY SameMajorVersion
|
|
Packit Service |
bd74e6 |
)
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
# Configure '<PROJECT-NAME>Config.cmake'
|
|
Packit Service |
bd74e6 |
# Use variables:
|
|
Packit Service |
bd74e6 |
# * TARGETS_EXPORT_NAME
|
|
Packit Service |
bd74e6 |
# * PROJECT_NAME
|
|
Packit Service |
bd74e6 |
configure_package_config_file(
|
|
Packit Service |
bd74e6 |
"cmake/Config.cmake.in"
|
|
Packit Service |
bd74e6 |
"${project_config}"
|
|
Packit Service |
bd74e6 |
INSTALL_DESTINATION "${config_install_dir}"
|
|
Packit Service |
bd74e6 |
)
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
# Targets:
|
|
Packit Service |
bd74e6 |
# * <prefix>/lib/libonig.a
|
|
Packit Service |
bd74e6 |
# * header location after install: <prefix>/include/
|
|
Packit Service |
bd74e6 |
# * headers can be included by C code `#include <oniguruma.h>`
|
|
Packit Service |
bd74e6 |
install(
|
|
Packit Service |
bd74e6 |
TARGETS onig
|
|
Packit Service |
bd74e6 |
EXPORT "${TARGETS_EXPORT_NAME}"
|
|
Packit Service |
bd74e6 |
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
|
Packit Service |
bd74e6 |
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
|
Packit Service |
bd74e6 |
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
|
Packit Service |
bd74e6 |
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
|
|
Packit Service |
bd74e6 |
)
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
# Headers:
|
|
Packit Service |
bd74e6 |
# * src/oniguruma.h -> <prefix>/include/oniguruma
|
|
Packit Service |
bd74e6 |
install(
|
|
Packit Service |
bd74e6 |
FILES src/oniguruma.h src/onigposix.h src/oniggnu.h
|
|
Packit Service |
bd74e6 |
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
|
|
Packit Service |
bd74e6 |
)
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
# Config
|
|
Packit Service |
bd74e6 |
# * <prefix>/lib/cmake/oniguruma/onigurumaConfig.cmake
|
|
Packit Service |
bd74e6 |
# * <prefix>/lib/cmake/oniguruma/onigurumaConfigVersion.cmake
|
|
Packit Service |
bd74e6 |
install(
|
|
Packit Service |
bd74e6 |
FILES "${project_config}" "${version_config}"
|
|
Packit Service |
bd74e6 |
DESTINATION "${config_install_dir}"
|
|
Packit Service |
bd74e6 |
)
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
# Config
|
|
Packit Service |
bd74e6 |
# * <prefix>/lib/cmake/oniguruma/onigurumaTargets.cmake
|
|
Packit Service |
bd74e6 |
install(
|
|
Packit Service |
bd74e6 |
EXPORT "${TARGETS_EXPORT_NAME}"
|
|
Packit Service |
bd74e6 |
NAMESPACE "${namespace}"
|
|
Packit Service |
bd74e6 |
DESTINATION "${config_install_dir}"
|
|
Packit Service |
bd74e6 |
)
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
# Documentation (uses onig not oniguruma for directory)
|
|
Packit Service |
bd74e6 |
install(FILES doc/API doc/API.ja doc/RE doc/RE.ja doc/FAQ doc/FAQ.ja
|
|
Packit Service |
bd74e6 |
doc/CALLOUTS.BUILTIN doc/CALLOUTS.BUILTIN.ja
|
|
Packit Service |
bd74e6 |
doc/CALLOUTS.API doc/CALLOUTS.API.ja
|
|
Packit Service |
bd74e6 |
doc/UNICODE_PROPERTIES
|
|
Packit Service |
bd74e6 |
DESTINATION "${CMAKE_INSTALL_DATADIR}/${PACKAGE_NAME}")
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
# Other files (uses onig not oniguruma for directory)
|
|
Packit Service |
bd74e6 |
install(FILES AUTHORS COPYING HISTORY README.md
|
|
Packit Service |
bd74e6 |
DESTINATION "${CMAKE_INSTALL_DATADIR}/${PACKAGE_NAME}")
|
|
Packit Service |
bd74e6 |
|
|
Packit Service |
bd74e6 |
# pkg-config
|
|
Packit Service |
bd74e6 |
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/oniguruma.pc
|
|
Packit Service |
bd74e6 |
DESTINATION lib/pkgconfig)
|