Blame CMakeLists.txt

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)