From 8b228e27f57300be61b57a41a2ec8666b726dc34 Mon Sep 17 00:00:00 2001 From: Mark Ellzey Date: Sat, 19 Dec 2015 01:47:49 -0800 Subject: [PATCH 1/3] Lot's of cmake updates This is still not done, cmake here was a horrid mess, but we're getting our act together now. --- CMakeLists.txt | 249 +++++++++++++++------- README.md | 66 ++++++ cmake/CheckFunctionKeywords.cmake | 14 ++ event-config.h.cmake | 343 ++++++++++++++++-------------- 4 files changed, 434 insertions(+), 238 deletions(-) create mode 100644 cmake/CheckFunctionKeywords.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index f130304c..479caefb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,13 @@ # cmake_minimum_required(VERSION 2.8.0 FATAL_ERROR) +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release + CACHE STRING "Set build type to Debug o Release (default Release)" FORCE) +endif() + # get rid of the extra default configurations +# what? why would you get id of other useful build types? - Ellzey set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Limited configurations" FORCE) project(libevent C) @@ -29,15 +35,52 @@ set(EVENT_VERSION_MAJOR 2) set(EVENT_VERSION_MINOR 1) set(EVENT_VERSION_PATCH 5) set(EVENT_NUMERIC_VERSION 0x02010500) -set(EVENT_VERSION_DEVTAG "-beta") +set(EVENT_PACKAGE_VERSION "${EVENT_VERSION_MAJOR}.${EVENT_VERSION_MINOR}.${EVENT_VERSION_PATCH}") + +# what is the point of MAJOR/MINOR/PATCH if they are just going +# to be the same as the above, am I missing something? - ellzey? set(EVENT_ABI_MAJOR 2) set(EVENT_ABI_MINOR 1) set(EVENT_ABI_PATCH 5) + set(EVENT_ABI_LIBVERSION "${EVENT_ABI_MAJOR}.${EVENT_ABI_MINOR}.${EVENT_ABI_PATCH}") -set(EVENT_VERSION "${EVENT_VERSION_MAJOR}.${EVENT_VERSION_MINOR}.${EVENT_VERSION_PATCH}-alpha${EVENT_VERSION_DEVTAG}") -set(EVENT_PACKAGE_VERSION "${EVENT_VERSION_MAJOR}.${EVENT_VERSION_MINOR}.${EVENT_VERSION_PATCH}") + +######## the following section sets the development stage name. Defaults +######## to beta, but with the option of alpha, rc, and release. + + +# only a subset of names can be used, defaults to "beta" +set(EVENT__STAGE_VERSION "beta" + CACHE STRING "set EVENT_STAGE_VERSION") + +# a list that defines what can set for EVENT_STAGE_VERSION +set(EVENT__ALLOWED_STAGE_NAMES + beta + alpha + rc + release) + +# attempt to find the EVENT__STAGE_VERSION in the allowed list +# of accepted stage names, the return value is stord in +# EVENT__STAGE_RET +list(FIND + EVENT__ALLOWED_STAGE_NAMES + ${EVENT__STAGE_VERSION} + EVENT__STAGE_RET) + +# if EVENT__STAGE_RET is -1, the name was not +# found, so we fall back to "beta". +set(EVENT_STAGE_VERSION "beta") + +if (EVENT__STAGE_RET EQUAL "-1") + message(WARNING "${EVENT__STAGE_VERSION} invalid, defaulting to ${EVENT_STAGE_VERSION}") +else() + set(EVENT_STAGE_VERSION ${EVENT__STAGE_VERSION}) +endif() + +set(EVENT_VERSION "${EVENT_VERSION_MAJOR}.${EVENT_VERSION_MINOR}.${EVENT_VERSION_PATCH}-${EVENT_STAGE_VERSION}") option(EVENT__BUILD_SHARED_LIBRARIES "Define if libevent should be built with shared libraries instead of archives" OFF) option(EVENT__DISABLE_DEBUG_MODE "Define if libevent should build without support for a debug mode" OFF) @@ -71,9 +114,23 @@ include(CheckSymbolExists) include(CheckStructHasMember) include(CheckCSourceCompiles) include(CheckPrototypeDefinition) +include(CheckFunctionKeywords) +include(CheckCCompilerFlag) + +macro(add_compiler_flags _flags) + foreach(flag ${_flags}) + string(REGEX REPLACE "[-.+/:= ]" "_" _flag_esc "${flag}") + + check_c_compiler_flag("${flag}" check_c_compiler_flag_${_flag_esc}) + + if (check_c_compiler_flag_${_flag_esc}) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}") + endif() + endforeach() +endmacro() if (EVENT__ENABLE_VERBOSE_DEBUG) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_DEBUG=1") + add_definitions(-DUSE_DBUG=1) endif() # Setup compiler flags for coverage. @@ -88,52 +145,63 @@ if (EVENT__COVERAGE) message(FATAL_ERROR "Code coverage results with an optimised (non-Debug) build may be misleading! Add -DCMAKE_BUILD_TYPE=Debug") endif() - message("Setting coverage compiler flags") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage") + message(STATUS "Setting coverage compiler flags") + add_compiler_flags(-g -O0 -fprofile-arcs -ftest-coverage) endif() # GCC specific options. if (CMAKE_COMPILER_IS_GNUCC) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") option(EVENT__DISABLE_GCC_WARNINGS "Disable verbose warnings with GCC" OFF) - if (EVENT__DISABLE_GCC_WARNINGS) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") - endif() - option(EVENT__ENABLE_GCC_HARDENING "Enable compiler security checks" OFF) - if (EVENT__ENABLE_GCC_HARDENING) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FORTIFY_SOURCE=2 -fstack-protector-all -fwrapv -fPIE -Wstack-protector --param ssp-buffer-size=1") + option(EVENT__ENABLE_GCC_FUNCTION_SECTIONS "Enable gcc function sections" OFF) + option(EVENT__ENABLE_GCC_WARNINGS "Make all GCC warnings into errors" OFF) + + list(APPEND __FLAGS -Wall) + + if (EVENT__DISABLE_GCC_WARNINGS) + list(APPEND __FLAGS -w) + endif() + + if (EVENT__ENABLE_GCC_HARDENING) + list(APPEND __FLAGS + -fstack-protector-all + -fwrapv + -fPIE + -Wstack-protector + "--param ssp-buffer-size=1") + + add_definitions(-D_FORTIFY_SOURCE=2) endif() - option(EVENT__ENABLE_GCC_FUNCTION_SECTIONS "Enable gcc function sections" OFF) if (EVENT__ENABLE_GCC_FUNCTION_SECTIONS) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffunction-sections") + list(APPEND __FLAGS -ffunction-sections) # TODO: Add --gc-sections support. We need some checks for NetBSD to ensure this works. endif() - option(EVENT__ENABLE_GCC_WARNINGS "Make all GCC warnings into errors" OFF) if (EVENT__ENABLE_GCC_WARNINGS) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") + list(APPEND __FLAGS -Werror) endif() # We need to test for at least gcc 2.95 here, because older versions don't # have -fno-strict-aliasing - execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion - OUTPUT_VARIABLE GCC_VERSION) - if (GCC_VERSION VERSION_GREATER 2.95) - message(STATUS "GCC Version >= 2.95 enabling no-strict-aliasing") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing") - endif() + list(APPEND __FLAGS -fno-strict-aliasing) + + #execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion + # OUTPUT_VARIABLE GCC_VERSION) + #if (GCC_VERSION VERSION_GREATER 2.95) + # message(STATUS "GCC Version >= 2.95 enabling no-strict-aliasing") + # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing") + #endif() + + add_compiler_flags(__FLAGS) endif() if (APPLE) # Get rid of deprecated warnings for OpenSSL on OSX 10.7 and greater. - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=deprecated-declarations") - # Get rid of "clang: warning: argument unused during compilation: -I etc - if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Qunused-arguments") - endif() + add_compiler_flags( + -Wno-error=deprecated-declarations + -Qunused-arguments) endif() # Winsock. @@ -318,43 +386,16 @@ if(WIN32) endif() # Check for different inline keyword versions. -foreach(KEYWORD "inline" "__inline__" "__inline") - set(CMAKE_REQUIRED_DEFINITIONS "-DKEYWORD=${KEYWORD}") - CHECK_C_SOURCE_COMPILES( - " - #include - KEYWORD void a() {} - int main(int argc, char **argv) { a(); return 0; } - " HAVE_${KEYWORD}) -endforeach() +check_function_keywords("inline" "__inline" "__inline__") -if (NOT HAVE_inline) - if (HAVE___inline__) - set(EVENT__inline __inline__) - elseif(HAVE___inline) - set(EVENT__inline __inline) - endif() -endif() -set(CMAKE_REQUIRED_DEFINITIONS "") - -# Check for different function name macros. -foreach(KEYWORD "__func__" "__FUNCTION__") - set(CMAKE_REQUIRED_DEFINITIONS "-DKEYWORD=${KEYWORD}") - CHECK_C_SOURCE_COMPILES( - " - #include - int main(int argc, char **argv) { const char *cp = KEYWORD; return 0; } - " HAVE_${KEYWORD}) -endforeach() -set(CMAKE_REQUIRED_DEFINITIONS "") - -if (NOT HAVE___func__) - if (HAVE___FUNCTION__) - set(EVENT____func__ __FUNCTION__) - else() - # Substitute for __func__ - set(EVENT____func__ __FILE__) - endif() +if (HAVE_INLINE) + set (EVENT__inline inline) +elseif (HAVE___INLINE) + set(EVENT__inline __inline) +elseif(HAVE___INLINE__) + set(EVENT__inline __inline__) +else() + set(EVENT__inline) endif() CHECK_SYMBOL_EXISTS(TAILQ_FOREACH sys/queue.h EVENT__HAVE_TAILQFOREACH) @@ -365,11 +406,14 @@ CHECK_SYMBOL_EXISTS(RANDOM_UUID sys/sysctl.h EVENT__HAVE_DECL_RANDOM_UUID) CHECK_SYMBOL_EXISTS(F_SETFD fcntl.h EVENT__HAVE_SETFD) CHECK_TYPE_SIZE(fd_mask EVENT__HAVE_FD_MASK) - CHECK_TYPE_SIZE(size_t EVENT__SIZEOF_SIZE_T) + if(NOT EVENT__SIZEOF_SIZE_T) set(EVENT__size_t unsigned) + # and the point is??? set(EVENT__SIZEOF_SIZE_T ${EVENT__SIZEOF_UNSIGNED}) +else() + set(EVENT__size_t "size_t") endif() CHECK_TYPE_SIZE("off_t" EVENT__SIZEOF_OFF_T) @@ -389,7 +433,10 @@ endif() CHECK_TYPE_SIZE(socklen_t EVENT__SIZEOF_SOCKLEN_T) if(NOT EVENT__SIZEOF_SOCKLEN_T) set(EVENT__socklen_t "unsigned int") + # what is the poitn of this if EVENT__SIZEOF_UNSIGNED_INT is 0? set(EVENT__SIZEOF_SOCKLEN_T ${EVENT__SIZEOF_UNSIGNED_INT}) +else() + set(EVENT__socklen_t "socklen_t") endif() CHECK_TYPE_SIZE(pid_t EVENT__SIZEOF_PID_T) @@ -398,7 +445,9 @@ if(NOT EVENT__SIZEOF_PID_T) set(EVENT__SIZEOF_PID_T ${EVENT__SIZEOF_INT}) endif() -CHECK_TYPE_SIZE(pthread_t EVENT__SIZEOF_PTHREAD_T) +if (NOT EVENT__DISABLE_THREAD_SUPPORT) + CHECK_TYPE_SIZE(pthread_t EVENT__SIZEOF_PTHREAD_T) +endif() if(EVENT__HAVE_CLOCK_GETTIME) set(EVENT__DNS_USE_CPU_CLOCK_FOR_ID 1) @@ -409,8 +458,14 @@ CHECK_TYPE_SIZE("void *" EVENT__SIZEOF_VOID_P) # Tests file offset bits. # TODO: Add AIX test for if -D_LARGE_FILES is needed. -CHECK_FILE_OFFSET_BITS() -set(EVENT___FILE_OFFSET_BITS _FILE_OFFSET_BITS) + +# XXX: Why is this here? we don't even use it. Well, we don't even use it +# on top of that, why is it set in the config.h?! IT_MAKES_NO_SENSE +# I'm commenting it out for now. +# - ellzey + +#CHECK_FILE_OFFSET_BITS() +#set(EVENT___FILE_OFFSET_BITS _FILE_OFFSET_BITS) # Verify kqueue works with pipes. if (EVENT__HAVE_KQUEUE) @@ -418,7 +473,7 @@ if (EVENT__HAVE_KQUEUE) message(WARNING "Cannot check if kqueue works with pipes when crosscompiling, use EVENT__FORCE_KQUEUE_CHECK to be sure (this requires manually running a test program on the cross compilation target)") set(EVENT__HAVE_WORKING_KQUEUE 1) else() - message("Checking if kqueue works with pipes...") + message(STATUS "Checking if kqueue works with pipes...") include(CheckWorkingKqueue) endif() endif() @@ -590,8 +645,8 @@ endif() if (NOT EVENT__DISABLE_OPENSSL) find_package(OpenSSL REQUIRED) set(EVENT__HAVE_OPENSSL 1) - message("OpenSSL include: ${OPENSSL_INCLUDE_DIR}") - message("OpenSSL lib: ${OPENSSL_LIBRARIES}") + message(STATUS "OpenSSL include: ${OPENSSL_INCLUDE_DIR}") + message(STATUS "OpenSSL lib: ${OPENSSL_LIBRARIES}") include_directories(${OPENSSL_INCLUDE_DIR}) list(APPEND SRC_CORE bufferevent_openssl.c) list(APPEND HDR_PUBLIC include/event2/bufferevent_ssl.h) @@ -688,7 +743,8 @@ endif (EVENT__BUILD_SHARED_LIBRARIES) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/event-config.h.cmake - ${CMAKE_CURRENT_BINARY_DIR}/include/event2/event-config.h) + ${CMAKE_CURRENT_BINARY_DIR}/include/event2/event-config.h + NEWLINE_STYLE UNIX) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/evconfig-private.h.cmake @@ -725,9 +781,6 @@ add_library(event ${EVENT__LIBRARY_TYPE} ${SRC_EXTRA} ) -if (EVENT__BUILD_SHARED_LIBRARIES) -endif (EVENT__BUILD_SHARED_LIBRARIES) - if (EVENT__BUILD_SHARED_LIBRARIES) # Prepare static library to be linked to tests that need hidden symbols add_library(event_extra_static STATIC @@ -812,7 +865,6 @@ if (NOT EVENT__DISABLE_BENCHMARK) endif() if (NOT EVENT__DISABLE_TESTS) - # # Generate Regress tests. # @@ -825,7 +877,7 @@ if (NOT EVENT__DISABLE_TESTS) endif() if (__FOUND_USABLE_PYTHON) - message("Generating regress tests...") + message(STATUS "Generating regress tests...") add_definitions(-DTINYTEST_LOCAL) add_custom_command( OUTPUT @@ -894,6 +946,20 @@ if (NOT EVENT__DISABLE_TESTS) # # Test programs. # + # all of these, including the cmakelists.txt should be moved + # into the dirctory 'tests' first. + # + # doing this, we can remove all the DISABLE_TESTS stuff, and simply + # do something like: + # + # add_custom_targets(tests) + # add_executable(... EXCLUDE_FROM_ALL ...c) + # add_dependencis(tests testa testb testc) + # add_test(....) + # + # then you can just run 'make tests' instead of them all + # auto-compile|running + # - ellzey set(TESTPROGS test-changelist test-eof test-fdleak @@ -945,7 +1011,6 @@ if (NOT EVENT__DISABLE_TESTS) list(APPEND BACKENDS WIN32) endif() - message("Available event backends: ${BACKENDS}") # Default environment variables turns off all event systems, # then we enable each one, one at a time when creating the tests. @@ -1036,7 +1101,7 @@ if (NOT EVENT__DISABLE_TESTS) \"${WINDOWS_CTEST_COMMAND}\" ") - message("${WINDOWS_CTEST_COMMAND}") + message(STATUS "${WINDOWS_CTEST_COMMAND}") file(COPY ${CMAKE_CURRENT_BINARY_DIR}/tmp/verify_tests.bat DESTINATION ${CMAKE_CURRENT_BINARY_DIR} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) @@ -1175,3 +1240,29 @@ install(EXPORT LibeventTargets DESTINATION "${EVENT_INSTALL_CMAKE_DIR}" COMPONENT dev) set(LIBEVENT_LIBRARIES event event_core event_extra CACHE STRING "Libevent libraries") + +message("") +message(" ---( Libevent " ${EVENT_VERSION} " )---") +message("") +message(STATUS "Available event backends: ${BACKENDS}") +message(STATUS "CMAKE_BINARY_DIR: " ${CMAKE_BINARY_DIR}) +message(STATUS "CMAKE_CURRENT_BINARY_DIR: " ${CMAKE_CURRENT_BINARY_DIR}) +message(STATUS "CMAKE_SOURCE_DIR: " ${CMAKE_SOURCE_DIR}) +message(STATUS "CMAKE_CURRENT_SOURCE_DIR: " ${CMAKE_CURRENT_SOURCE_DIR}) +message(STATUS "PROJECT_BINARY_DIR: " ${PROJECT_BINARY_DIR}) +message(STATUS "PROJECT_SOURCE_DIR: " ${PROJECT_SOURCE_DIR}) +message(STATUS "CMAKE_MODULE_PATH: " ${CMAKE_MODULE_PATH}) +message(STATUS "CMAKE_COMMAND: " ${CMAKE_COMMAND}) +message(STATUS "CMAKE_ROOT: " ${CMAKE_ROOT} ) +message(STATUS "CMAKE_SYSTEM: " ${CMAKE_SYSTEM} ) +message(STATUS "CMAKE_SYSTEM_NAME: " ${CMAKE_SYSTEM_NAME} ) +message(STATUS "CMAKE_SYSTEM_VERSION: " ${CMAKE_SYSTEM_VERSION} ) +message(STATUS "CMAKE_SYSTEM_PROCESSOR: " ${CMAKE_SYSTEM_PROCESSOR} ) +message(STATUS "CMAKE_SKIP_RPATH: " ${CMAKE_SKIP_RPATH} ) +message(STATUS "CMAKE_VERBOSE_MAKEFILE: " ${CMAKE_VERBOSE_MAKEFILE} ) +message(STATUS "CMAKE_C_FLAGS: " ${CMAKE_C_FLAGS} ) +message(STATUS "CMAKE_BUILD_TYPE: " ${CMAKE_BUILD_TYPE} ) +message(STATUS "CMAKE_C_COMPILER: " ${CMAKE_C_COMPILER} ) +message(STATUS "CMAKE_AR: " ${CMAKE_AR} ) +message(STATUS "CMAKE_RANLIB: " ${CMAKE_RANLIB} ) +message("") diff --git a/README.md b/README.md index b3ad31ad..ad9652f8 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,72 @@ $ make verify # (optional) $ sudo make install +## Cmake (General) + + +The following Libevent specific Cmake variables ar as follows (the values being +the default). + +``` +# Installation directory for executables +EVENT_INSTALL_BIN_DIR:PATH=bin + +# Installation directory for CMake files +EVENT_INSTALL_CMAKE_DIR:PATH=lib/cmake/libevent + +## Installation directory for header files +EVENT_INSTALL_INCLUDE_DIR:PATH=include + +## Installation directory for libraries +EVENT_INSTALL_LIB_DIR:PATH=lib + +## Define if libevent should be built with shared libraries instead of archives +EVENT__BUILD_SHARED_LIBRARIES:BOOL=OFF + +# Enable running gcov to get a test coverage report (only works with +# GCC/CLang). Make sure to enable -DCMAKE_BUILD_TYPE=Debug as well. +EVENT__COVERAGE:BOOL=OFF + +# Defines if libevent should build without the benchmark exectuables +EVENT__DISABLE_BENCHMARK:BOOL=OFF + +# Define if libevent should build without support for a debug mode +EVENT__DISABLE_DEBUG_MODE:BOOL=OFF + +# Define if libevent should not allow replacing the mm functions +EVENT__DISABLE_MM_REPLACEMENT:BOOL=OFF + +# Define if libevent should build without support for OpenSSL encrpytion +EVENT__DISABLE_OPENSSL:BOOL=ON + +# Disable the regress tests +EVENT__DISABLE_REGRESS:BOOL=OFF + +# Disable sample files +EVENT__DISABLE_SAMPLES:BOOL=OFF + +# If tests should be compiled or not +EVENT__DISABLE_TESTS:BOOL=OFF + +# Define if libevent should not be compiled with thread support +EVENT__DISABLE_THREAD_SUPPORT:BOOL=OFF + +# Enables verbose debugging +EVENT__ENABLE_VERBOSE_DEBUG:BOOL=OFF + +# When crosscompiling forces running a test program that verifies that Kqueue +# works with pipes. Note that this requires you to manually run the test program +# on the the cross compilation target to verify that it works. See cmake +# documentation for try_run for more details +EVENT__FORCE_KQUEUE_CHECK:BOOL=OFF + +# set EVENT_STAGE_VERSION +EVENT__STAGE_VERSION:STRING=beta +``` + +__More variables can be found by running `cmake -LAH `__ + + ## CMake (Windows) Install CMake: diff --git a/cmake/CheckFunctionKeywords.cmake b/cmake/CheckFunctionKeywords.cmake new file mode 100644 index 00000000..3d968b8a --- /dev/null +++ b/cmake/CheckFunctionKeywords.cmake @@ -0,0 +1,14 @@ +include(CheckCSourceCompiles) + +macro(check_function_keywords _wordlist) + set(${_result} "") + foreach(flag ${_wordlist}) + string(REGEX REPLACE "[-+/ ()]" "_" flagname "${flag}") + string(TOUPPER "${flagname}" flagname) + set(have_flag "HAVE_${flagname}") + check_c_source_compiles("${flag} void func(); void func() { } int main() { func(); return 0; }" ${have_flag}) + if(${have_flag} AND NOT ${_result}) + set(${_result} "${flag}") + endif(${have_flag} AND NOT ${_result}) + endforeach(flag) +endmacro(check_function_keywords) diff --git a/event-config.h.cmake b/event-config.h.cmake index 3a575c75..05fcf559 100644 --- a/event-config.h.cmake +++ b/event-config.h.cmake @@ -11,8 +11,7 @@ /* Numeric representation of the version */ #define EVENT__NUMERIC_VERSION @EVENT_NUMERIC_VERSION@ - -#define EVENT__PACKAGE_VERSION @EVENT_PACKAGE_VERSION@ +#define EVENT__PACKAGE_VERSION "@EVENT_PACKAGE_VERSION@" /* Version number of package */ #define EVENT__VERSION "@EVENT_VERSION@" @@ -33,470 +32,496 @@ #define EVENT__PACKAGE_TARNAME "" /* Define if libevent should build without support for a debug mode */ -#cmakedefine EVENT__DISABLE_DEBUG_MODE 0 +#cmakedefine EVENT__DISABLE_DEBUG_MODE /* Define if libevent should not allow replacing the mm functions */ -#cmakedefine EVENT__DISABLE_MM_REPLACEMENT 0 +#cmakedefine EVENT__DISABLE_MM_REPLACEMENT /* Define if libevent should not be compiled with thread support */ -#cmakedefine EVENT__DISABLE_THREAD_SUPPORT 0 +#cmakedefine EVENT__DISABLE_THREAD_SUPPORT /* Define to 1 if you have the `accept4' function. */ -#cmakedefine EVENT__HAVE_ACCEPT4 1 +#cmakedefine EVENT__HAVE_ACCEPT4 /* Define to 1 if you have the `arc4random' function. */ -#cmakedefine EVENT__HAVE_ARC4RANDOM 1 +#cmakedefine EVENT__HAVE_ARC4RANDOM /* Define to 1 if you have the `arc4random_buf' function. */ -#cmakedefine EVENT__HAVE_ARC4RANDOM_BUF 1 +#cmakedefine EVENT__HAVE_ARC4RANDOM_BUF /* Define if clock_gettime is available in libc */ -#cmakedefine EVENT__DNS_USE_CPU_CLOCK_FOR_ID 1 +#cmakedefine EVENT__DNS_USE_CPU_CLOCK_FOR_ID /* Define is no secure id variant is available */ -#cmakedefine EVENT__DNS_USE_GETTIMEOFDAY_FOR_ID 1 -#cmakedefine EVENT__DNS_USE_FTIME_FOR_ID 1 +#cmakedefine EVENT__DNS_USE_GETTIMEOFDAY_FOR_ID +#cmakedefine EVENT__DNS_USE_FTIME_FOR_ID /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_ARPA_INET_H 1 +#cmakedefine EVENT__HAVE_ARPA_INET_H /* Define to 1 if you have the `clock_gettime' function. */ -#cmakedefine EVENT__HAVE_CLOCK_GETTIME 1 +#cmakedefine EVENT__HAVE_CLOCK_GETTIME /* Define to 1 if you have the declaration of `CTL_KERN'. */ -#cmakedefine EVENT__HAVE_DECL_CTL_KERN 1 +#cmakedefine EVENT__HAVE_DECL_CTL_KERN /* Define to 1 if you have the declaration of `KERN_ARND'. */ -#cmakedefine EVENT__HAVE_DECL_KERN_ARND 0 +#cmakedefine EVENT__HAVE_DECL_KERN_ARND /* Define to 1 if you have the declaration of `KERN_RANDOM'. */ -#cmakedefine EVENT__HAVE_DECL_KERN_RANDOM 1 +#cmakedefine EVENT__HAVE_DECL_KERN_RANDOM /* Define if /dev/poll is available */ -#cmakedefine EVENT__HAVE_DEVPOLL 1 +#cmakedefine EVENT__HAVE_DEVPOLL /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_NETDB_H 1 +#cmakedefine EVENT__HAVE_NETDB_H /* Define to 1 if fd_mask type is defined */ -#cmakedefine EVENT__HAVE_FD_MASK 1 +#cmakedefine EVENT__HAVE_FD_MASK /* Define to 1 if the header file defines TAILQ_FOREACH. */ -#cmakedefine EVENT__HAVE_TAILQFOREACH 1 +#cmakedefine EVENT__HAVE_TAILQFOREACH /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_DLFCN_H 1 +#cmakedefine EVENT__HAVE_DLFCN_H /* Define if your system supports the epoll system calls */ -#cmakedefine EVENT__HAVE_EPOLL 1 +#cmakedefine EVENT__HAVE_EPOLL /* Define to 1 if you have the `epoll_create1' function. */ -#cmakedefine EVENT__HAVE_EPOLL_CREATE1 1 +#cmakedefine EVENT__HAVE_EPOLL_CREATE1 /* Define to 1 if you have the `epoll_ctl' function. */ -#cmakedefine EVENT__HAVE_EPOLL_CTL 1 +#cmakedefine EVENT__HAVE_EPOLL_CTL /* Define to 1 if you have the `eventfd' function. */ -#cmakedefine EVENT__HAVE_EVENTFD 1 +#cmakedefine EVENT__HAVE_EVENTFD /* Define if your system supports event ports */ -#cmakedefine EVENT__HAVE_EVENT_PORTS 1 +#cmakedefine EVENT__HAVE_EVENT_PORTS /* Define to 1 if you have the `fcntl' function. */ -#cmakedefine EVENT__HAVE_FCNTL 1 +#cmakedefine EVENT__HAVE_FCNTL /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_FCNTL_H 1 +#cmakedefine EVENT__HAVE_FCNTL_H /* Define to 1 if you have the `getaddrinfo' function. */ -#cmakedefine EVENT__HAVE_GETADDRINFO 1 +#cmakedefine EVENT__HAVE_GETADDRINFO /* Define to 1 if you have the `getegid' function. */ -#cmakedefine EVENT__HAVE_GETEGID 1 +#cmakedefine EVENT__HAVE_GETEGID /* Define to 1 if you have the `geteuid' function. */ -#cmakedefine EVENT__HAVE_GETEUID 1 +#cmakedefine EVENT__HAVE_GETEUID /* TODO: Check for different gethostname argument counts. CheckPrototypeDefinition.cmake can be used. */ /* Define this if you have any gethostbyname_r() */ -#cmakedefine EVENT__HAVE_GETHOSTBYNAME_R 1 +#cmakedefine EVENT__HAVE_GETHOSTBYNAME_R /* Define this if gethostbyname_r takes 3 arguments */ -#cmakedefine EVENT__HAVE_GETHOSTBYNAME_R_3_ARG 1 +#cmakedefine EVENT__HAVE_GETHOSTBYNAME_R_3_ARG /* Define this if gethostbyname_r takes 5 arguments */ -#cmakedefine EVENT__HAVE_GETHOSTBYNAME_R_5_ARG 1 +#cmakedefine EVENT__HAVE_GETHOSTBYNAME_R_5_ARG /* Define this if gethostbyname_r takes 6 arguments */ -#cmakedefine EVENT__HAVE_GETHOSTBYNAME_R_6_ARG 1 +#cmakedefine EVENT__HAVE_GETHOSTBYNAME_R_6_ARG /* Define to 1 if you have the `getifaddrs' function. */ -#cmakedefine EVENT__HAVE_GETIFADDRS 1 +#cmakedefine EVENT__HAVE_GETIFADDRS /* Define to 1 if you have the `getnameinfo' function. */ -#cmakedefine EVENT__HAVE_GETNAMEINFO 1 +#cmakedefine EVENT__HAVE_GETNAMEINFO /* Define to 1 if you have the `getprotobynumber' function. */ -#cmakedefine EVENT__HAVE_GETPROTOBYNUMBER 1 +#cmakedefine EVENT__HAVE_GETPROTOBYNUMBER /* Define to 1 if you have the `getservbyname' function. */ -#cmakedefine EVENT__HAVE_GETSERVBYNAME 1 +#cmakedefine EVENT__HAVE_GETSERVBYNAME /* Define to 1 if you have the `gettimeofday' function. */ -#cmakedefine EVENT__HAVE_GETTIMEOFDAY 1 +#cmakedefine EVENT__HAVE_GETTIMEOFDAY /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_IFADDRS_H 1 +#cmakedefine EVENT__HAVE_IFADDRS_H /* Define to 1 if you have the `inet_ntop' function. */ -#cmakedefine EVENT__HAVE_INET_NTOP 1 +#cmakedefine EVENT__HAVE_INET_NTOP /* Define to 1 if you have the `inet_pton' function. */ -#cmakedefine EVENT__HAVE_INET_PTON 1 +#cmakedefine EVENT__HAVE_INET_PTON /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_INTTYPES_H 1 +#cmakedefine EVENT__HAVE_INTTYPES_H /* Define to 1 if you have the `issetugid' function. */ -#cmakedefine EVENT__HAVE_ISSETUGID 1 +#cmakedefine EVENT__HAVE_ISSETUGID /* Define to 1 if you have the `kqueue' function. */ -#cmakedefine EVENT__HAVE_KQUEUE 1 +#cmakedefine EVENT__HAVE_KQUEUE /* Define if the system has zlib */ -#cmakedefine EVENT__HAVE_LIBZ 1 +#cmakedefine EVENT__HAVE_LIBZ /* Define to 1 if you have the `mach_absolute_time' function. */ -#cmakedefine EVENT__HAVE_MACH_ABSOLUTE_TIME 1 +#cmakedefine EVENT__HAVE_MACH_ABSOLUTE_TIME /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_MACH_MACH_TIME_H 1 +#cmakedefine EVENT__HAVE_MACH_MACH_TIME_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_MEMORY_H 1 +#cmakedefine EVENT__HAVE_MEMORY_H /* Define to 1 if you have the `mmap' function. */ -#cmakedefine EVENT__HAVE_MMAP 1 +#cmakedefine EVENT__HAVE_MMAP /* Define to 1 if you have the `nanosleep' function. */ -#cmakedefine EVENT__HAVE_NANOSLEEP 1 +#cmakedefine EVENT__HAVE_NANOSLEEP /* Define to 1 if you have the `usleep' function. */ -#cmakedefine EVENT__HAVE_USLEEP 1 +#cmakedefine EVENT__HAVE_USLEEP /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_NETDB_H 1 +#cmakedefine EVENT__HAVE_NETDB_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_NETINET_IN6_H 1 +#cmakedefine EVENT__HAVE_NETINET_IN6_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_NETINET_IN_H 1 +#cmakedefine EVENT__HAVE_NETINET_IN_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_NETINET_TCP_H 1 +#cmakedefine EVENT__HAVE_NETINET_TCP_H /* Define if the system has openssl */ -#cmakedefine EVENT__HAVE_OPENSSL 1 +#cmakedefine EVENT__HAVE_OPENSSL /* Defines if the system has zlib */ -#cmakedefine EVENT__HAVE_ZLIB 1 +#cmakedefine EVENT__HAVE_ZLIB /* Define to 1 if you have the `pipe' function. */ -#cmakedefine EVENT__HAVE_PIPE 1 +#cmakedefine EVENT__HAVE_PIPE /* Define to 1 if you have the `pipe2' function. */ -#cmakedefine EVENT__HAVE_PIPE2 1 +#cmakedefine EVENT__HAVE_PIPE2 /* Define to 1 if you have the `poll' function. */ -#cmakedefine EVENT__HAVE_POLL 1 +#cmakedefine EVENT__HAVE_POLL /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_POLL_H 1 +#cmakedefine EVENT__HAVE_POLL_H /* Define to 1 if you have the `port_create' function. */ -#cmakedefine EVENT__HAVE_PORT_CREATE 1 +#cmakedefine EVENT__HAVE_PORT_CREATE /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_PORT_H 1 +#cmakedefine EVENT__HAVE_PORT_H /* Define if you have POSIX threads libraries and header files. */ -#cmakedefine EVENT__HAVE_PTHREAD 1 +#cmakedefine EVENT__HAVE_PTHREAD /* Define if we have pthreads on this system */ -#cmakedefine EVENT__HAVE_PTHREADS 1 +#cmakedefine EVENT__HAVE_PTHREADS /* Define to 1 if you have the `putenv' function. */ -#cmakedefine EVENT__HAVE_PUTENV 1 +#cmakedefine EVENT__HAVE_PUTENV /* Define to 1 if the system has the type `sa_family_t'. */ -#cmakedefine EVENT__HAVE_SA_FAMILY_T 1 +#cmakedefine EVENT__HAVE_SA_FAMILY_T /* Define to 1 if you have the `select' function. */ -#cmakedefine EVENT__HAVE_SELECT 1 +#cmakedefine EVENT__HAVE_SELECT /* Define to 1 if you have the `setenv' function. */ -#cmakedefine EVENT__HAVE_SETENV 1 +#cmakedefine EVENT__HAVE_SETENV /* Define if F_SETFD is defined in */ -#cmakedefine EVENT__HAVE_SETFD 1 +#cmakedefine EVENT__HAVE_SETFD /* Define to 1 if you have the `setrlimit' function. */ -#cmakedefine EVENT__HAVE_SETRLIMIT 1 +#cmakedefine EVENT__HAVE_SETRLIMIT /* Define to 1 if you have the `sendfile' function. */ -#cmakedefine EVENT__HAVE_SENDFILE 1 +#cmakedefine EVENT__HAVE_SENDFILE /* Define if F_SETFD is defined in */ -#cmakedefine EVENT__HAVE_SETFD 1 +#cmakedefine EVENT__HAVE_SETFD /* Define to 1 if you have the `sigaction' function. */ -#cmakedefine EVENT__HAVE_SIGACTION 1 +#cmakedefine EVENT__HAVE_SIGACTION /* Define to 1 if you have the `signal' function. */ -#cmakedefine EVENT__HAVE_SIGNAL 1 +#cmakedefine EVENT__HAVE_SIGNAL /* Define to 1 if you have the `splice' function. */ -#cmakedefine EVENT__HAVE_SPLICE 1 +#cmakedefine EVENT__HAVE_SPLICE /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_STDARG_H 1 +#cmakedefine EVENT__HAVE_STDARG_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_STDDEF_H 1 +#cmakedefine EVENT__HAVE_STDDEF_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_STDINT_H 1 +#cmakedefine EVENT__HAVE_STDINT_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_STDLIB_H 1 +#cmakedefine EVENT__HAVE_STDLIB_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_STRINGS_H 1 +#cmakedefine EVENT__HAVE_STRINGS_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_STRING_H 1 +#cmakedefine EVENT__HAVE_STRING_H /* Define to 1 if you have the `strlcpy' function. */ -#cmakedefine EVENT__HAVE_STRLCPY 1 +#cmakedefine EVENT__HAVE_STRLCPY /* Define to 1 if you have the `strsep' function. */ -#cmakedefine EVENT__HAVE_STRSEP 1 +#cmakedefine EVENT__HAVE_STRSEP /* Define to 1 if you have the `strtok_r' function. */ -#cmakedefine EVENT__HAVE_STRTOK_R 1 +#cmakedefine EVENT__HAVE_STRTOK_R /* Define to 1 if you have the `strtoll' function. */ -#cmakedefine EVENT__HAVE_STRTOLL 1 +#cmakedefine EVENT__HAVE_STRTOLL /* Define to 1 if the system has the type `struct addrinfo'. */ -#cmakedefine EVENT__HAVE_STRUCT_ADDRINFO 1 +#cmakedefine EVENT__HAVE_STRUCT_ADDRINFO /* Define to 1 if the system has the type `struct in6_addr'. */ -#cmakedefine EVENT__HAVE_STRUCT_IN6_ADDR 1 +#cmakedefine EVENT__HAVE_STRUCT_IN6_ADDR /* Define to 1 if `s6_addr16' is member of `struct in6_addr'. */ -#cmakedefine EVENT__HAVE_STRUCT_IN6_ADDR_S6_ADDR16 1 +#cmakedefine EVENT__HAVE_STRUCT_IN6_ADDR_S6_ADDR16 /* Define to 1 if `s6_addr32' is member of `struct in6_addr'. */ -#cmakedefine EVENT__HAVE_STRUCT_IN6_ADDR_S6_ADDR32 1 +#cmakedefine EVENT__HAVE_STRUCT_IN6_ADDR_S6_ADDR32 /* Define to 1 if the system has the type `struct sockaddr_in6'. */ -#cmakedefine EVENT__HAVE_STRUCT_SOCKADDR_IN6 1 +#cmakedefine EVENT__HAVE_STRUCT_SOCKADDR_IN6 /* Define to 1 if `sin6_len' is member of `struct sockaddr_in6'. */ -#cmakedefine EVENT__HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN 1 +#cmakedefine EVENT__HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN /* Define to 1 if `sin_len' is member of `struct sockaddr_in'. */ -#cmakedefine EVENT__HAVE_STRUCT_SOCKADDR_IN_SIN_LEN 1 +#cmakedefine EVENT__HAVE_STRUCT_SOCKADDR_IN_SIN_LEN /* Define to 1 if the system has the type `struct sockaddr_storage'. */ -#cmakedefine EVENT__HAVE_STRUCT_SOCKADDR_STORAGE 1 +#cmakedefine EVENT__HAVE_STRUCT_SOCKADDR_STORAGE /* Define to 1 if `ss_family' is a member of `struct sockaddr_storage'. */ -#cmakedefine EVENT__HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1 +#cmakedefine EVENT__HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY /* Define to 1 if `__ss_family' is a member of `struct sockaddr_storage'. */ -#cmakedefine EVENT__HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY 1 +#cmakedefine EVENT__HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY /* Define to 1 if you have the `sysctl' function. */ -#cmakedefine EVENT__HAVE_SYSCTL 1 +#cmakedefine EVENT__HAVE_SYSCTL /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_SYS_DEVPOLL_H 1 +#cmakedefine EVENT__HAVE_SYS_DEVPOLL_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_SYS_EPOLL_H 1 +#cmakedefine EVENT__HAVE_SYS_EPOLL_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_SYS_EVENTFD_H 1 +#cmakedefine EVENT__HAVE_SYS_EVENTFD_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_SYS_EVENT_H 1 +#cmakedefine EVENT__HAVE_SYS_EVENT_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_SYS_IOCTL_H 1 +#cmakedefine EVENT__HAVE_SYS_IOCTL_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_SYS_MMAN_H 1 +#cmakedefine EVENT__HAVE_SYS_MMAN_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_SYS_PARAM_H 1 +#cmakedefine EVENT__HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_SYS_QUEUE_H 1 +#cmakedefine EVENT__HAVE_SYS_QUEUE_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_SYS_RESOURCE_H 1 +#cmakedefine EVENT__HAVE_SYS_RESOURCE_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_SYS_SELECT_H 1 +#cmakedefine EVENT__HAVE_SYS_SELECT_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_SYS_SENDFILE_H 1 +#cmakedefine EVENT__HAVE_SYS_SENDFILE_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_SYS_SOCKET_H 1 +#cmakedefine EVENT__HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_SYS_STAT_H 1 +#cmakedefine EVENT__HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_SYS_SYSCTL_H 1 +#cmakedefine EVENT__HAVE_SYS_SYSCTL_H /* Define to 1 if you have the header file. */ #cmakedefine EVENT__HAVE_SYS_TIMERFD_H */ /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_SYS_TIME_H 1 +#cmakedefine EVENT__HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_SYS_TYPES_H 1 +#cmakedefine EVENT__HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_SYS_UIO_H 1 +#cmakedefine EVENT__HAVE_SYS_UIO_H /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_SYS_WAIT_H 1 +#cmakedefine EVENT__HAVE_SYS_WAIT_H /* Define if TAILQ_FOREACH is defined in */ -#cmakedefine EVENT__HAVE_TAILQFOREACH 1 +#cmakedefine EVENT__HAVE_TAILQFOREACH /* Define if timeradd is defined in */ -#cmakedefine EVENT__HAVE_TIMERADD 1 +#cmakedefine EVENT__HAVE_TIMERADD /* Define if timerclear is defined in */ -#cmakedefine EVENT__HAVE_TIMERCLEAR 1 +#cmakedefine EVENT__HAVE_TIMERCLEAR /* Define if timercmp is defined in */ -#cmakedefine EVENT__HAVE_TIMERCMP 1 +#cmakedefine EVENT__HAVE_TIMERCMP /* Define to 1 if you have the `timerfd_create' function. */ -#cmakedefine EVENT__HAVE_TIMERFD_CREATE 1 +#cmakedefine EVENT__HAVE_TIMERFD_CREATE /* Define if timerisset is defined in */ -#cmakedefine EVENT__HAVE_TIMERISSET 1 +#cmakedefine EVENT__HAVE_TIMERISSET /* Define to 1 if the system has the type `uint8_t'. */ -#cmakedefine EVENT__HAVE_UINT8_T 1 +#cmakedefine EVENT__HAVE_UINT8_T /* Define to 1 if the system has the type `uint16_t'. */ -#cmakedefine EVENT__HAVE_UINT16_T 1 +#cmakedefine EVENT__HAVE_UINT16_T /* Define to 1 if the system has the type `uint32_t'. */ -#cmakedefine EVENT__HAVE_UINT32_T 1 +#cmakedefine EVENT__HAVE_UINT32_T /* Define to 1 if the system has the type `uint64_t'. */ -#cmakedefine EVENT__HAVE_UINT64_T 1 +#cmakedefine EVENT__HAVE_UINT64_T /* Define to 1 if the system has the type `uintptr_t'. */ -#cmakedefine EVENT__HAVE_UINTPTR_T 1 +#cmakedefine EVENT__HAVE_UINTPTR_T /* Define to 1 if you have the `umask' function. */ -#cmakedefine EVENT__HAVE_UMASK 1 +#cmakedefine EVENT__HAVE_UMASK /* Define to 1 if you have the header file. */ -#cmakedefine EVENT__HAVE_UNISTD_H 1 +#cmakedefine EVENT__HAVE_UNISTD_H /* Define to 1 if you have the `unsetenv' function. */ -#cmakedefine EVENT__HAVE_UNSETENV 1 +#cmakedefine EVENT__HAVE_UNSETENV /* Define to 1 if you have the `vasprintf' function. */ -#cmakedefine EVENT__HAVE_VASPRINTF 1 +#cmakedefine EVENT__HAVE_VASPRINTF /* Define if kqueue works correctly with pipes */ -#cmakedefine EVENT__HAVE_WORKING_KQUEUE 1 +#cmakedefine EVENT__HAVE_WORKING_KQUEUE -/* Define to necessary symbol if this constant uses a non-standard name on - your system. */ -#cmakedefine EVENT__PTHREAD_CREATE_JOINABLE ${EVENT__PTHREAD_CREATE_JOINABLE} +#ifdef __USE_UNUSED_DEFINITIONS__ +/* Define to necessary symbol if this constant uses a non-standard name on your system. */ +/* XXX: Hello, this isn't even used, nor is it defined anywhere... - Ellzey +#define EVENT__PTHREAD_CREATE_JOINABLE ${EVENT__PTHREAD_CREATE_JOINABLE} +#endif /* __USE_UNUSED_DEFINITIONS__ */ /* The size of `pthread_t', as computed by sizeof. */ -#cmakedefine EVENT__SIZEOF_PTHREAD_T ${EVENT__SIZEOF_PTHREAD_T} +#define EVENT__SIZEOF_PTHREAD_T @EVENT__SIZEOF_PTHREAD_T@ /* The size of a `int', as computed by sizeof. */ -#cmakedefine EVENT__SIZEOF_INT ${EVENT__SIZEOF_INT} +#cmakedefine EVENT__SIZEOF_INT @EVENT__SIZEOF_INT@ /* The size of a `long', as computed by sizeof. */ -#cmakedefine EVENT__SIZEOF_LONG ${EVENT__SIZEOF_LONG} +#cmakedefine EVENT__SIZEOF_LONG @EVENT__SIZEOF_LONG@ /* The size of a `long long', as computed by sizeof. */ -#cmakedefine EVENT__SIZEOF_LONG_LONG ${EVENT__SIZEOF_LONG_LONG} +#cmakedefine EVENT__SIZEOF_LONG_LONG @EVENT__SIZEOF_LONG_LONG@ /* The size of `off_t', as computed by sizeof. */ #cmakedefine EVENT__SIZEOF_OFF_T ${EVENT__SIZEOF_OFF_T} /* The size of a `short', as computed by sizeof. */ -#cmakedefine EVENT__SIZEOF_SHORT ${EVENT__SIZEOF_SHORT} +#cmakedefine EVENT__SIZEOF_SHORT @EVENT__SIZEOF_SHORT@ /* The size of `size_t', as computed by sizeof. */ -#cmakedefine EVENT__SIZEOF_SIZE_T ${EVENT__SIZEOF_SIZE_T} +#cmakedefine EVENT__SIZEOF_SIZE_T @EVENT__SIZEOF_SIZE_T@ /* Define to 1 if you have the ANSI C header files. */ -#cmakedefine EVENT__STDC_HEADERS ${EVENT__STDC_HEADERS} +#cmakedefine EVENT__STDC_HEADERS /* Define to 1 if you can safely include both and . */ -#cmakedefine EVENT__TIME_WITH_SYS_TIME ${EVENT__TIME_WITH_SYS_TIME} +#cmakedefine EVENT__TIME_WITH_SYS_TIME /* The size of `socklen_t', as computed by sizeof. */ -#cmakedefine EVENT__SIZEOF_SOCKLEN_T ${EVENT__SIZEOF_SOCKLEN_T} +#cmakedefine EVENT__SIZEOF_SOCKLEN_T @EVENT__SIZEOF_SOCKLEN_T@ /* The size of 'void *', as computer by sizeof */ -#cmakedefine EVENT__SIZEOF_VOID_P ${EVENT__SIZEOF_VOID_P} +#cmakedefine EVENT__SIZEOF_VOID_P @EVENT__SIZEOF_VOID_P@ -/* Define to appropriate substitute if compiler doesnt have __func__ */ -#cmakedefine EVENT____func__ ${EVENT____func__} +/* set an alias for whatever __func__ __FUNCTION__ is, what sillyness */ +#if defined (__func__) +#define EVENT____func__ __func__ +#elif defined(__FUNCTION__) +#define EVENT____func__ __FUNCTION__ +#else +#define EVENT____func__ __FILE__ +#endif + +#ifdef __THESE_ARE_NOT_CONFIG_H_THINGS_THEY_ARE_DASH_D_THINGS__ /* Number of bits in a file offset, on hosts where this is settable. */ -#cmakedefine EVENT___FILE_OFFSET_BITS ${EVENT___FILE_OFFSET_BITS} +/* Ellzey is not satisfied */ +#define EVENT___FILE_OFFSET_BITS @EVENT___FILE_OFFSET_BITS@ /* Define for large files, on AIX-style hosts. */ -/* #undef _LARGE_FILES */ +#define @_LARGE_FILES@ /* THIS ISN'T EVEN SET IN CMAKELISTS */ +#endif /* __THESE_ARE_NOT_CONFIG_H_THINGS_THEY_ARE_DASH_D_THINGS__ */ +#ifdef _WhAT_DOES_THIS_EVEN_DO_ /* Define to empty if `const' does not conform to ANSI C. */ -/* #undef EVENT__const */ +/* lolwut? - ellzey */ +#undef EVENT__const +#endif + /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus -#cmakedefine EVENT__inline ${EVENT__inline} +/* why not c++? + * + * and are we really expected to use EVENT__inline everywhere, + * shouldn't we just do: + * ifdef EVENT__inline + * define inline EVENT__inline + * + * - Ellzey + */ + +#define EVENT__inline @EVENT__inline@ #endif -/* Define to `int' if does not define. */ -#cmakedefine EVENT__pid_t ${EVENT__pid_t} +/* Define to `int' if does not define. */ +#cmakedefine EVENT__pid_t @EVENT__pid_t@ /* Define to `unsigned' if does not define. */ -#cmakedefine EVENT__size_t ${EVENT__size_t} +#cmakedefine EVENT__size_t @EVENT__size_t@ /* Define to unsigned int if you dont have it */ -#cmakedefine EVENT__socklen_t ${EVENT__socklen_t} +#cmakedefine EVENT__socklen_t @EVENT__socklen_t@ /* Define to `int' if does not define. */ -#cmakedefine EVENT__ssize_t ${EVENT__ssize_t} +#cmakedefine EVENT__ssize_t @EVENT__ssize_t@ -#cmakedefine EVENT__NEED_DLLIMPORT ${EVENT__NEED_DLLIMPORT} +#cmakedefine EVENT__NEED_DLLIMPORT @EVENT__NEED_DLLIMPORT@ /* Define to 1 if you have ERR_remove_thread_stat(). */ -#cmakedefine EVENT__HAVE_ERR_REMOVE_THREAD_STATE 1 +#cmakedefine EVENT__HAVE_ERR_REMOVE_THREAD_STATE #endif From a9db46aec25911dcc1664838097f85793c633966 Mon Sep 17 00:00:00 2001 From: Mark Ellzey Date: Sun, 20 Dec 2015 00:43:46 -0800 Subject: [PATCH 2/3] CMAKE CMAKE CMAKE CLEANUPS It's almost useful. --- CMakeLists.txt | 587 ++++++++++++++++++++++------------- cmake/AddCompilerFlags.cmake | 15 + cmake/FindGit.cmake | 45 +++ cmake/VersionViaGit.cmake | 53 ++++ 4 files changed, 479 insertions(+), 221 deletions(-) create mode 100644 cmake/AddCompilerFlags.cmake create mode 100644 cmake/FindGit.cmake create mode 100644 cmake/VersionViaGit.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 479caefb..af1ea37f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,8 +21,8 @@ cmake_minimum_required(VERSION 2.8.0 FATAL_ERROR) if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE Release - CACHE STRING "Set build type to Debug o Release (default Release)" FORCE) + set(CMAKE_BUILD_TYPE Release + CACHE STRING "Set build type to Debug o Release (default Release)" FORCE) endif() # get rid of the extra default configurations @@ -31,78 +31,9 @@ set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Limited configuratio project(libevent C) -set(EVENT_VERSION_MAJOR 2) -set(EVENT_VERSION_MINOR 1) -set(EVENT_VERSION_PATCH 5) -set(EVENT_NUMERIC_VERSION 0x02010500) - -set(EVENT_PACKAGE_VERSION "${EVENT_VERSION_MAJOR}.${EVENT_VERSION_MINOR}.${EVENT_VERSION_PATCH}") - -# what is the point of MAJOR/MINOR/PATCH if they are just going -# to be the same as the above, am I missing something? - ellzey? -set(EVENT_ABI_MAJOR 2) -set(EVENT_ABI_MINOR 1) -set(EVENT_ABI_PATCH 5) - -set(EVENT_ABI_LIBVERSION "${EVENT_ABI_MAJOR}.${EVENT_ABI_MINOR}.${EVENT_ABI_PATCH}") +set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/") -######## the following section sets the development stage name. Defaults -######## to beta, but with the option of alpha, rc, and release. - - -# only a subset of names can be used, defaults to "beta" -set(EVENT__STAGE_VERSION "beta" - CACHE STRING "set EVENT_STAGE_VERSION") - -# a list that defines what can set for EVENT_STAGE_VERSION -set(EVENT__ALLOWED_STAGE_NAMES - beta - alpha - rc - release) - -# attempt to find the EVENT__STAGE_VERSION in the allowed list -# of accepted stage names, the return value is stord in -# EVENT__STAGE_RET -list(FIND - EVENT__ALLOWED_STAGE_NAMES - ${EVENT__STAGE_VERSION} - EVENT__STAGE_RET) - -# if EVENT__STAGE_RET is -1, the name was not -# found, so we fall back to "beta". -set(EVENT_STAGE_VERSION "beta") - -if (EVENT__STAGE_RET EQUAL "-1") - message(WARNING "${EVENT__STAGE_VERSION} invalid, defaulting to ${EVENT_STAGE_VERSION}") -else() - set(EVENT_STAGE_VERSION ${EVENT__STAGE_VERSION}) -endif() - -set(EVENT_VERSION "${EVENT_VERSION_MAJOR}.${EVENT_VERSION_MINOR}.${EVENT_VERSION_PATCH}-${EVENT_STAGE_VERSION}") - -option(EVENT__BUILD_SHARED_LIBRARIES "Define if libevent should be built with shared libraries instead of archives" OFF) -option(EVENT__DISABLE_DEBUG_MODE "Define if libevent should build without support for a debug mode" OFF) -option(EVENT__ENABLE_VERBOSE_DEBUG "Enables verbose debugging" OFF) -option(EVENT__DISABLE_MM_REPLACEMENT "Define if libevent should not allow replacing the mm functions" OFF) -option(EVENT__DISABLE_THREAD_SUPPORT "Define if libevent should not be compiled with thread support" OFF) -option(EVENT__DISABLE_OPENSSL "Define if libevent should build without support for OpenSSL encrpytion" OFF) -option(EVENT__DISABLE_BENCHMARK "Defines if libevent should build without the benchmark exectuables" OFF) -option(EVENT__DISABLE_TESTS "If tests should be compiled or not" OFF) -option(EVENT__DISABLE_REGRESS "Disable the regress tests" OFF) -option(EVENT__DISABLE_SAMPLES "Disable sample files" OFF) -option(EVENT__FORCE_KQUEUE_CHECK "When crosscompiling forces running a test program that verifies that Kqueue works with pipes. Note that this requires you to manually run the test program on the the cross compilation target to verify that it works. See cmake documentation for try_run for more details" OFF) -option(EVENT__COVERAGE "Enable running gcov to get a test coverage report (only works with GCC/CLang). Make sure to enable -DCMAKE_BUILD_TYPE=Debug as well." OFF) -# TODO: Add --disable-largefile omit support for large files - -# Put the libaries and binaries that get built into directories at the -# top of the build tree rather than in hard-to-find leaf directories. -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) - -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/") include(CheckFunctionExistsEx) include(CheckFileOffsetBits) include(CheckFunctionExists) @@ -115,19 +46,96 @@ include(CheckStructHasMember) include(CheckCSourceCompiles) include(CheckPrototypeDefinition) include(CheckFunctionKeywords) -include(CheckCCompilerFlag) +include(AddCompilerFlags) +include(VersionViaGit) -macro(add_compiler_flags _flags) - foreach(flag ${_flags}) - string(REGEX REPLACE "[-.+/:= ]" "_" _flag_esc "${flag}") +event_fuzzy_version_from_git() - check_c_compiler_flag("${flag}" check_c_compiler_flag_${_flag_esc}) +set(EVENT_VERSION_MAJOR ${EVENT_GIT___VERSION_MAJOR}) +set(EVENT_VERSION_MINOR ${EVENT_GIT___VERSION_MINOR}) +set(EVENT_VERSION_PATCH ${EVENT_GIT___VERSION_PATCH}) - if (check_c_compiler_flag_${_flag_esc}) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}") - endif() - endforeach() -endmacro() + +set(EVENT_ABI_MAJOR ${EVENT_VERSION_MAJOR}) +set(EVENT_ABI_MINOR ${EVENT_VERSION_MINOR}) +set(EVENT_ABI_PATCH ${EVENT_VERSION_PATCH}) + +set(EVENT_ABI_LIBVERSION + "${EVENT_ABI_MAJOR}.${EVENT_ABI_MINOR}.${EVENT_ABI_PATCH}") + +set(EVENT_PACKAGE_VERSION + "${EVENT_VERSION_MAJOR}.${EVENT_VERSION_MINOR}.${EVENT_VERSION_PATCH}") + +set(EVENT_NUMERIC_VERSION 0x02010500) + +# only a subset of names can be used, defaults to "beta" +set(EVENT__STAGE_NAME "${EVENT_GIT___VERSION_STAGE}" + CACHE STRING "set EVENT_STAGE_NAM") + +# a list that defines what can set for EVENT_STAGE_VERSION +set(EVENT__ALLOWED_STAGE_NAMES + rc + beta + alpha + release) + +# attempt to find the EVENT__STAGE_VERSION in the allowed list +# of accepted stage names, the return value is stord in +# EVENT__STAGE_RET + +list(FIND EVENT__ALLOWED_STAGE_NAMES + ${EVENT__STAGE_NAME} + EVENT__STAGE_RET) + +if (EVENT__STAGE_RET EQUAL "-1") + set(EVENT__STAGE_NAM "beta") +endif() + +set(EVENT_VERSION + "${EVENT_VERSION_MAJOR}.${EVENT_VERSION_MINOR}.${EVENT_VERSION_PATCH}-${EVENT_STAGE_NAM}") + +option(EVENT__BUILD_SHARED_LIBRARIES + "Define if libevent should be built with shared libraries instead of archives" OFF) + +option(EVENT__DISABLE_DEBUG_MODE + "Define if libevent should build without support for a debug mode" OFF) + +option(EVENT__ENABLE_VERBOSE_DEBUG + "Enables verbose debugging" OFF) + +option(EVENT__DISABLE_MM_REPLACEMENT + "Define if libevent should not allow replacing the mm functions" OFF) + +option(EVENT__DISABLE_THREAD_SUPPORT + "Define if libevent should not be compiled with thread support" OFF) + +option(EVENT__DISABLE_OPENSSL + "Define if libevent should build without support for OpenSSL encrpytion" OFF) + +option(EVENT__DISABLE_BENCHMARK + "Defines if libevent should build without the benchmark exectuables" OFF) + +option(EVENT__DISABLE_TESTS + "If tests should be compiled or not" OFF) + +option(EVENT__DISABLE_REGRESS + "Disable the regress tests" OFF) + +option(EVENT__DISABLE_SAMPLES + "Disable sample files" OFF) + +option(EVENT__FORCE_KQUEUE_CHECK + "When crosscompiling forces running a test program that verifies that Kqueue works with pipes. Note that this requires you to manually run the test program on the the cross compilation target to verify that it works. See cmake documentation for try_run for more details" OFF) + +# TODO: Add --disable-largefile omit support for large files +option(EVENT__COVERAGE +"Enable running gcov to get a test coverage report (only works with GCC/CLang). Make sure to enable -DCMAKE_BUILD_TYPE=Debug as well." OFF) + +# Put the libaries and binaries that get built into directories at the +# top of the build tree rather than in hard-to-find leaf directories. +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) if (EVENT__ENABLE_VERBOSE_DEBUG) add_definitions(-DUSE_DBUG=1) @@ -135,73 +143,63 @@ endif() # Setup compiler flags for coverage. if (EVENT__COVERAGE) - if(NOT CMAKE_COMPILER_IS_GNUCC) - if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - message(FATAL_ERROR "Trying to compile coverage support (--DEVENT__COVERAGE) but compiler is not GNU gcc! Aborting... You can set this on the command line using CC=/usr/bin/gcc CXX=/usr/bin/g++ cmake ..") - endif() + if ((NOT CMAKE_COMPILER_IS_GNUCC) AND (NOT ${CMAKE_CXX_COMPILER_ID} STREQAL "Clang")) + message(FATAL_ERROR"Trying to compile coverage support, but compiler is not GNU gcc! Try CC=/usr/bin/gcc CXX=/usr/bin/g++ cmake ..") endif() if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") - message(FATAL_ERROR "Code coverage results with an optimised (non-Debug) build may be misleading! Add -DCMAKE_BUILD_TYPE=Debug") + message(FATAL_ERROR "Coverage requires -DCMAKE_BUILD_TYPE=Debug") endif() message(STATUS "Setting coverage compiler flags") - add_compiler_flags(-g -O0 -fprofile-arcs -ftest-coverage) + add_compiler_flags(-g -O0 -fprofile-arcs -ftest-coverage) endif() # GCC specific options. if (CMAKE_COMPILER_IS_GNUCC) - option(EVENT__DISABLE_GCC_WARNINGS "Disable verbose warnings with GCC" OFF) option(EVENT__ENABLE_GCC_HARDENING "Enable compiler security checks" OFF) option(EVENT__ENABLE_GCC_FUNCTION_SECTIONS "Enable gcc function sections" OFF) option(EVENT__ENABLE_GCC_WARNINGS "Make all GCC warnings into errors" OFF) - list(APPEND __FLAGS -Wall) + list(APPEND __FLAGS -Wall) if (EVENT__DISABLE_GCC_WARNINGS) - list(APPEND __FLAGS -w) + list(APPEND __FLAGS -w) endif() if (EVENT__ENABLE_GCC_HARDENING) - list(APPEND __FLAGS - -fstack-protector-all - -fwrapv - -fPIE - -Wstack-protector - "--param ssp-buffer-size=1") + list(APPEND __FLAGS + -fstack-protector-all + -fwrapv + -fPIE + -Wstack-protector + "--param ssp-buffer-size=1") - add_definitions(-D_FORTIFY_SOURCE=2) + add_definitions(-D_FORTIFY_SOURCE=2) endif() if (EVENT__ENABLE_GCC_FUNCTION_SECTIONS) - list(APPEND __FLAGS -ffunction-sections) + list(APPEND __FLAGS -ffunction-sections) # TODO: Add --gc-sections support. We need some checks for NetBSD to ensure this works. endif() if (EVENT__ENABLE_GCC_WARNINGS) - list(APPEND __FLAGS -Werror) + list(APPEND __FLAGS -Werror) endif() # We need to test for at least gcc 2.95 here, because older versions don't # have -fno-strict-aliasing - list(APPEND __FLAGS -fno-strict-aliasing) + list(APPEND __FLAGS -fno-strict-aliasing) - #execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion - # OUTPUT_VARIABLE GCC_VERSION) - #if (GCC_VERSION VERSION_GREATER 2.95) - # message(STATUS "GCC Version >= 2.95 enabling no-strict-aliasing") - # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing") - #endif() - - add_compiler_flags(__FLAGS) + add_compiler_flags(__FLAGS) endif() if (APPLE) # Get rid of deprecated warnings for OpenSSL on OSX 10.7 and greater. - add_compiler_flags( - -Wno-error=deprecated-declarations - -Qunused-arguments) + add_compiler_flags( + -Wno-error=deprecated-declarations + -Qunused-arguments) endif() # Winsock. @@ -389,13 +387,13 @@ endif() check_function_keywords("inline" "__inline" "__inline__") if (HAVE_INLINE) - set (EVENT__inline inline) + set (EVENT__inline inline) elseif (HAVE___INLINE) - set(EVENT__inline __inline) + set(EVENT__inline __inline) elseif(HAVE___INLINE__) - set(EVENT__inline __inline__) + set(EVENT__inline __inline__) else() - set(EVENT__inline) + set(EVENT__inline) endif() CHECK_SYMBOL_EXISTS(TAILQ_FOREACH sys/queue.h EVENT__HAVE_TAILQFOREACH) @@ -410,16 +408,17 @@ CHECK_TYPE_SIZE(size_t EVENT__SIZEOF_SIZE_T) if(NOT EVENT__SIZEOF_SIZE_T) set(EVENT__size_t unsigned) - # and the point is??? + # and the point is??? set(EVENT__SIZEOF_SIZE_T ${EVENT__SIZEOF_UNSIGNED}) else() - set(EVENT__size_t "size_t") + set(EVENT__size_t "size_t") endif() CHECK_TYPE_SIZE("off_t" EVENT__SIZEOF_OFF_T) CHECK_TYPE_SIZE(ssize_t EVENT__SIZEOF_SSIZE_T) CHECK_TYPE_SIZE(SSIZE_T EVENT__SIZEOF_UPPERCASE_SSIZE_T) +# Winsock. if(NOT EVENT__SIZEOF_SSIZE_T) if(EVENT__SIZEOF_UPPERCASE_SSIZE_T) set(EVENT__ssize_t SSIZE_T) @@ -433,10 +432,10 @@ endif() CHECK_TYPE_SIZE(socklen_t EVENT__SIZEOF_SOCKLEN_T) if(NOT EVENT__SIZEOF_SOCKLEN_T) set(EVENT__socklen_t "unsigned int") - # what is the poitn of this if EVENT__SIZEOF_UNSIGNED_INT is 0? + # what is the poitn of this if EVENT__SIZEOF_UNSIGNED_INT is 0? set(EVENT__SIZEOF_SOCKLEN_T ${EVENT__SIZEOF_UNSIGNED_INT}) else() - set(EVENT__socklen_t "socklen_t") + set(EVENT__socklen_t "socklen_t") endif() CHECK_TYPE_SIZE(pid_t EVENT__SIZEOF_PID_T) @@ -446,7 +445,7 @@ if(NOT EVENT__SIZEOF_PID_T) endif() if (NOT EVENT__DISABLE_THREAD_SUPPORT) - CHECK_TYPE_SIZE(pthread_t EVENT__SIZEOF_PTHREAD_T) + CHECK_TYPE_SIZE(pthread_t EVENT__SIZEOF_PTHREAD_T) endif() if(EVENT__HAVE_CLOCK_GETTIME) @@ -520,21 +519,36 @@ endif() CHECK_TYPE_SIZE("struct in6_addr" EVENT__HAVE_STRUCT_IN6_ADDR) if(EVENT__HAVE_STRUCT_IN6_ADDR) - CHECK_STRUCT_HAS_MEMBER("struct in6_addr" s6_addr16 "${SOCKADDR_HEADERS}" EVENT__HAVE_STRUCT_IN6_ADDR_S6_ADDR16) - CHECK_STRUCT_HAS_MEMBER("struct in6_addr" s6_addr32 "${SOCKADDR_HEADERS}" EVENT__HAVE_STRUCT_IN6_ADDR_S6_ADDR32) + CHECK_STRUCT_HAS_MEMBER("struct in6_addr" + s6_addr16 "${SOCKADDR_HEADERS}" + EVENT__HAVE_STRUCT_IN6_ADDR_S6_ADDR16) + + CHECK_STRUCT_HAS_MEMBER("struct in6_addr" + s6_addr32 "${SOCKADDR_HEADERS}" + EVENT__HAVE_STRUCT_IN6_ADDR_S6_ADDR32) endif() CHECK_TYPE_SIZE("sa_family_t" EVENT__HAVE_SA_FAMILY_T) CHECK_TYPE_SIZE("struct sockaddr_in6" EVENT__HAVE_STRUCT_SOCKADDR_IN6) + if(EVENT__HAVE_STRUCT_SOCKADDR_IN6) - CHECK_STRUCT_HAS_MEMBER("struct sockaddr_in6" sin6_len "${SOCKADDR_HEADERS}" EVENT__HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN) - CHECK_STRUCT_HAS_MEMBER("struct sockaddr_in6" sin_len "${SOCKADDR_HEADERS}" EVENT__HAVE_STRUCT_SOCKADDR_IN_SIN_LEN) + CHECK_STRUCT_HAS_MEMBER("struct sockaddr_in6" + sin6_len "${SOCKADDR_HEADERS}" + EVENT__HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN) + + CHECK_STRUCT_HAS_MEMBER("struct sockaddr_in6" + sin_len "${SOCKADDR_HEADERS}" + EVENT__HAVE_STRUCT_SOCKADDR_IN_SIN_LEN) endif() CHECK_TYPE_SIZE("struct sockaddr_storage" EVENT__HAVE_STRUCT_SOCKADDR_STORAGE) if(EVENT__HAVE_STRUCT_SOCKADDR_STORAGE) - CHECK_STRUCT_HAS_MEMBER("struct sockaddr_storage" ss_family "${SOCKADDR_HEADERS}" EVENT__HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY) - CHECK_STRUCT_HAS_MEMBER("struct sockaddr_storage" __ss_family "${SOCKADDR_HEADERS}" EVENT__HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY) + CHECK_STRUCT_HAS_MEMBER("struct sockaddr_storage" + ss_family "${SOCKADDR_HEADERS}" + EVENT__HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY) + + CHECK_STRUCT_HAS_MEMBER("struct sockaddr_storage" + __ss_family "${SOCKADDR_HEADERS}" EVENT__HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY) endif() # Group the source files. @@ -560,16 +574,14 @@ set(HDR_PRIVATE strlcpy-internal.h util-internal.h evconfig-private.h - compat/sys/queue.h - ) + compat/sys/queue.h) set(HDR_COMPAT include/evdns.h include/evrpc.h include/event.h include/evhttp.h - include/evutil.h - ) + include/evutil.h) set(HDR_PUBLIC include/event2/buffer.h @@ -596,8 +608,7 @@ set(HDR_PUBLIC include/event2/thread.h include/event2/util.h include/event2/visibility.h - ${PROJECT_BINARY_DIR}/include/event2/event-config.h - ) + ${PROJECT_BINARY_DIR}/include/event2/event-config.h) set(SRC_CORE buffer.c @@ -615,8 +626,7 @@ set(SRC_CORE listener.c log.c signal.c - strlcpy.c - ) + strlcpy.c) if(EVENT__HAVE_SELECT) list(APPEND SRC_CORE select.c) @@ -644,10 +654,14 @@ endif() if (NOT EVENT__DISABLE_OPENSSL) find_package(OpenSSL REQUIRED) + set(EVENT__HAVE_OPENSSL 1) + message(STATUS "OpenSSL include: ${OPENSSL_INCLUDE_DIR}") message(STATUS "OpenSSL lib: ${OPENSSL_LIBRARIES}") + include_directories(${OPENSSL_INCLUDE_DIR}) + list(APPEND SRC_CORE bufferevent_openssl.c) list(APPEND HDR_PUBLIC include/event2/bufferevent_ssl.h) list(APPEND LIB_APPS ${OPENSSL_LIBRARIES}) @@ -659,8 +673,10 @@ if (NOT EVENT__DISABLE_THREAD_SUPPORT) else() find_package(Threads REQUIRED) if (NOT CMAKE_USE_PTHREADS_INIT) - message(FATAL_ERROR "Failed to find Pthreads, set EVENT__DISABLE_THREAD_SUPPORT to turn off thread support") + message(FATAL_ERROR + "Failed to find Pthreads, set EVENT__DISABLE_THREAD_SUPPORT to disable") endif() + set(EVENT__HAVE_PTHREADS 1) list(APPEND SRC_CORE evthread_pthread.c) list(APPEND LIB_APPS ${CMAKE_THREAD_LIBS_INIT}) @@ -672,9 +688,10 @@ if (NOT EVENT__DISABLE_TESTS) find_package(ZLIB) if (ZLIB_LIBRARY) + include_directories(${ZLIB_INCLUDE_DIRS}) + set(EVENT__HAVE_ZLIB 1) set(EVENT__HAVE_ZLIB_H) - include_directories(${ZLIB_INCLUDE_DIRS}) list(APPEND LIB_APPS ${ZLIB_LIBRARIES}) endif() endif() @@ -683,8 +700,7 @@ set(SRC_EXTRA event_tagging.c http.c evdns.c - evrpc.c - ) + evrpc.c) add_definitions(-DHAVE_CONFIG_H) @@ -700,14 +716,16 @@ if(WIN32) bufferevent_async.c event_iocp.c evthread_win32.c - win32select.c - ) + win32select.c) list(APPEND HDR_PRIVATE WIN32-Code/getopt.h) set(EVENT__DNS_USE_FTIME_FOR_ID 1) - add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE) set(LIB_PLATFORM ws2_32) + add_definitions( + -D_CRT_SECURE_NO_WARNINGS + -D_CRT_NONSTDC_NO_DEPRECATE) + include_directories(./WIN32-Code) endif() @@ -728,15 +746,13 @@ include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}/include) if (EVENT__BUILD_SHARED_LIBRARIES) set(EVENT__LIBRARY_TYPE SHARED) - if (CMAKE_COMPILER_IS_GNUCC) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden") - elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden") + if ((CMAKE_COMPILER_IS_GNUCC) OR (${CMAKE_C_COMPILER_ID} STREQUAL "Clang")) + add_compiler_flags(-fvisibility=hidden) elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "SunPro") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -xldscope=hidden") - endif () - set(EVENT__NEED_DLLIMPORT 1) + add_compiler_flags(-xldscope=hidden) + endif() + set(EVENT__NEED_DLLIMPORT 1) else (EVENT__BUILD_SHARED_LIBRARIES) set(EVENT__LIBRARY_TYPE STATIC) endif (EVENT__BUILD_SHARED_LIBRARIES) @@ -744,7 +760,7 @@ endif (EVENT__BUILD_SHARED_LIBRARIES) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/event-config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/include/event2/event-config.h - NEWLINE_STYLE UNIX) + NEWLINE_STYLE UNIX) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/evconfig-private.h.cmake @@ -759,16 +775,14 @@ add_library(event_core ${EVENT__LIBRARY_TYPE} ${HDR_PRIVATE} ${HDR_COMPAT} ${HDR_PUBLIC} - ${SRC_CORE} - ) + ${SRC_CORE}) add_library(event_extra ${EVENT__LIBRARY_TYPE} ${HDR_PRIVATE} ${HDR_COMPAT} ${HDR_PUBLIC} ${SRC_CORE} - ${SRC_EXTRA} - ) + ${SRC_EXTRA}) # library exists for historical reasons; it contains the contents of # both libevent_core and libevent_extra. You shouldn’t use it; it may @@ -778,8 +792,7 @@ add_library(event ${EVENT__LIBRARY_TYPE} ${HDR_COMPAT} ${HDR_PUBLIC} ${SRC_CORE} - ${SRC_EXTRA} - ) + ${SRC_EXTRA}) if (EVENT__BUILD_SHARED_LIBRARIES) # Prepare static library to be linked to tests that need hidden symbols @@ -788,8 +801,8 @@ if (EVENT__BUILD_SHARED_LIBRARIES) ${HDR_COMPAT} ${HDR_PUBLIC} ${SRC_CORE} - ${SRC_EXTRA} - ) + ${SRC_EXTRA}) + set(EVENT_EXTRA_FOR_TEST event_extra_static) target_link_libraries(event_core ${OPENSSL_LIBRARIES} @@ -804,9 +817,17 @@ if (EVENT__BUILD_SHARED_LIBRARIES) ${CMAKE_THREAD_LIBS_INIT} ${LIB_PLATFORM}) - set_target_properties(event PROPERTIES SOVERSION ${EVENT_ABI_LIBVERSION}) - set_target_properties(event_core PROPERTIES SOVERSION ${EVENT_ABI_LIBVERSION}) - set_target_properties(event_extra PROPERTIES SOVERSION ${EVENT_ABI_LIBVERSION}) + set_target_properties(event + PROPERTIES SOVERSION + ${EVENT_ABI_LIBVERSION}) + + set_target_properties(event_core + PROPERTIES SOVERSION + ${EVENT_ABI_LIBVERSION}) + + set_target_properties(event_extra + PROPERTIES SOVERSION + ${EVENT_ABI_LIBVERSION}) else (EVENT__BUILD_SHARED_LIBRARIES) set(EVENT_EXTRA_FOR_TEST event_extra) @@ -836,7 +857,12 @@ if (NOT EVENT__DISABLE_SAMPLES) sample/https-client.c sample/openssl_hostname_validation.c sample/hostcheck.c) - target_link_libraries(https-client event_extra ${LIB_APPS} ${LIB_PLATFORM}) + + target_link_libraries(https-client + event_extra + ${LIB_APPS} + ${LIB_PLATFORM}) + add_dependencies(https-client event_extra) # Requires OpenSSL. @@ -844,8 +870,14 @@ if (NOT EVENT__DISABLE_SAMPLES) endif() foreach(SAMPLE ${SAMPLES}) - add_executable(${SAMPLE} sample/${SAMPLE}.c) - target_link_libraries(${SAMPLE} event_extra ${LIB_APPS} ${LIB_PLATFORM}) + add_executable(${SAMPLE} + sample/${SAMPLE}.c) + + target_link_libraries(${SAMPLE} + event_extra + ${LIB_APPS} + ${LIB_PLATFORM}) + add_dependencies(${SAMPLE} event_extra) endforeach() endif() @@ -855,11 +887,17 @@ if (NOT EVENT__DISABLE_BENCHMARK) set(BENCH_SRC test/${BENCHMARK}.c) if (WIN32) - list(APPEND BENCH_SRC WIN32-Code/getopt.c WIN32-Code/getopt_long.c) + list(APPEND BENCH_SRC + WIN32-Code/getopt.c + WIN32-Code/getopt_long.c) endif() add_executable(${BENCHMARK} ${BENCH_SRC}) - target_link_libraries(${BENCHMARK} event_extra ${LIB_PLATFORM}) + + target_link_libraries(${BENCHMARK} + event_extra + ${LIB_PLATFORM}) + add_dependencies(${BENCHMARK} event_extra) endforeach() endif() @@ -872,13 +910,16 @@ if (NOT EVENT__DISABLE_TESTS) # (We require python to generate the regress tests) find_package(PythonInterp) + if (PYTHONINTERP_FOUND AND PYTHON_VERSION_STRING VERSION_LESS "3.0.0") set(__FOUND_USABLE_PYTHON 1) endif() if (__FOUND_USABLE_PYTHON) message(STATUS "Generating regress tests...") + add_definitions(-DTINYTEST_LOCAL) + add_custom_command( OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/test/regress.gen.c @@ -887,8 +928,7 @@ if (NOT EVENT__DISABLE_TESTS) event_rpcgen.py test/regress.rpc COMMAND ${PYTHON_EXECUTABLE} ../event_rpcgen.py regress.rpc - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test - ) + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) list(APPEND SRC_REGRESS test/regress.c @@ -909,8 +949,7 @@ if (NOT EVENT__DISABLE_TESTS) test/regress_util.c test/tinytest.c ${SRC_CORE} - ${SRC_EXTRA} - ) + ${SRC_EXTRA}) if (WIN32) list(APPEND SRC_REGRESS test/regress_iocp.c) @@ -930,14 +969,18 @@ if (NOT EVENT__DISABLE_TESTS) endif() add_executable(regress ${SRC_REGRESS}) + # While building the test suite we don't want the visibility # header trying to "dllimport" the symbols on windows (it # generates a ton of warnings due to different link # attributes for all of the symbols) - SET_TARGET_PROPERTIES(regress PROPERTIES COMPILE_DEFINITIONS - "EVENT_BUILDING_REGRESS_TEST=1") + SET_TARGET_PROPERTIES(regress + PROPERTIES COMPILE_DEFINITIONS + "EVENT_BUILDING_REGRESS_TEST=1") - target_link_libraries(regress ${LIB_APPS} ${LIB_PLATFORM}) + target_link_libraries(regress + ${LIB_APPS} + ${LIB_PLATFORM}) else() message(WARNING "No suitable Python interpreter found, cannot generate regress tests!") endif() @@ -946,20 +989,20 @@ if (NOT EVENT__DISABLE_TESTS) # # Test programs. # - # all of these, including the cmakelists.txt should be moved - # into the dirctory 'tests' first. - # - # doing this, we can remove all the DISABLE_TESTS stuff, and simply - # do something like: - # - # add_custom_targets(tests) - # add_executable(... EXCLUDE_FROM_ALL ...c) - # add_dependencis(tests testa testb testc) - # add_test(....) - # - # then you can just run 'make tests' instead of them all - # auto-compile|running - # - ellzey + # all of these, including the cmakelists.txt should be moved + # into the dirctory 'tests' first. + # + # doing this, we can remove all the DISABLE_TESTS stuff, and simply + # do something like: + # + # add_custom_targets(tests) + # add_executable(... EXCLUDE_FROM_ALL ...c) + # add_dependencis(tests testa testb testc) + # add_test(....) + # + # then you can just run 'make tests' instead of them all + # auto-compile|running + # - ellzey set(TESTPROGS test-changelist test-eof test-fdleak @@ -967,13 +1010,22 @@ if (NOT EVENT__DISABLE_TESTS) test-time test-weof) - set(ALL_TESTPROGS ${TESTPROGS} test-dumpevents test-ratelim) + set(ALL_TESTPROGS + ${TESTPROGS} + test-dumpevents + test-ratelim) # Create test program executables. foreach (TESTPROG ${ALL_TESTPROGS}) - add_executable(${TESTPROG} test/${TESTPROG}.c) - target_link_libraries(${TESTPROG} ${EVENT_EXTRA_FOR_TEST} ${LIB_PLATFORM}) - add_dependencies(${TESTPROG} ${EVENT_EXTRA_FOR_TEST}) + add_executable(${TESTPROG} + test/${TESTPROG}.c) + + target_link_libraries(${TESTPROG} + ${EVENT_EXTRA_FOR_TEST} + ${LIB_PLATFORM}) + + add_dependencies(${TESTPROG} + ${EVENT_EXTRA_FOR_TEST}) endforeach() # @@ -1026,31 +1078,53 @@ if (NOT EVENT__DISABLE_TESTS) foreach (TESTPROG ${TESTPROGS}) set(TEST_NAME ${TESTPROG}__${BACKEND_TEST_NAME}) - add_test(${TEST_NAME} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TESTPROG}) + + add_test(${TEST_NAME} + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TESTPROG}) + list(APPEND TEST_NAMES ${TEST_NAME}) - set_tests_properties(${TEST_NAME} PROPERTIES ENVIRONMENT "${ENV_VARS}") + + set_tests_properties(${TEST_NAME} + PROPERTIES ENVIRONMENT "${ENV_VARS}") endforeach() # Dump events test. if (__FOUND_USABLE_PYTHON) set(TEST_NAME test-dumpevents__${BACKEND_TEST_NAME}) - add_test(${TEST_NAME} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-dumpevents | ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/check-dumpevents.py) - set_tests_properties(${TEST_NAME} PROPERTIES ENVIRONMENT "${ENV_VARS}") + + add_test(${TEST_NAME} + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-dumpevents | + ${PYTHON_EXECUTABLE} + ${CMAKE_CURRENT_SOURCE_DIR}/test/check-dumpevents.py) + + set_tests_properties(${TEST_NAME} + PROPERTIES ENVIRONMENT "${ENV_VARS}") else() message(WARNING "test-dumpevents will be run without output check since python was not found!") set(TEST_NAME test-dumpevents__${BACKEND_TEST_NAME}_no_check) - add_test(${TEST_NAME} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-dumpevents) - set_tests_properties(${TEST_NAME} PROPERTIES ENVIRONMENT "${ENV_VARS}") + + add_test(${TEST_NAME} + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-dumpevents) + + set_tests_properties(${TEST_NAME} + PROPERTIES ENVIRONMENT "${ENV_VARS}") endif() # Regress tests. if (NOT EVENT__DISABLE_REGRESS AND __FOUND_USABLE_PYTHON) set(TEST_NAME regress__${BACKEND_TEST_NAME}) - add_test(${TEST_NAME} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/regress) - set_tests_properties(${TEST_NAME} PROPERTIES ENVIRONMENT "${ENV_VARS}") - add_test(${TEST_NAME}_debug ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/regress) - set_tests_properties(${TEST_NAME}_debug PROPERTIES ENVIRONMENT "${ENV_VARS};EVENT_DEBUG_MODE=1") + add_test(${TEST_NAME} + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/regress) + + set_tests_properties(${TEST_NAME} + PROPERTIES ENVIRONMENT "${ENV_VARS}") + + add_test(${TEST_NAME}_debug + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/regress) + + set_tests_properties(${TEST_NAME}_debug + PROPERTIES ENVIRONMENT "${ENV_VARS};EVENT_DEBUG_MODE=1") endif() endmacro() @@ -1062,9 +1136,14 @@ if (NOT EVENT__DISABLE_TESTS) # Epoll has some extra settings. if (${BACKEND} STREQUAL "EPOLL") - add_backend_test(timerfd_${BACKEND} "${BACKEND_ENV_VARS};EVENT_PRECISE_TIMER=1") - add_backend_test(changelist_${BACKEND} "${BACKEND_ENV_VARS};EVENT_EPOLL_USE_CHANGELIST=yes") - add_backend_test(timerfd_changelist_${BACKEND} "${BACKEND_ENV_VARS};EVENT_EPOLL_USE_CHANGELIST=yes;EVENT_PRECISE_TIMER=1") + add_backend_test(timerfd_${BACKEND} + "${BACKEND_ENV_VARS};EVENT_PRECISE_TIMER=1") + + add_backend_test(changelist_${BACKEND} + "${BACKEND_ENV_VARS};EVENT_EPOLL_USE_CHANGELIST=yes") + + add_backend_test(timerfd_changelist_${BACKEND} + "${BACKEND_ENV_VARS};EVENT_EPOLL_USE_CHANGELIST=yes;EVENT_PRECISE_TIMER=1") else() add_backend_test(${BACKEND} "${BACKEND_ENV_VARS}") endif() @@ -1075,16 +1154,47 @@ if (NOT EVENT__DISABLE_TESTS) # # Group limits, no connection limit. - add_test(test-ratelim__group_lim ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-ratelim -g 30000 -n 30 -t 100 --check-grouplimit 1000 --check-stddev 100) + set(RL_BIN ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-ratelim) + + add_test(test-ratelim__group_lim + ${RL_BIN} + -g 30000 + -n 30 + -t 100 + --check-grouplimit 1000 + --check-stddev 100) # Connection limit, no group limit. - add_test(test-ratelim__con_lim ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-ratelim -c 1000 -n 30 -t 100 --check-connlimit 50 --check-stddev 50) + add_test(test-ratelim__con_lim + ${RL_BIN} + -c 1000 + -n 30 + -t 100 + --check-connlimit 50 + --check-stddev 50) # Connection limit and group limit. - add_test(test-ratelim__group_con_lim ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-ratelim -c 1000 -g 30000 -n 30 -t 100 --check-grouplimit 1000 --check-connlimit 50 --check-stddev 50) + add_test(test-ratelim__group_con_lim + ${RL_BIN} + -c 1000 + -g 30000 + -n 30 + -t 100 + --check-grouplimit 1000 + --check-connlimit 50 + --check-stddev 50) # Connection limit and group limit with independent drain. - add_test(test-ratelim__group_con_lim_drain ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-ratelim -c 1000 -g 35000 -n 30 -t 100 -G 500 --check-grouplimit 1000 --check-connlimit 50 --check-stddev 50) + add_test(test-ratelim__group_con_lim_drain + ${RL_BIN} + -c 1000 + -g 35000 + -n 30 + -t 100 + -G 500 + --check-grouplimit 1000 + --check-connlimit 50 + --check-stddev 50) # Add a "make verify" target, same as for autoconf. # (Important! This will unset all EVENT_NO* environment variables. @@ -1102,11 +1212,20 @@ if (NOT EVENT__DISABLE_TESTS) ") message(STATUS "${WINDOWS_CTEST_COMMAND}") - file(COPY ${CMAKE_CURRENT_BINARY_DIR}/tmp/verify_tests.bat - DESTINATION ${CMAKE_CURRENT_BINARY_DIR} - FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) - file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}/verify_tests.bat" VERIFY_PATH) + file(COPY ${CMAKE_CURRENT_BINARY_DIR}/tmp/verify_tests.bat + DESTINATION + ${CMAKE_CURRENT_BINARY_DIR} + FILE_PERMISSIONS + OWNER_READ + OWNER_WRITE + OWNER_EXECUTE + GROUP_READ + GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE) + + file(TO_NATIVE_PATH + "${CMAKE_CURRENT_BINARY_DIR}/verify_tests.bat" VERIFY_PATH) add_custom_target(verify COMMAND "${VERIFY_PATH}" DEPENDS event ${ALL_TESTPROGS}) @@ -1124,11 +1243,22 @@ if (NOT EVENT__DISABLE_TESTS) # Then we copy the file (this allows us to set execute permission on it) file(COPY ${CMAKE_CURRENT_BINARY_DIR}/tmp/verify_tests.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR} - FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + FILE_PERMISSIONS + OWNER_READ + OWNER_WRITE + OWNER_EXECUTE + GROUP_READ + GROUP_EXECUTE + WORLD_READ + WORLD_EXECUTE) # Create the target that runs the script. - add_custom_target(verify COMMAND ${CMAKE_CURRENT_BINARY_DIR}/verify_tests.sh - DEPENDS event ${ALL_TESTPROGS}) + add_custom_target(verify + COMMAND + ${CMAKE_CURRENT_BINARY_DIR}/verify_tests.sh + DEPENDS + event + ${ALL_TESTPROGS}) endif() if (NOT EVENT__DISABLE_REGRESS AND __FOUND_USABLE_PYTHON) @@ -1184,7 +1314,11 @@ export(PACKAGE libevent) set(EVENT__INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/include" "${PROJECT_BINARY_DIR}/include") -set(LIBEVENT_INCLUDE_DIRS ${EVENT__INCLUDE_DIRS} CACHE PATH "Libevent include directories") + +set(LIBEVENT_INCLUDE_DIRS + ${EVENT__INCLUDE_DIRS} + CACHE PATH "Libevent include directories") + configure_file(${PROJECT_SOURCE_DIR}/cmake/LibeventConfigBuildTree.cmake.in ${PROJECT_BINARY_DIR}/LibeventConfig.cmake @ONLY) @@ -1201,6 +1335,7 @@ file(RELATIVE_PATH # config file is located. set(EVENT__INCLUDE_DIRS "\${EVENT_CMAKE_DIR}/${REL_INCLUDE_DIR}") + configure_file(${PROJECT_SOURCE_DIR}/cmake/LibeventConfig.cmake.in ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/LibeventConfig.cmake @ONLY) @@ -1223,23 +1358,32 @@ install(TARGETS event event_core event_extra LIBRARY DESTINATION "${EVENT_INSTALL_LIB_DIR}" COMPONENT lib ARCHIVE DESTINATION "${EVENT_INSTALL_LIB_DIR}" COMPONENT lib PUBLIC_HEADER DESTINATION "${EVENT_INSTALL_INCLUDE_DIR}/event2" COMPONENT dev) + # Install compat headers install(FILES ${HDR_COMPAT} - DESTINATION "${EVENT_INSTALL_INCLUDE_DIR}" + DESTINATION + "${EVENT_INSTALL_INCLUDE_DIR}" COMPONENT dev) # Install the configs. install(FILES ${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/LibeventConfig.cmake ${PROJECT_BINARY_DIR}/LibeventConfigVersion.cmake - DESTINATION "${EVENT_INSTALL_CMAKE_DIR}" COMPONENT dev) - + DESTINATION + "${EVENT_INSTALL_CMAKE_DIR}" + COMPONENT dev) # Install exports for the install-tree. install(EXPORT LibeventTargets - DESTINATION "${EVENT_INSTALL_CMAKE_DIR}" COMPONENT dev) + DESTINATION + "${EVENT_INSTALL_CMAKE_DIR}" + COMPONENT dev) -set(LIBEVENT_LIBRARIES event event_core event_extra CACHE STRING "Libevent libraries") +set(LIBEVENT_LIBRARIES + event + event_core + event_extra + CACHE STRING "Libevent libraries") message("") message(" ---( Libevent " ${EVENT_VERSION} " )---") @@ -1266,3 +1410,4 @@ message(STATUS "CMAKE_C_COMPILER: " ${CMAKE_C_COMPILER} ) message(STATUS "CMAKE_AR: " ${CMAKE_AR} ) message(STATUS "CMAKE_RANLIB: " ${CMAKE_RANLIB} ) message("") + diff --git a/cmake/AddCompilerFlags.cmake b/cmake/AddCompilerFlags.cmake new file mode 100644 index 00000000..c7da188b --- /dev/null +++ b/cmake/AddCompilerFlags.cmake @@ -0,0 +1,15 @@ +include(CheckCCompilerFlag) + +macro(add_compiler_flags _flags) + foreach(flag ${_flags}) + string(REGEX REPLACE "[-.+/:= ]" "_" _flag_esc "${flag}") + + check_c_compiler_flag("${flag}" check_c_compiler_flag_${_flag_esc}) + + if (check_c_compiler_flag_${_flag_esc}) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}") + endif() + endforeach() +endmacro() + + diff --git a/cmake/FindGit.cmake b/cmake/FindGit.cmake new file mode 100644 index 00000000..2abbfe4e --- /dev/null +++ b/cmake/FindGit.cmake @@ -0,0 +1,45 @@ +# The module defines the following variables: +# GIT_EXECUTABLE - path to git command line client +# GIT_FOUND - true if the command line client was found +# Example usage: +# find_package(Git) +# if(GIT_FOUND) +# message("git found: ${GIT_EXECUTABLE}") +# endif() + +#============================================================================= +# Copyright 2010 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# Look for 'git' or 'eg' (easy git) +set(git_names git eg) + +# Prefer .cmd variants on Windows unless running in a Makefile +# in the MSYS shell. +if(WIN32) + if(NOT CMAKE_GENERATOR MATCHES "MSYS") + set(git_names git.cmd git eg.cmd eg) + endif() +endif() + +find_program(GIT_EXECUTABLE + NAMES ${git_names} + DOC "git command line client") + +mark_as_advanced(GIT_EXECUTABLE) + +# Handle the QUIETLY and REQUIRED arguments and set GIT_FOUND to TRUE if +# all listed variables are TRUE + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Git DEFAULT_MSG GIT_EXECUTABLE) + diff --git a/cmake/VersionViaGit.cmake b/cmake/VersionViaGit.cmake new file mode 100644 index 00000000..30fca3e8 --- /dev/null +++ b/cmake/VersionViaGit.cmake @@ -0,0 +1,53 @@ +# This module defines the following variables utilizing +# git to determine the parent tag. And if found the macro +# will attempt to parse them in the github tag fomat +# +# Usful for auto-versionin in ou CMakeLists +# +# EVENT_GIT___VERSION_FOUND - Version variables foud +# EVENT_GIT___VERSION_MAJOR - Major version. +# EVENT_GIT___VERSION_MINOR - Minor version +# EVENT_GIT___VERSION_STAGE - Stage version +# +# Example usage: +# +# event_fuzzy_version_from_git() +# if (EVENT_GIT___VERSION_FOUND) +# message("Libvent major=${EVENT_GIT___VERSION_MAJOR}") +# message(" minor=${EVENT_GIT___VERSION_MINOR}") +# message(" patch=${EVENT_GIT___VERSION_PATCH}") +# message(" stage=${EVENT_GIT___VERSION_STAGE}") +# endif() + +include(FindGit) + +macro(event_fuzzy_version_from_git) + set(EVENT_GIT___VERSION_FOUND FALSE) + + # set our defaults. + set(EVENT_GIT___VERSION_MAJOR 2) + set(EVENT_GIT___VERSION_MINOR 1) + set(EVENT_GIT___VERSION_PATCH 5) + set(EVENT_GIT___VERSION_STAGE "beta") + + find_package(Git) + + if (GIT_FOUND) + execute_process( + COMMAND + ${GIT_EXECUTABLE} describe --abbrev=0 + WORKING_DIRECTORY + ${PROJECT_SOURCE_DIR} + RESULT_VARIABLE + GITRET + OUTPUT_VARIABLE + GITVERSION) + + if (GITRET EQUAL 0) + string(REGEX REPLACE "^release-([0-9]+)\\.([0-9]+)\\.([0-9]+)-(.*)$" "\\1" EVENT_GIT___VERSION_MAJOR ${GITVERSION}) + string(REGEX REPLACE "^release-([0-9]+)\\.([0-9]+)\\.([0-9]+)-(.*)$" "\\2" EVENT_GIT___VERSION_MINOR ${GITVERSION}) + string(REGEX REPLACE "^release-([0-9]+)\\.([0-9]+)\\.([0-9]+)-(.*)$" "\\3" EVENT_GIT___VERSION_PATCH ${GITVERSION}) + string(REGEX REPLACE "^release-([0-9]+)\\.([0-9]+)\\.([0-9]+)-(.*)$" "\\4" EVENT_GIT___VERSION_STAGE ${GITVERSION}) + endif() + endif() +endmacro() From 6aad23d8d5b602eaacaf4f35131704edd318ccec Mon Sep 17 00:00:00 2001 From: Mark Ellzey Date: Sun, 20 Dec 2015 01:56:25 -0800 Subject: [PATCH 3/3] CMake syntax fixes fo .in files --- event-config.h.cmake | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/event-config.h.cmake b/event-config.h.cmake index 05fcf559..130fc1f7 100644 --- a/event-config.h.cmake +++ b/event-config.h.cmake @@ -428,9 +428,9 @@ #ifdef __USE_UNUSED_DEFINITIONS__ /* Define to necessary symbol if this constant uses a non-standard name on your system. */ -/* XXX: Hello, this isn't even used, nor is it defined anywhere... - Ellzey +/* XXX: Hello, this isn't even used, nor is it defined anywhere... - Ellzey */ #define EVENT__PTHREAD_CREATE_JOINABLE ${EVENT__PTHREAD_CREATE_JOINABLE} -#endif /* __USE_UNUSED_DEFINITIONS__ */ +#endif /* The size of `pthread_t', as computed by sizeof. */ #define EVENT__SIZEOF_PTHREAD_T @EVENT__SIZEOF_PTHREAD_T@ @@ -481,8 +481,8 @@ #define EVENT___FILE_OFFSET_BITS @EVENT___FILE_OFFSET_BITS@ /* Define for large files, on AIX-style hosts. */ -#define @_LARGE_FILES@ /* THIS ISN'T EVEN SET IN CMAKELISTS */ -#endif /* __THESE_ARE_NOT_CONFIG_H_THINGS_THEY_ARE_DASH_D_THINGS__ */ +#define @_LARGE_FILES@ +#endif #ifdef _WhAT_DOES_THIS_EVEN_DO_ /* Define to empty if `const' does not conform to ANSI C. */ @@ -504,7 +504,7 @@ * - Ellzey */ -#define EVENT__inline @EVENT__inline@ +#define EVENT__inline @EVENT__inline@ #endif /* Define to `int' if does not define. */