summaryrefslogtreecommitdiffstats
path: root/fluent-bit/lib/onigmo/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'fluent-bit/lib/onigmo/CMakeLists.txt')
-rw-r--r--fluent-bit/lib/onigmo/CMakeLists.txt341
1 files changed, 341 insertions, 0 deletions
diff --git a/fluent-bit/lib/onigmo/CMakeLists.txt b/fluent-bit/lib/onigmo/CMakeLists.txt
new file mode 100644
index 000000000..66865130a
--- /dev/null
+++ b/fluent-bit/lib/onigmo/CMakeLists.txt
@@ -0,0 +1,341 @@
+cmake_minimum_required(VERSION 3.4)
+project(onigmo C)
+
+# Onigmo Version
+set(ONIGMO_VERSION_MAJOR 6)
+set(ONIGMO_VERSION_MINOR 2)
+set(ONIGMO_VERSION_PATCH 0)
+set(ONIGMO_VERSION_STR "${ONIGMO_VERSION_MAJOR}.${ONIGMO_VERSION_MINOR}.${ONIGMO_VERSION_PATCH}")
+
+set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+
+# Define macro to identify Windows system (without Cygwin)
+if(CMAKE_SYSTEM_NAME MATCHES "Windows")
+ set(ONIGMO_SYSTEM_WINDOWS On)
+ add_definitions(-DONIGMO_SYSTEM_WINDOWS)
+endif()
+
+# Define macro to identify macOS system
+if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
+ set(ONIGMO_SYSTEM_MACOS On)
+ add_definitions(-DONIGMO_SYSTEM_MACOS)
+endif()
+
+# Define macro to identify Linux system
+if(CMAKE_SYSTEM_NAME MATCHES "Linux")
+ set(ONIGMO_SYSTEM_LINUX On)
+ add_definitions(-DONIGMO_SYSTEM_LINUX)
+endif()
+
+# Update CFLAGS
+if (MSVC)
+ add_definitions(-D_CRT_SECURE_NO_WARNINGS)
+ add_definitions(-D_CRT_NONSTDC_NO_WARNINGS)
+
+ # Use custom CFLAGS for MSVC
+ #
+ # /Zi ...... Generate pdb files.
+ # /MT ...... Static link C runtimes.
+ # /wd4711 .. C4711 (function selected for inline expansion)
+ # /wd4100 .. C4100 (unreferenced formal parameter)
+ # /wd5045 .. C5045 (Spectre mitigation)
+ #
+ set(CMAKE_C_FLAGS "/DWIN32 /D_WINDOWS /DNDEBUG /O2 /Zi /wd4100 /wd4711 /wd5045")
+ set(CMAKE_EXE_LINKER_FLAGS "/Debug /INCREMENTAL:NO")
+ set(CMAKE_BUILD_TYPE None)
+
+ # We need this line in order to link libonigmo.lib statically.
+ # Read onigmo/README for details.
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DEXPORT -DHAVE_CONFIG_H")
+ # Use add_compile_options() to set /MT since Visual Studio
+ # Generator does not notice /MT in CMAKE_C_FLAGS.
+ add_compile_options(/MT)
+else()
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
+endif()
+
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__FLB_FILENAME__=__FILE__")
+
+include(GNUInstallDirs)
+include(ExternalProject)
+include(CheckTypeSize)
+include(CheckIncludeFile)
+include(CheckSymbolExists)
+include(CheckCSourceCompiles)
+
+# Output paths
+set(ONIGMO_ROOT "${CMAKE_CURRENT_SOURCE_DIR}")
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib")
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/library")
+
+set(ONIGMO_OUT_NAME "onigmo")
+set(ONIGMO_PACKAGE_STRING "${ONIGMO_OUT_NAME} ${ONIGMO_VERSION_STR}")
+
+# For config.h
+set(PACKAGE_NAME ${ONIGMO_OUT_NAME})
+set(PACKAGE_TARNAME ${ONIGMO_OUT_NAME})
+set(PACKAGE_VERSION ${ONIGMO_VERSION_STR})
+set(PACKAGE_STRING ${ONIGMO_PACKAGE_STRING})
+set(PACKAGE_BUGREPORT "")
+set(PACKAGE_URL "")
+
+# Build Options
+option(USE_COMBINATION_EXPLOSION_CHECK "Enable combination explosion check" No)
+option(USE_CRNL_AS_LINE_TERMINATOR "Enable CR+NL as line terminator" No)
+option(ONIGMO_SHARED_LIB "Enable to build shared library" Yes)
+option(ONIGMO_CTESTS "Enable testing with ctest" Yes)
+option(ONIGMO_CTESTS_SAMPLE "Enable testing with ctest on sample" Yes)
+option(ONIGMO_PYTHON_TESTS "Enable testing with python tests" Yes)
+option(ONIGMO_MACOS_DEFAULTS "Build with predefined macOS settings" Yes)
+
+if(USE_COMBINATION_EXPLOSION_CHECK)
+ add_definitions(-DUSE_COMBINATION_EXPLOSION_CHECK=1)
+endif()
+
+if(USE_CRNL_AS_LINE_TERMINATOR)
+ add_definitions(-DUSE_CRNL_AS_LINE_TERMINATOR=1)
+endif()
+
+# Search python executables
+if(ONIGMO_SYSTEM_WINDOWS)
+ # On Windows, we need to prioritize for Python for Windows installer installed python.
+ find_program(PYTHON_EXECUTABLE "python" "python3" "python2")
+else()
+ find_program(PYTHON_EXECUTABLE "python3" "python" "python2")
+endif()
+message(STATUS "Using python executable is: ${PYTHON_EXECUTABLE}")
+
+# Tweak build targets for macOS
+if(ONIGMO_SYSTEM_MACOS)
+ include(cmake/macos-setup.cmake)
+endif()
+
+check_type_size(int SIZEOF_INT)
+check_type_size(short SIZEOF_SHORT)
+check_type_size(long SIZEOF_LONG)
+check_type_size(void* SIZEOF_VOIDP)
+check_type_size("long long" SIZEOF_LONG_LONG)
+check_type_size("size_t" SIZEOF_SIZE_T)
+
+# AC_HEADERS_STDC
+check_c_source_compiles("
+ #include <stdlib.h>
+ #include <stdarg.h>
+ #include <string.h>
+ #include <float.h>
+ int main() {
+ return 0;
+ }" STDC_HEADERS)
+if(STDC_HEADERS)
+ add_definitions(-DSTDC_HEADERS=1)
+endif()
+
+check_include_file(dlfcn.h HAVE_DLFCN_H)
+check_include_file(inttypes.h HAVE_INTTYPES_H)
+check_include_file(memory.h HAVE_MEMORY_H)
+check_include_file(stdint.h HAVE_STDINT_H)
+check_include_file(stdlib.h HAVE_STDLIB_H)
+check_include_file(strings.h HAVE_STRINGS_H)
+check_include_file(string.h HAVE_STRING_H)
+check_include_file(sys/stat.h HAVE_SYS_STAT_H)
+
+check_c_source_compiles("
+ #include <sys/types.h>
+ #include <sys/time.h>
+ #include <time.h>
+ int main() {
+ struct tm *tm;
+ return 0;
+ }" TIME_WITH_SYS_TIME)
+if(TIME_WITH_SYS_TIME)
+ add_definitions(-DTIME_WITH_SYS_TIME=1)
+endif()
+
+check_include_file(sys/time.h HAVE_SYS_TIME_H)
+check_include_file(sys/times.h HAVE_SYS_TIMES_H)
+check_include_file(unistd.h HAVE_UNISTD_H)
+
+check_symbol_exists(alloca alloca.h HAVE_ALLOCA_H)
+check_symbol_exists(memcmp string.h HAVE_MEMCMP)
+
+
+# Installation Directories
+# ========================
+if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
+ set(ONIGMO_INSTALL_BINDIR "bin")
+ set(ONIGMO_INSTALL_LIBDIR "lib")
+ set(ONIGMO_INSTALL_CONFDIR "conf")
+ set(ONIGMO_INSTALL_DATADIR "share")
+ set(ONIGMO_INSTALL_INCLUDEDIR "include")
+else()
+ set(ONIGMO_INSTALL_BINDIR ${CMAKE_INSTALL_FULL_BINDIR})
+ set(ONIGMO_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}")
+ set(ONIGMO_INSTALL_CONFDIR "${CMAKE_INSTALL_SYSCONFDIR}/${ONIGMO_OUT_NAME}/")
+ set(ONIGMO_INSTALL_DATADIR "${CMAKE_INSTALL_PREFIX}/share")
+ set(ONIGMO_INSTALL_INCLUDEDIR "${CMAKE_INSTALL_PREFIX}/include")
+endif()
+
+configure_file(${ONIGMO_ROOT}/config.h.cmake ${ONIGMO_ROOT}/config.h)
+configure_file(${ONIGMO_ROOT}/onigmo.pc.cmake ${ONIGMO_ROOT}/onigmo.pc @ONLY)
+
+include_directories(${ONIGMO_ROOT}
+ ${ONIGMO_ROOT}/enc/unicode/
+ ${ONIGMO_ROOT}/enc/
+ )
+
+# Source
+set(src
+ ${src}
+ regerror.c
+ regparse.c
+ regext.c
+ regcomp.c
+ regexec.c
+ reggnu.c
+ regenc.c
+ regsyntax.c
+ regtrav.c
+ regversion.c
+ st.c
+ regposix.c
+ regposerr.c
+ enc/unicode.c
+ enc/ascii.c
+ enc/utf_8.c
+ enc/utf_16be.c
+ enc/utf_16le.c
+ enc/utf_32be.c
+ enc/utf_32le.c
+ enc/euc_jp.c
+ enc/shift_jis.c
+ enc/windows_31j.c
+ enc/jis/props.kwd
+ enc/iso_8859.h
+ enc/iso_8859_1.c
+ enc/iso_8859_2.c
+ enc/iso_8859_3.c
+ enc/iso_8859_4.c
+ enc/iso_8859_5.c
+ enc/iso_8859_6.c
+ enc/iso_8859_7.c
+ enc/iso_8859_8.c
+ enc/iso_8859_9.c
+ enc/iso_8859_10.c
+ enc/iso_8859_11.c
+ enc/iso_8859_13.c
+ enc/iso_8859_14.c
+ enc/iso_8859_15.c
+ enc/iso_8859_16.c
+ enc/euc_tw.c
+ enc/euc_kr.c
+ enc/big5.c
+ enc/gb18030.c
+ enc/koi8_r.c
+ enc/koi8_u.c
+ enc/windows_1250.c
+ enc/windows_1251.c
+ enc/windows_1252.c
+ enc/windows_1253.c
+ enc/windows_1254.c
+ enc/windows_1257.c
+ )
+
+# Static Library
+add_library(onigmo-static STATIC ${src})
+
+# Shared Library
+if(ONIGMO_SHARED_LIB)
+ add_library(onigmo-shared SHARED ${src})
+ set_target_properties(onigmo-shared
+ PROPERTIES OUTPUT_NAME onigmo
+ WINDOWS_EXPORT_ALL_SYMBOLS ON)
+
+ if (MSVC)
+ set_target_properties(onigmo-shared
+ PROPERTIES PDB_NAME onigmo.dll)
+ target_link_options(onigmo-shared
+ PUBLIC /pdb:$<TARGET_PDB_FILE:onigmo-shared>
+ PRIVATE /LTCG)
+ endif()
+
+ # Library install routines
+ install(TARGETS onigmo-shared
+ LIBRARY DESTINATION ${ONIGMO_INSTALL_LIBDIR}
+ COMPONENT library
+ RUNTIME DESTINATION ${ONIGMO_INSTALL_BINDIR})
+endif()
+
+# Test Source
+
+if(ONIGMO_CTESTS)
+ enable_testing()
+ if(ONIGMO_SYSTEM_WINDOWS)
+ add_executable(testc win32/testc.c)
+ target_compile_options(testc PUBLIC -DONIG_EXTERN=extern)
+ else()
+ add_executable(testc testc.c)
+ endif()
+ add_test(NAME testc COMMAND testc)
+ target_link_libraries(testc onigmo-static)
+
+ if(ONIGMO_SYSTEM_WINDOWS)
+ add_executable(testp win32/testc.c)
+ else()
+ add_executable(testp testc.c)
+ endif()
+ target_compile_options(testp PUBLIC -DPOSIX_TEST)
+ add_test(NAME testp COMMAND testp)
+ target_link_libraries(testp onigmo-static)
+
+ add_executable(testu testu.c)
+ add_test(NAME testu COMMAND testu)
+ target_link_libraries(testu onigmo-static)
+
+ add_executable(test_enc_utf8 test_enc_utf8.c)
+ add_test(NAME test_enc_utf8 COMMAND test_enc_utf8)
+ target_link_libraries(test_enc_utf8 onigmo-static)
+endif()
+
+if(ONIGMO_CTESTS_SAMPLE)
+ enable_testing()
+ macro(SAMPLE_TEST_ADD name)
+ add_executable(${name} sample/${name}.c)
+ add_test(NAME ${name} COMMAND ${name})
+ target_link_libraries(${name} onigmo-static)
+ endmacro()
+ SAMPLE_TEST_ADD(encode)
+ SAMPLE_TEST_ADD(listcap)
+ SAMPLE_TEST_ADD(names)
+ SAMPLE_TEST_ADD(posix)
+ SAMPLE_TEST_ADD(simple)
+ SAMPLE_TEST_ADD(sql)
+ SAMPLE_TEST_ADD(syntax)
+ SAMPLE_TEST_ADD(scan)
+ SAMPLE_TEST_ADD(crnl)
+endif()
+
+if(PYTHON_EXECUTABLE AND ONIGMO_PYTHON_TESTS AND ONIGMO_SHARED_LIB)
+ enable_testing()
+ set(TEST_WORK_DIR "")
+ if (ONIGMO_SYSTEM_LINUX)
+ set(TEST_LIBRARY_PATH_ENV "LD_LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}/lib")
+ elseif(ONIGMO_SYSTEM_MACOS)
+ set(TEST_LIBRARY_PATH_ENV "DYLD_LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}/lib")
+ elseif(ONIGMO_SYSTEM_WINDOWS)
+ set(TEST_WORK_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin)
+ endif()
+ macro(PYTHON_TEST_ADD name encoding)
+ add_test(NAME ${name} COMMAND ${PYTHON_EXECUTABLE} ${ONIGMO_ROOT}/testpy.py ${encoding}
+ WORKING_DIRECTORY ${TEST_WORK_DIR})
+ set_property(TEST ${name} PROPERTY ENVIRONMENT ${TEST_LIBRARY_PATH_ENV})
+ endmacro()
+ PYTHON_TEST_ADD(python-euc-jp EUC-JP)
+ PYTHON_TEST_ADD(python-sjis SJIS)
+ PYTHON_TEST_ADD(python-utf8 UTF-8)
+ PYTHON_TEST_ADD(python-utf16le UTF-16LE)
+ PYTHON_TEST_ADD(python-utf16be UTF-16BE)
+ PYTHON_TEST_ADD(python-utf32le UTF-32LE)
+ PYTHON_TEST_ADD(python-utf32be UTF-32BE)
+endif()