mirror of
https://github.com/bolucat/Archive.git
synced 2026-04-23 00:17:16 +08:00
199 lines
5.8 KiB
CMake
199 lines
5.8 KiB
CMake
|
|
# -------------------------------------------------------------
|
|
# config.h
|
|
|
|
# Use cmake to generate config.h
|
|
include(CheckIncludeFiles)
|
|
include(CheckFunctionExists)
|
|
include(CheckSymbolExists)
|
|
include(CheckLibraryExists)
|
|
include(CheckTypeSize)
|
|
include(CheckCSourceCompiles)
|
|
include(CheckCCompilerFlag)
|
|
|
|
# Define if building universal (internal helper macro)
|
|
# AC_APPLE_UNIVERSAL_BUILD
|
|
|
|
# Set CONNECT_IN_PROGRESS based on platform
|
|
if(MINGW)
|
|
set(CONNECT_IN_PROGRESS "WSAEWOULDBLOCK")
|
|
else()
|
|
set(CONNECT_IN_PROGRESS "EINPROGRESS")
|
|
endif()
|
|
|
|
if (CMAKE_SYSTEM_NAME STREQUAL Darwin)
|
|
set(CMAKE_REQUIRED_INCLUDES "/usr/local/include" "/usr/include" "/opt/homebrew/include")
|
|
endif ()
|
|
|
|
check_include_files(dlfcn.h HAVE_DLFCN_H)
|
|
check_include_files(ev.h HAVE_EV_H)
|
|
check_include_files(fcntl.h HAVE_FCNTL_H)
|
|
check_function_exists(fork HAVE_FORK)
|
|
check_function_exists(getpwnam_r HAVE_GETPWNAM_R)
|
|
check_function_exists(inet_ntop HAVE_INET_NTOP)
|
|
check_include_files(inttypes.h HAVE_INTTYPES_H)
|
|
set(HAVE_IPv6 1)
|
|
check_include_files(langinfo.h HAVE_LANGINFO_H)
|
|
set(HAVE_LIBPCRE 1)
|
|
check_library_exists(socket socket "" HAVE_LIBSOCKET)
|
|
check_include_files(limits.h HAVE_LIMITS_H)
|
|
check_include_files(linux/if.h HAVE_LINUX_IF_H)
|
|
check_include_files(linux/netfilter_ipv4.h HAVE_LINUX_NETFILTER_IPV4_H)
|
|
check_include_files(linux/netfilter_ipv6/ip6_tables.h HAVE_LINUX_NETFILTER_IPV6_IP6_TABLES_H)
|
|
check_include_files(locale.h HAVE_LOCALE_H)
|
|
|
|
|
|
check_function_exists(malloc HAVE_MALLOC)
|
|
check_include_files(memory.h HAVE_MEMORY_H)
|
|
check_function_exists(memset HAVE_MEMSET)
|
|
|
|
check_include_files(netdb.h HAVE_NETDB_H)
|
|
check_include_files(netinet/in.h HAVE_NETINET_IN_H)
|
|
if (CYGWIN)
|
|
check_include_files("sys/types.h;netinet/tcp.h" HAVE_NETINET_TCP_H)
|
|
else ()
|
|
check_include_files(netinet/tcp.h HAVE_NETINET_TCP_H)
|
|
endif ()
|
|
check_include_files(linux/tcp.h HAVE_LINUX_TCP_H)
|
|
check_include_files(net/if.h HAVE_NET_IF_H)
|
|
set(CMAKE_REQUIRED_DEFINITIONS_SAVE ${CMAKE_REQUIRED_DEFINITIONS})
|
|
set(CMAKE_REQUIRED_DEFINITIONS "-DPCRE2_CODE_UNIT_WIDTH=8")
|
|
check_include_files(pcre2.h HAVE_PCRE2_H)
|
|
set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS_SAVE})
|
|
check_symbol_exists(PTHREAD_PRIO_INHERIT pthread.h HAVE_PTHREAD_PRIO_INHERIT)
|
|
|
|
check_function_exists(select HAVE_SELECT)
|
|
check_function_exists(setresuid HAVE_SETRESUID)
|
|
check_function_exists(setreuid HAVE_SETREUID)
|
|
check_function_exists(setrlimit HAVE_SETRLIMIT)
|
|
check_function_exists(socket HAVE_SOCKET)
|
|
|
|
check_include_files(stdint.h HAVE_STDINT_H)
|
|
check_include_files(stdlib.h HAVE_STDLIB_H)
|
|
|
|
check_function_exists(strerror HAVE_STRERROR)
|
|
|
|
check_include_files(strings.h HAVE_STRINGS_H)
|
|
check_include_files(string.h HAVE_STRING_H)
|
|
check_include_files(sys/ioctl.h HAVE_SYS_IOCTL_H)
|
|
check_include_files(sys/select.h HAVE_SYS_SELECT_H)
|
|
check_include_files(sys/socket.h HAVE_SYS_SOCKET_H)
|
|
check_include_files(sys/stat.h HAVE_SYS_STAT_H)
|
|
check_include_files(sys/types.h HAVE_SYS_TYPES_H)
|
|
check_include_files(sys/wait.h HAVE_SYS_WAIT_H)
|
|
check_include_files(ares.h HAVE_ARES_H)
|
|
check_include_files(unistd.h HAVE_UNISTD_H)
|
|
check_include_files(arpa/inet.h HAVE_ARPA_INET_H)
|
|
check_include_files(linux/random.h HAVE_LINUX_RANDOM_H)
|
|
|
|
check_function_exists(fork HAVE_FORK)
|
|
check_function_exists(vfork HAVE_VFORK)
|
|
check_include_files(vfork.h HAVE_VFORK_H)
|
|
if (HAVE_VFORK)
|
|
set(HAVE_WORKING_VFORK 1)
|
|
endif ()
|
|
if (HAVE_FORK)
|
|
set(HAVE_WORKING_FORK 1)
|
|
endif ()
|
|
|
|
# Additional function checks
|
|
check_function_exists(get_current_dir_name HAVE_GET_CURRENT_DIR_NAME)
|
|
check_function_exists(posix_memalign HAVE_POSIX_MEMALIGN)
|
|
|
|
# Define to the sub-directory where libtool stores uninstalled libraries.
|
|
set(LT_OBJDIR ".libs/")
|
|
set(NDEBUG 1)
|
|
set(PACKAGE ${PROJECT_NAME})
|
|
set(PACKAGE_BUGREPORT max.c.lv@gmail.com)
|
|
set(PACKAGE_NAME ${PROJECT_NAME})
|
|
set(PACKAGE_VERSION ${PROJECT_VERSION})
|
|
set(PACKAGE_STRING "${PROJECT_NAME} ${PACKAGE_VERSION}")
|
|
set(PACKAGE_TARNAME ${PROJECT_NAME})
|
|
set(PACKAGE_URL "")
|
|
|
|
# PTHREAD_CREATE_JOINABLE
|
|
|
|
# Define as the return type of signal handlers (`int' or `void').
|
|
set(RETSIGTYPE void)
|
|
|
|
# Define to the type of arg 1 for `select'.
|
|
set(SELECT_TYPE_ARG1 int)
|
|
|
|
# Define to the type of args 2, 3 and 4 for `select'.
|
|
set(SELECT_TYPE_ARG234 "(fd_set *)")
|
|
|
|
# Define to the type of arg 5 for `select'.
|
|
set(SELECT_TYPE_ARG5 "(struct timeval *)")
|
|
|
|
# Define to 1 if you have the ANSI C header files.
|
|
set(STDC_HEADERS 1)
|
|
|
|
|
|
check_include_files("sys/time.h;time.h" TIME_WITH_SYS_TIME)
|
|
|
|
|
|
# If the compiler supports a TLS storage class define it to that here
|
|
check_c_source_compiles("
|
|
__thread int tls;
|
|
int main(void) { return 0; }"
|
|
HAVE_GCC_THREAD_LOCAL_STORAGE)
|
|
if (HAVE_GCC_THREAD_LOCAL_STORAGE)
|
|
set(TLS __thread)
|
|
endif ()
|
|
|
|
set(_ALL_SOURCE 1)
|
|
set(_GNU_SOURCE 1)
|
|
set(_POSIX_PTHREAD_SEMANTICS 1)
|
|
set(_TANDEM_SOURCE 1)
|
|
set(__EXTENSIONS__ 1)
|
|
# USE_SYSTEM_SHARED_LIB
|
|
set(VERSION ${PACKAGE_VERSION})
|
|
|
|
set(CMAKE_EXTRA_INCLUDE_FILES sys/types.h)
|
|
check_type_size(pid_t PID_T)
|
|
check_type_size(size_t SIZE_T)
|
|
check_type_size(ssize_t SSIZE_T)
|
|
set(CMAKE_EXTRA_INCLUDE_FILES)
|
|
|
|
check_type_size(uint16_t UINT16_T)
|
|
check_type_size(uint8_t UINT8_T)
|
|
|
|
## Inverse
|
|
if (NOT HAVE_PID_T)
|
|
set(pid_t int)
|
|
endif ()
|
|
if (NOT HAVE_SIZE_T)
|
|
set(size_t "unsigned int")
|
|
endif ()
|
|
if (NOT HAVE_SSIZE_T)
|
|
set(ssize_t int)
|
|
endif ()
|
|
|
|
if (NOT HAVE_UINT8_T)
|
|
set(uint8_t "unsigned char")
|
|
endif ()
|
|
if (NOT HAVE_UINT16_T)
|
|
set(uint16_t "unsigned short")
|
|
endif ()
|
|
|
|
|
|
# Define as `fork' if `vfork' does not work.
|
|
if (NOT HAVE_WORKING_VFORK)
|
|
set(vfork fork)
|
|
endif ()
|
|
|
|
# Stack protector detection
|
|
option(DISABLE_SSP "Disable -fstack-protector" OFF)
|
|
if(NOT DISABLE_SSP)
|
|
check_c_compiler_flag(-fstack-protector HAS_STACK_PROTECTOR)
|
|
if(HAS_STACK_PROTECTOR)
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector")
|
|
message(STATUS "Stack protector enabled")
|
|
endif()
|
|
endif()
|
|
|
|
# MinGW/Cygwin compiler flags
|
|
if(MINGW OR CYGWIN)
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mno-ms-bitfields")
|
|
endif()
|