1*663afb9bSAndroid Build Coastguard Worker# 2*663afb9bSAndroid Build Coastguard Worker# Libevent CMake project 3*663afb9bSAndroid Build Coastguard Worker# 4*663afb9bSAndroid Build Coastguard Worker# Based on initial work by: 5*663afb9bSAndroid Build Coastguard Worker# Alexey Ozeritsky 6*663afb9bSAndroid Build Coastguard Worker# 7*663afb9bSAndroid Build Coastguard Worker# Additional changes: 8*663afb9bSAndroid Build Coastguard Worker# Brodie Thiesfield 9*663afb9bSAndroid Build Coastguard Worker# Joakim Soderberg 10*663afb9bSAndroid Build Coastguard Worker# Trond Norbye 11*663afb9bSAndroid Build Coastguard Worker# Sergei Nikulov 12*663afb9bSAndroid Build Coastguard Worker# 13*663afb9bSAndroid Build Coastguard Worker# Build example: 14*663afb9bSAndroid Build Coastguard Worker# 15*663afb9bSAndroid Build Coastguard Worker# cd libevent 16*663afb9bSAndroid Build Coastguard Worker# md build 17*663afb9bSAndroid Build Coastguard Worker# cd build 18*663afb9bSAndroid Build Coastguard Worker# cmake -G "Visual Studio 10" .. 19*663afb9bSAndroid Build Coastguard Worker# start libevent.sln 20*663afb9bSAndroid Build Coastguard Worker# 21*663afb9bSAndroid Build Coastguard Worker 22*663afb9bSAndroid Build Coastguard Workercmake_minimum_required(VERSION 3.1 FATAL_ERROR) 23*663afb9bSAndroid Build Coastguard Worker 24*663afb9bSAndroid Build Coastguard Workerif (POLICY CMP0054) 25*663afb9bSAndroid Build Coastguard Worker cmake_policy(SET CMP0054 NEW) 26*663afb9bSAndroid Build Coastguard Workerendif() 27*663afb9bSAndroid Build Coastguard Workerif (POLICY CMP0074) 28*663afb9bSAndroid Build Coastguard Worker cmake_policy(SET CMP0074 NEW) 29*663afb9bSAndroid Build Coastguard Workerendif() 30*663afb9bSAndroid Build Coastguard Workerif (POLICY CMP0075) 31*663afb9bSAndroid Build Coastguard Worker cmake_policy(SET CMP0075 NEW) 32*663afb9bSAndroid Build Coastguard Workerendif() 33*663afb9bSAndroid Build Coastguard Worker 34*663afb9bSAndroid Build Coastguard Workerif(NOT CMAKE_BUILD_TYPE) 35*663afb9bSAndroid Build Coastguard Worker set(CMAKE_BUILD_TYPE Release 36*663afb9bSAndroid Build Coastguard Worker CACHE STRING "Set build type to Debug o Release (default Release)" FORCE) 37*663afb9bSAndroid Build Coastguard Workerendif() 38*663afb9bSAndroid Build Coastguard Workerstring(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER) 39*663afb9bSAndroid Build Coastguard Worker 40*663afb9bSAndroid Build Coastguard Worker# get rid of the extra default configurations 41*663afb9bSAndroid Build Coastguard Worker# what? why would you get id of other useful build types? - Ellzey 42*663afb9bSAndroid Build Coastguard Workerset(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Limited configurations" FORCE) 43*663afb9bSAndroid Build Coastguard Worker 44*663afb9bSAndroid Build Coastguard Workerset(EVENT__LIBRARY_TYPE DEFAULT CACHE STRING 45*663afb9bSAndroid Build Coastguard Worker "Set library type to SHARED/STATIC/BOTH (default SHARED for MSVC, otherwise BOTH)") 46*663afb9bSAndroid Build Coastguard Worker 47*663afb9bSAndroid Build Coastguard Workerproject(libevent C) 48*663afb9bSAndroid Build Coastguard Worker 49*663afb9bSAndroid Build Coastguard Workerlist(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/") 50*663afb9bSAndroid Build Coastguard Workerstring(REGEX MATCH "SunOS" SOLARIS "${CMAKE_SYSTEM_NAME}") 51*663afb9bSAndroid Build Coastguard Worker 52*663afb9bSAndroid Build Coastguard Worker 53*663afb9bSAndroid Build Coastguard Workerinclude(CheckTypeSize) 54*663afb9bSAndroid Build Coastguard Workerinclude(CheckFileOffsetBits) 55*663afb9bSAndroid Build Coastguard Workerinclude(Macros) 56*663afb9bSAndroid Build Coastguard Workerinclude(CheckVariableExists) 57*663afb9bSAndroid Build Coastguard Workerinclude(CheckSymbolExists) 58*663afb9bSAndroid Build Coastguard Workerinclude(CheckStructHasMember) 59*663afb9bSAndroid Build Coastguard Workerinclude(CheckCSourceCompiles) 60*663afb9bSAndroid Build Coastguard Workerinclude(CheckPrototypeDefinition) 61*663afb9bSAndroid Build Coastguard Workerinclude(CheckFunctionKeywords) 62*663afb9bSAndroid Build Coastguard Workerinclude(CheckConstExists) 63*663afb9bSAndroid Build Coastguard Workerinclude(AddCompilerFlags) 64*663afb9bSAndroid Build Coastguard Workerinclude(VersionViaGit) 65*663afb9bSAndroid Build Coastguard Worker 66*663afb9bSAndroid Build Coastguard Workerevent_fuzzy_version_from_git() 67*663afb9bSAndroid Build Coastguard Worker 68*663afb9bSAndroid Build Coastguard Workerset(EVENT_VERSION_MAJOR ${EVENT_GIT___VERSION_MAJOR}) 69*663afb9bSAndroid Build Coastguard Workerset(EVENT_VERSION_MINOR ${EVENT_GIT___VERSION_MINOR}) 70*663afb9bSAndroid Build Coastguard Workerset(EVENT_VERSION_PATCH ${EVENT_GIT___VERSION_PATCH}) 71*663afb9bSAndroid Build Coastguard Workerset(EVENT_VERSION_STAGE ${EVENT_GIT___VERSION_STAGE}) 72*663afb9bSAndroid Build Coastguard Worker 73*663afb9bSAndroid Build Coastguard Worker 74*663afb9bSAndroid Build Coastguard Workerset(EVENT_ABI_MAJOR ${EVENT_VERSION_MAJOR}) 75*663afb9bSAndroid Build Coastguard Workerset(EVENT_ABI_MINOR ${EVENT_VERSION_MINOR}) 76*663afb9bSAndroid Build Coastguard Workerset(EVENT_ABI_PATCH ${EVENT_VERSION_PATCH}) 77*663afb9bSAndroid Build Coastguard Worker 78*663afb9bSAndroid Build Coastguard Workerset(EVENT_ABI_LIBVERSION 79*663afb9bSAndroid Build Coastguard Worker "${EVENT_ABI_MAJOR}.${EVENT_ABI_MINOR}.${EVENT_ABI_PATCH}") 80*663afb9bSAndroid Build Coastguard Worker 81*663afb9bSAndroid Build Coastguard Workerset(EVENT_PACKAGE_VERSION 82*663afb9bSAndroid Build Coastguard Worker "${EVENT_VERSION_MAJOR}.${EVENT_VERSION_MINOR}.${EVENT_VERSION_PATCH}") 83*663afb9bSAndroid Build Coastguard Worker 84*663afb9bSAndroid Build Coastguard Workerset(EVENT_NUMERIC_VERSION 0x02010c00) 85*663afb9bSAndroid Build Coastguard Worker# equals to VERSION_INFO in Makefile.am 86*663afb9bSAndroid Build Coastguard Workerset(EVENT_ABI_LIBVERSION_CURRENT 7) 87*663afb9bSAndroid Build Coastguard Workerset(EVENT_ABI_LIBVERSION_REVISION 1) 88*663afb9bSAndroid Build Coastguard Workerset(EVENT_ABI_LIBVERSION_AGE 0) 89*663afb9bSAndroid Build Coastguard Worker 90*663afb9bSAndroid Build Coastguard Worker# equals to RELEASE in Makefile.am 91*663afb9bSAndroid Build Coastguard Workerset(EVENT_PACKAGE_RELEASE 2.1) 92*663afb9bSAndroid Build Coastguard Worker 93*663afb9bSAndroid Build Coastguard Worker# only a subset of names can be used, defaults to "beta" 94*663afb9bSAndroid Build Coastguard Workerset(EVENT_STAGE_NAME ${EVENT_VERSION_STAGE}) 95*663afb9bSAndroid Build Coastguard Worker 96*663afb9bSAndroid Build Coastguard Worker# a list that defines what can set for EVENT_STAGE_VERSION 97*663afb9bSAndroid Build Coastguard Workerset(EVENT__ALLOWED_STAGE_NAMES 98*663afb9bSAndroid Build Coastguard Worker rc 99*663afb9bSAndroid Build Coastguard Worker beta 100*663afb9bSAndroid Build Coastguard Worker alpha 101*663afb9bSAndroid Build Coastguard Worker alpha-dev 102*663afb9bSAndroid Build Coastguard Worker release 103*663afb9bSAndroid Build Coastguard Worker stable 104*663afb9bSAndroid Build Coastguard Worker) 105*663afb9bSAndroid Build Coastguard Workerlist( 106*663afb9bSAndroid Build Coastguard Worker FIND EVENT__ALLOWED_STAGE_NAMES 107*663afb9bSAndroid Build Coastguard Worker "${EVENT_STAGE_NAME}" 108*663afb9bSAndroid Build Coastguard Worker EVENT__STAGE_RET 109*663afb9bSAndroid Build Coastguard Worker) 110*663afb9bSAndroid Build Coastguard Workerif (EVENT__STAGE_RET EQUAL -1) 111*663afb9bSAndroid Build Coastguard Worker message(WARNING 112*663afb9bSAndroid Build Coastguard Worker "stage ${EVENT_STAGE_NAME} is not allowed, reset to beta") 113*663afb9bSAndroid Build Coastguard Worker set(EVENT_STAGE_NAME beta) 114*663afb9bSAndroid Build Coastguard Workerendif() 115*663afb9bSAndroid Build Coastguard Worker 116*663afb9bSAndroid Build Coastguard Workerset(EVENT_VERSION 117*663afb9bSAndroid Build Coastguard Worker "${EVENT_VERSION_MAJOR}.${EVENT_VERSION_MINOR}.${EVENT_VERSION_PATCH}-${EVENT_STAGE_NAME}") 118*663afb9bSAndroid Build Coastguard Worker 119*663afb9bSAndroid Build Coastguard Workeroption(EVENT__DISABLE_DEBUG_MODE 120*663afb9bSAndroid Build Coastguard Worker "Define if libevent should build without support for a debug mode" OFF) 121*663afb9bSAndroid Build Coastguard Worker 122*663afb9bSAndroid Build Coastguard Workeroption(EVENT__ENABLE_VERBOSE_DEBUG 123*663afb9bSAndroid Build Coastguard Worker "Enables verbose debugging" OFF) 124*663afb9bSAndroid Build Coastguard Worker 125*663afb9bSAndroid Build Coastguard Workeroption(EVENT__DISABLE_MM_REPLACEMENT 126*663afb9bSAndroid Build Coastguard Worker "Define if libevent should not allow replacing the mm functions" OFF) 127*663afb9bSAndroid Build Coastguard Worker 128*663afb9bSAndroid Build Coastguard Workeroption(EVENT__DISABLE_THREAD_SUPPORT 129*663afb9bSAndroid Build Coastguard Worker "Define if libevent should not be compiled with thread support" OFF) 130*663afb9bSAndroid Build Coastguard Worker 131*663afb9bSAndroid Build Coastguard Workeroption(EVENT__DISABLE_OPENSSL 132*663afb9bSAndroid Build Coastguard Worker "Define if libevent should build without support for OpenSSL encryption" OFF) 133*663afb9bSAndroid Build Coastguard Worker 134*663afb9bSAndroid Build Coastguard Workeroption(EVENT__DISABLE_BENCHMARK 135*663afb9bSAndroid Build Coastguard Worker "Defines if libevent should build without the benchmark executables" OFF) 136*663afb9bSAndroid Build Coastguard Worker 137*663afb9bSAndroid Build Coastguard Workeroption(EVENT__DISABLE_TESTS 138*663afb9bSAndroid Build Coastguard Worker "If tests should be compiled or not" OFF) 139*663afb9bSAndroid Build Coastguard Worker 140*663afb9bSAndroid Build Coastguard Workeroption(EVENT__DISABLE_REGRESS 141*663afb9bSAndroid Build Coastguard Worker "Disable the regress tests" OFF) 142*663afb9bSAndroid Build Coastguard Worker 143*663afb9bSAndroid Build Coastguard Workeroption(EVENT__DISABLE_SAMPLES 144*663afb9bSAndroid Build Coastguard Worker "Disable sample files" OFF) 145*663afb9bSAndroid Build Coastguard Worker 146*663afb9bSAndroid Build Coastguard Workeroption(EVENT__DISABLE_CLOCK_GETTIME 147*663afb9bSAndroid Build Coastguard Worker "Do not use clock_gettime even if it is available" OFF) 148*663afb9bSAndroid Build Coastguard Worker 149*663afb9bSAndroid Build Coastguard Workeroption(EVENT__FORCE_KQUEUE_CHECK 150*663afb9bSAndroid Build Coastguard Worker "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 cross compilation target to verify that it works. See cmake documentation for try_run for more details" OFF) 151*663afb9bSAndroid Build Coastguard Worker 152*663afb9bSAndroid Build Coastguard Worker# TODO: Add --disable-largefile omit support for large files 153*663afb9bSAndroid Build Coastguard Workeroption(EVENT__COVERAGE 154*663afb9bSAndroid Build Coastguard Worker"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) 155*663afb9bSAndroid Build Coastguard Worker 156*663afb9bSAndroid Build Coastguard Worker# Put the libaries and binaries that get built into directories at the 157*663afb9bSAndroid Build Coastguard Worker# top of the build tree rather than in hard-to-find leaf directories. 158*663afb9bSAndroid Build Coastguard Worker# 159*663afb9bSAndroid Build Coastguard Worker# But only if this variables are not defined yet 160*663afb9bSAndroid Build Coastguard Worker# (i.e. libevent is used via add_subdirectory()) 161*663afb9bSAndroid Build Coastguard Workerif (NOT DEFINED CMAKE_RUNTIME_OUTPUT_DIRECTORY) 162*663afb9bSAndroid Build Coastguard Worker set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) 163*663afb9bSAndroid Build Coastguard Workerendif() 164*663afb9bSAndroid Build Coastguard Workerif (NOT DEFINED CMAKE_LIBRARY_OUTPUT_DIRECTORY) 165*663afb9bSAndroid Build Coastguard Worker set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) 166*663afb9bSAndroid Build Coastguard Workerendif() 167*663afb9bSAndroid Build Coastguard Workerif (NOT DEFINED CMAKE_ARCHIVE_OUTPUT_DIRECTORY) 168*663afb9bSAndroid Build Coastguard Worker set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) 169*663afb9bSAndroid Build Coastguard Workerendif() 170*663afb9bSAndroid Build Coastguard Worker 171*663afb9bSAndroid Build Coastguard Workerif (EVENT__ENABLE_VERBOSE_DEBUG) 172*663afb9bSAndroid Build Coastguard Worker add_definitions(-DUSE_DEBUG=1) 173*663afb9bSAndroid Build Coastguard Workerendif() 174*663afb9bSAndroid Build Coastguard Worker 175*663afb9bSAndroid Build Coastguard Worker# make it colorful under ninja-build 176*663afb9bSAndroid Build Coastguard Workerif ("${CMAKE_GENERATOR}" STREQUAL "Ninja") 177*663afb9bSAndroid Build Coastguard Worker add_compiler_flags(-fdiagnostics-color=always) 178*663afb9bSAndroid Build Coastguard Workerendif() 179*663afb9bSAndroid Build Coastguard Worker 180*663afb9bSAndroid Build Coastguard Worker# Setup compiler flags for coverage. 181*663afb9bSAndroid Build Coastguard Workerif (EVENT__COVERAGE) 182*663afb9bSAndroid Build Coastguard Worker if (NOT "${CMAKE_BUILD_TYPE_LOWER}" STREQUAL "debug") 183*663afb9bSAndroid Build Coastguard Worker message(FATAL_ERROR "Coverage requires -DCMAKE_BUILD_TYPE=Debug") 184*663afb9bSAndroid Build Coastguard Worker endif() 185*663afb9bSAndroid Build Coastguard Worker 186*663afb9bSAndroid Build Coastguard Worker message(STATUS "Setting coverage compiler flags") 187*663afb9bSAndroid Build Coastguard Worker 188*663afb9bSAndroid Build Coastguard Worker set(CMAKE_REQUIRED_LIBRARIES "--coverage") 189*663afb9bSAndroid Build Coastguard Worker add_compiler_flags(-g -O0 --coverage) 190*663afb9bSAndroid Build Coastguard Worker set(CMAKE_REQUIRED_LIBRARIES "") 191*663afb9bSAndroid Build Coastguard Workerendif() 192*663afb9bSAndroid Build Coastguard Worker 193*663afb9bSAndroid Build Coastguard Workerset(GNUC 0) 194*663afb9bSAndroid Build Coastguard Workerset(CLANG 0) 195*663afb9bSAndroid Build Coastguard Workerset(MSVC 0) 196*663afb9bSAndroid Build Coastguard Workerif (("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") OR 197*663afb9bSAndroid Build Coastguard Worker ("${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang")) 198*663afb9bSAndroid Build Coastguard Worker set(CLANG 1) 199*663afb9bSAndroid Build Coastguard Workerendif() 200*663afb9bSAndroid Build Coastguard Workerif (("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") OR (${CLANG})) 201*663afb9bSAndroid Build Coastguard Worker set(GNUC 1) 202*663afb9bSAndroid Build Coastguard Workerendif() 203*663afb9bSAndroid Build Coastguard Workerif (("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") OR (${CLANG})) 204*663afb9bSAndroid Build Coastguard Worker set(MSVC 1) 205*663afb9bSAndroid Build Coastguard Workerendif() 206*663afb9bSAndroid Build Coastguard Worker 207*663afb9bSAndroid Build Coastguard Worker# Detect library type 208*663afb9bSAndroid Build Coastguard Workerset(EVENT_LIBRARY_TYPE) 209*663afb9bSAndroid Build Coastguard Workerif ("${EVENT__LIBRARY_TYPE}" STREQUAL "DEFAULT") 210*663afb9bSAndroid Build Coastguard Worker if (${MSVC}) 211*663afb9bSAndroid Build Coastguard Worker set(EVENT_LIBRARY_TYPE SHARED) 212*663afb9bSAndroid Build Coastguard Worker else() 213*663afb9bSAndroid Build Coastguard Worker set(EVENT_LIBRARY_TYPE BOTH) 214*663afb9bSAndroid Build Coastguard Worker endif() 215*663afb9bSAndroid Build Coastguard Workerelse() 216*663afb9bSAndroid Build Coastguard Worker string(TOUPPER "${EVENT__LIBRARY_TYPE}" EVENT_LIBRARY_TYPE) 217*663afb9bSAndroid Build Coastguard Workerendif() 218*663afb9bSAndroid Build Coastguard Workerif ((${MSVC}) AND ("${EVENT_LIBRARY_TYPE}" STREQUAL "BOTH")) 219*663afb9bSAndroid Build Coastguard Worker message(WARNING 220*663afb9bSAndroid Build Coastguard Worker "Building SHARED and STATIC is not supported for MSVC " 221*663afb9bSAndroid Build Coastguard Worker "(due to conflicts in library name" 222*663afb9bSAndroid Build Coastguard Worker " between STATIC library and IMPORTED library for SHARED libraries)") 223*663afb9bSAndroid Build Coastguard Workerendif() 224*663afb9bSAndroid Build Coastguard Workerset(EVENT_LIBRARY_STATIC OFF) 225*663afb9bSAndroid Build Coastguard Workerset(EVENT_LIBRARY_SHARED OFF) 226*663afb9bSAndroid Build Coastguard Workerif ("${EVENT_LIBRARY_TYPE}" STREQUAL "BOTH") 227*663afb9bSAndroid Build Coastguard Worker set(EVENT_LIBRARY_STATIC ON) 228*663afb9bSAndroid Build Coastguard Worker set(EVENT_LIBRARY_SHARED ON) 229*663afb9bSAndroid Build Coastguard Workerelseif ("${EVENT_LIBRARY_TYPE}" STREQUAL "STATIC") 230*663afb9bSAndroid Build Coastguard Worker set(EVENT_LIBRARY_STATIC ON) 231*663afb9bSAndroid Build Coastguard Workerelseif ("${EVENT_LIBRARY_TYPE}" STREQUAL "SHARED") 232*663afb9bSAndroid Build Coastguard Worker set(EVENT_LIBRARY_SHARED ON) 233*663afb9bSAndroid Build Coastguard Workerelse() 234*663afb9bSAndroid Build Coastguard Worker message(FATAL_ERROR "${EVENT_LIBRARY_TYPE} is not supported") 235*663afb9bSAndroid Build Coastguard Workerendif() 236*663afb9bSAndroid Build Coastguard Worker 237*663afb9bSAndroid Build Coastguard Workerif (${MSVC}) 238*663afb9bSAndroid Build Coastguard Worker set(msvc_static_runtime OFF) 239*663afb9bSAndroid Build Coastguard Worker if ("${EVENT_LIBRARY_TYPE}" STREQUAL "STATIC") 240*663afb9bSAndroid Build Coastguard Worker set(msvc_static_runtime ON) 241*663afb9bSAndroid Build Coastguard Worker endif() 242*663afb9bSAndroid Build Coastguard Worker 243*663afb9bSAndroid Build Coastguard Worker # For more info: 244*663afb9bSAndroid Build Coastguard Worker # - https://docs.microsoft.com/en-us/cpp/build/reference/md-mt-ld-use-run-time-library?view=vs-2017 245*663afb9bSAndroid Build Coastguard Worker # - https://gitlab.kitware.com/cmake/community/wikis/FAQ#how-can-i-build-my-msvc-application-with-a-static-runtime 246*663afb9bSAndroid Build Coastguard Worker option(EVENT__MSVC_STATIC_RUNTIME 247*663afb9bSAndroid Build Coastguard Worker "Link static runtime libraries" 248*663afb9bSAndroid Build Coastguard Worker ${msvc_static_runtime}) 249*663afb9bSAndroid Build Coastguard Worker 250*663afb9bSAndroid Build Coastguard Worker if (EVENT__MSVC_STATIC_RUNTIME) 251*663afb9bSAndroid Build Coastguard Worker foreach (flag_var 252*663afb9bSAndroid Build Coastguard Worker CMAKE_C_FLAGS_DEBUG 253*663afb9bSAndroid Build Coastguard Worker CMAKE_C_FLAGS_RELEASE 254*663afb9bSAndroid Build Coastguard Worker CMAKE_C_FLAGS_MINSIZEREL 255*663afb9bSAndroid Build Coastguard Worker CMAKE_C_FLAGS_RELWITHDEBINFO 256*663afb9bSAndroid Build Coastguard Worker ) 257*663afb9bSAndroid Build Coastguard Worker if (${flag_var} MATCHES "/MD") 258*663afb9bSAndroid Build Coastguard Worker string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") 259*663afb9bSAndroid Build Coastguard Worker endif() 260*663afb9bSAndroid Build Coastguard Worker endforeach() 261*663afb9bSAndroid Build Coastguard Worker endif() 262*663afb9bSAndroid Build Coastguard Workerendif() 263*663afb9bSAndroid Build Coastguard Worker 264*663afb9bSAndroid Build Coastguard Worker# GNUC specific options. 265*663afb9bSAndroid Build Coastguard Workerif (${GNUC}) 266*663afb9bSAndroid Build Coastguard Worker option(EVENT__DISABLE_GCC_WARNINGS "Disable verbose warnings with GCC" OFF) 267*663afb9bSAndroid Build Coastguard Worker option(EVENT__ENABLE_GCC_HARDENING "Enable compiler security checks" OFF) 268*663afb9bSAndroid Build Coastguard Worker option(EVENT__ENABLE_GCC_FUNCTION_SECTIONS "Enable gcc function sections" OFF) 269*663afb9bSAndroid Build Coastguard Worker option(EVENT__ENABLE_GCC_WARNINGS "Make all GCC warnings into errors" OFF) 270*663afb9bSAndroid Build Coastguard Worker 271*663afb9bSAndroid Build Coastguard Worker set(GCC_V ${CMAKE_C_COMPILER_VERSION}) 272*663afb9bSAndroid Build Coastguard Worker 273*663afb9bSAndroid Build Coastguard Worker list(APPEND __FLAGS 274*663afb9bSAndroid Build Coastguard Worker -Wall -Wextra -Wno-unused-parameter -Wstrict-aliasing -Wstrict-prototypes 275*663afb9bSAndroid Build Coastguard Worker 276*663afb9bSAndroid Build Coastguard Worker -fno-strict-aliasing # gcc 2.9.5+ 277*663afb9bSAndroid Build Coastguard Worker -Wmissing-prototypes 278*663afb9bSAndroid Build Coastguard Worker 279*663afb9bSAndroid Build Coastguard Worker # gcc 4 280*663afb9bSAndroid Build Coastguard Worker -Winit-self 281*663afb9bSAndroid Build Coastguard Worker -Wmissing-field-initializers 282*663afb9bSAndroid Build Coastguard Worker -Wdeclaration-after-statement 283*663afb9bSAndroid Build Coastguard Worker 284*663afb9bSAndroid Build Coastguard Worker # gcc 4.2 285*663afb9bSAndroid Build Coastguard Worker -Waddress 286*663afb9bSAndroid Build Coastguard Worker -Wnormalized=id 287*663afb9bSAndroid Build Coastguard Worker -Woverride-init 288*663afb9bSAndroid Build Coastguard Worker 289*663afb9bSAndroid Build Coastguard Worker # gcc 4.5 290*663afb9bSAndroid Build Coastguard Worker -Wlogical-op 291*663afb9bSAndroid Build Coastguard Worker 292*663afb9bSAndroid Build Coastguard Worker -Wwrite-strings 293*663afb9bSAndroid Build Coastguard Worker ) 294*663afb9bSAndroid Build Coastguard Worker 295*663afb9bSAndroid Build Coastguard Worker if (${CLANG}) 296*663afb9bSAndroid Build Coastguard Worker list(APPEND __FLAGS -Wno-unused-function) 297*663afb9bSAndroid Build Coastguard Worker endif() 298*663afb9bSAndroid Build Coastguard Worker 299*663afb9bSAndroid Build Coastguard Worker if (EVENT__DISABLE_GCC_WARNINGS) 300*663afb9bSAndroid Build Coastguard Worker list(APPEND __FLAGS -w) 301*663afb9bSAndroid Build Coastguard Worker endif() 302*663afb9bSAndroid Build Coastguard Worker 303*663afb9bSAndroid Build Coastguard Worker if (EVENT__ENABLE_GCC_HARDENING) 304*663afb9bSAndroid Build Coastguard Worker list(APPEND __FLAGS 305*663afb9bSAndroid Build Coastguard Worker -fstack-protector-all 306*663afb9bSAndroid Build Coastguard Worker -fwrapv 307*663afb9bSAndroid Build Coastguard Worker -fPIE 308*663afb9bSAndroid Build Coastguard Worker -Wstack-protector 309*663afb9bSAndroid Build Coastguard Worker "--param ssp-buffer-size=1") 310*663afb9bSAndroid Build Coastguard Worker 311*663afb9bSAndroid Build Coastguard Worker add_definitions(-D_FORTIFY_SOURCE=2) 312*663afb9bSAndroid Build Coastguard Worker endif() 313*663afb9bSAndroid Build Coastguard Worker 314*663afb9bSAndroid Build Coastguard Worker if (EVENT__ENABLE_GCC_FUNCTION_SECTIONS) 315*663afb9bSAndroid Build Coastguard Worker list(APPEND __FLAGS -ffunction-sections) 316*663afb9bSAndroid Build Coastguard Worker # TODO: Add --gc-sections support. We need some checks for NetBSD to ensure this works. 317*663afb9bSAndroid Build Coastguard Worker endif() 318*663afb9bSAndroid Build Coastguard Worker 319*663afb9bSAndroid Build Coastguard Worker if (EVENT__ENABLE_GCC_WARNINGS) 320*663afb9bSAndroid Build Coastguard Worker list(APPEND __FLAGS -Werror) 321*663afb9bSAndroid Build Coastguard Worker endif() 322*663afb9bSAndroid Build Coastguard Worker 323*663afb9bSAndroid Build Coastguard Worker add_compiler_flags(${__FLAGS}) 324*663afb9bSAndroid Build Coastguard Workerendif() 325*663afb9bSAndroid Build Coastguard Worker 326*663afb9bSAndroid Build Coastguard Workerif (APPLE) 327*663afb9bSAndroid Build Coastguard Worker # Get rid of deprecated warnings for OpenSSL on OSX 10.7 and greater. 328*663afb9bSAndroid Build Coastguard Worker add_compiler_flags( 329*663afb9bSAndroid Build Coastguard Worker -Wno-error=deprecated-declarations 330*663afb9bSAndroid Build Coastguard Worker -Qunused-arguments 331*663afb9bSAndroid Build Coastguard Worker ) 332*663afb9bSAndroid Build Coastguard Workerendif() 333*663afb9bSAndroid Build Coastguard Worker 334*663afb9bSAndroid Build Coastguard Workerif (MINGW OR CYGWIN) 335*663afb9bSAndroid Build Coastguard Worker set(WIN32 TRUE) 336*663afb9bSAndroid Build Coastguard Workerendif() 337*663afb9bSAndroid Build Coastguard Worker 338*663afb9bSAndroid Build Coastguard Worker# Winsock. 339*663afb9bSAndroid Build Coastguard Workerif(WIN32) 340*663afb9bSAndroid Build Coastguard Worker set(CMAKE_REQUIRED_LIBRARIES ws2_32 shell32 advapi32) 341*663afb9bSAndroid Build Coastguard Worker set(CMAKE_REQUIRED_DEFINITIONS -FIwinsock2.h -FIws2tcpip.h -D_WIN32_WINNT=0x0600) 342*663afb9bSAndroid Build Coastguard Workerendif() 343*663afb9bSAndroid Build Coastguard Workerif (SOLARIS) 344*663afb9bSAndroid Build Coastguard Worker set(CMAKE_REQUIRED_LIBRARIES socket nsl) 345*663afb9bSAndroid Build Coastguard Workerendif() 346*663afb9bSAndroid Build Coastguard Worker 347*663afb9bSAndroid Build Coastguard Worker# Check if _GNU_SOURCE is available. 348*663afb9bSAndroid Build Coastguard Workerif (NOT DEFINED _GNU_SOURCE) 349*663afb9bSAndroid Build Coastguard Worker CHECK_SYMBOL_EXISTS(__GNU_LIBRARY__ "features.h" _GNU_SOURCE) 350*663afb9bSAndroid Build Coastguard Worker 351*663afb9bSAndroid Build Coastguard Worker if (NOT _GNU_SOURCE) 352*663afb9bSAndroid Build Coastguard Worker unset(_GNU_SOURCE CACHE) 353*663afb9bSAndroid Build Coastguard Worker CHECK_SYMBOL_EXISTS(_GNU_SOURCE "features.h" _GNU_SOURCE) 354*663afb9bSAndroid Build Coastguard Worker endif() 355*663afb9bSAndroid Build Coastguard Worker 356*663afb9bSAndroid Build Coastguard Worker if (ANDROID) 357*663afb9bSAndroid Build Coastguard Worker set(_GNU_SOURCE TRUE) 358*663afb9bSAndroid Build Coastguard Worker endif() 359*663afb9bSAndroid Build Coastguard Workerendif() 360*663afb9bSAndroid Build Coastguard Worker 361*663afb9bSAndroid Build Coastguard Workerif (_GNU_SOURCE) 362*663afb9bSAndroid Build Coastguard Worker add_definitions(-D_GNU_SOURCE=1) 363*663afb9bSAndroid Build Coastguard Worker set(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE) 364*663afb9bSAndroid Build Coastguard Workerendif() 365*663afb9bSAndroid Build Coastguard Worker 366*663afb9bSAndroid Build Coastguard Worker# Check if header files exist 367*663afb9bSAndroid Build Coastguard Workerlist(APPEND FILES_TO_CHECK 368*663afb9bSAndroid Build Coastguard Worker fcntl.h 369*663afb9bSAndroid Build Coastguard Worker inttypes.h 370*663afb9bSAndroid Build Coastguard Worker memory.h 371*663afb9bSAndroid Build Coastguard Worker signal.h 372*663afb9bSAndroid Build Coastguard Worker stdarg.h 373*663afb9bSAndroid Build Coastguard Worker stddef.h 374*663afb9bSAndroid Build Coastguard Worker stdint.h 375*663afb9bSAndroid Build Coastguard Worker stdlib.h 376*663afb9bSAndroid Build Coastguard Worker string.h 377*663afb9bSAndroid Build Coastguard Worker errno.h 378*663afb9bSAndroid Build Coastguard Worker unistd.h 379*663afb9bSAndroid Build Coastguard Worker time.h 380*663afb9bSAndroid Build Coastguard Worker sys/types.h 381*663afb9bSAndroid Build Coastguard Worker sys/stat.h 382*663afb9bSAndroid Build Coastguard Worker sys/time.h 383*663afb9bSAndroid Build Coastguard Worker sys/param.h 384*663afb9bSAndroid Build Coastguard Worker) 385*663afb9bSAndroid Build Coastguard Workerif (WIN32) 386*663afb9bSAndroid Build Coastguard Worker list(APPEND FILES_TO_CHECK 387*663afb9bSAndroid Build Coastguard Worker io.h 388*663afb9bSAndroid Build Coastguard Worker winsock2.h 389*663afb9bSAndroid Build Coastguard Worker ws2tcpip.h 390*663afb9bSAndroid Build Coastguard Worker afunix.h 391*663afb9bSAndroid Build Coastguard Worker ) 392*663afb9bSAndroid Build Coastguard Workerelse() 393*663afb9bSAndroid Build Coastguard Worker list(APPEND FILES_TO_CHECK 394*663afb9bSAndroid Build Coastguard Worker netdb.h 395*663afb9bSAndroid Build Coastguard Worker dlfcn.h 396*663afb9bSAndroid Build Coastguard Worker arpa/inet.h 397*663afb9bSAndroid Build Coastguard Worker poll.h 398*663afb9bSAndroid Build Coastguard Worker port.h 399*663afb9bSAndroid Build Coastguard Worker sys/socket.h 400*663afb9bSAndroid Build Coastguard Worker sys/random.h 401*663afb9bSAndroid Build Coastguard Worker sys/un.h 402*663afb9bSAndroid Build Coastguard Worker sys/devpoll.h 403*663afb9bSAndroid Build Coastguard Worker sys/epoll.h 404*663afb9bSAndroid Build Coastguard Worker sys/eventfd.h 405*663afb9bSAndroid Build Coastguard Worker sys/event.h 406*663afb9bSAndroid Build Coastguard Worker sys/ioctl.h 407*663afb9bSAndroid Build Coastguard Worker sys/mman.h 408*663afb9bSAndroid Build Coastguard Worker sys/queue.h 409*663afb9bSAndroid Build Coastguard Worker sys/select.h 410*663afb9bSAndroid Build Coastguard Worker sys/sendfile.h 411*663afb9bSAndroid Build Coastguard Worker sys/uio.h 412*663afb9bSAndroid Build Coastguard Worker sys/wait.h 413*663afb9bSAndroid Build Coastguard Worker sys/resource.h 414*663afb9bSAndroid Build Coastguard Worker sys/timerfd.h 415*663afb9bSAndroid Build Coastguard Worker netinet/in.h 416*663afb9bSAndroid Build Coastguard Worker netinet/in6.h 417*663afb9bSAndroid Build Coastguard Worker netinet/tcp.h 418*663afb9bSAndroid Build Coastguard Worker ifaddrs.h 419*663afb9bSAndroid Build Coastguard Worker ) 420*663afb9bSAndroid Build Coastguard Workerendif() 421*663afb9bSAndroid Build Coastguard Worker 422*663afb9bSAndroid Build Coastguard Workerif (NOT "${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Linux") 423*663afb9bSAndroid Build Coastguard Worker list(APPEND FILES_TO_CHECK sys/sysctl.h) 424*663afb9bSAndroid Build Coastguard Workerendif() 425*663afb9bSAndroid Build Coastguard Worker 426*663afb9bSAndroid Build Coastguard Workerif (APPLE) 427*663afb9bSAndroid Build Coastguard Worker list(APPEND FILES_TO_CHECK 428*663afb9bSAndroid Build Coastguard Worker mach/mach_time.h 429*663afb9bSAndroid Build Coastguard Worker mach/mach.h 430*663afb9bSAndroid Build Coastguard Worker ) 431*663afb9bSAndroid Build Coastguard Workerendif() 432*663afb9bSAndroid Build Coastguard Worker 433*663afb9bSAndroid Build Coastguard Workerforeach(FILE ${FILES_TO_CHECK}) 434*663afb9bSAndroid Build Coastguard Worker CHECK_INCLUDE_FILE_CONCAT(${FILE} "EVENT") 435*663afb9bSAndroid Build Coastguard Workerendforeach() 436*663afb9bSAndroid Build Coastguard Workerunset(FILES_TO_CHECK) 437*663afb9bSAndroid Build Coastguard Worker 438*663afb9bSAndroid Build Coastguard Worker# Check if functions exist 439*663afb9bSAndroid Build Coastguard Workerlist(APPEND SYMBOLS_TO_CHECK 440*663afb9bSAndroid Build Coastguard Worker getaddrinfo 441*663afb9bSAndroid Build Coastguard Worker getnameinfo 442*663afb9bSAndroid Build Coastguard Worker getprotobynumber 443*663afb9bSAndroid Build Coastguard Worker getservbyname 444*663afb9bSAndroid Build Coastguard Worker gethostbyname 445*663afb9bSAndroid Build Coastguard Worker inet_ntop 446*663afb9bSAndroid Build Coastguard Worker inet_pton 447*663afb9bSAndroid Build Coastguard Worker gettimeofday 448*663afb9bSAndroid Build Coastguard Worker signal 449*663afb9bSAndroid Build Coastguard Worker strtoll 450*663afb9bSAndroid Build Coastguard Worker splice 451*663afb9bSAndroid Build Coastguard Worker strlcpy 452*663afb9bSAndroid Build Coastguard Worker strsep 453*663afb9bSAndroid Build Coastguard Worker strtok_r 454*663afb9bSAndroid Build Coastguard Worker vasprintf 455*663afb9bSAndroid Build Coastguard Worker timerclear 456*663afb9bSAndroid Build Coastguard Worker timercmp 457*663afb9bSAndroid Build Coastguard Worker timerisset 458*663afb9bSAndroid Build Coastguard Worker timeradd 459*663afb9bSAndroid Build Coastguard Worker nanosleep 460*663afb9bSAndroid Build Coastguard Worker putenv 461*663afb9bSAndroid Build Coastguard Worker umask 462*663afb9bSAndroid Build Coastguard Worker) 463*663afb9bSAndroid Build Coastguard Workerif (NOT EVENT__DISABLE_CLOCK_GETTIME) 464*663afb9bSAndroid Build Coastguard Worker list(APPEND SYMBOLS_TO_CHECK clock_gettime) 465*663afb9bSAndroid Build Coastguard Workerendif() 466*663afb9bSAndroid Build Coastguard Worker 467*663afb9bSAndroid Build Coastguard Workerif (WIN32) 468*663afb9bSAndroid Build Coastguard Worker list(APPEND SYMBOLS_TO_CHECK 469*663afb9bSAndroid Build Coastguard Worker _gmtime64_s 470*663afb9bSAndroid Build Coastguard Worker _gmtime64 471*663afb9bSAndroid Build Coastguard Worker ) 472*663afb9bSAndroid Build Coastguard Workerelse() 473*663afb9bSAndroid Build Coastguard Worker list(APPEND SYMBOLS_TO_CHECK 474*663afb9bSAndroid Build Coastguard Worker getifaddrs 475*663afb9bSAndroid Build Coastguard Worker select 476*663afb9bSAndroid Build Coastguard Worker epoll_create 477*663afb9bSAndroid Build Coastguard Worker epoll_create1 478*663afb9bSAndroid Build Coastguard Worker epoll_ctl 479*663afb9bSAndroid Build Coastguard Worker eventfd 480*663afb9bSAndroid Build Coastguard Worker poll 481*663afb9bSAndroid Build Coastguard Worker port_create 482*663afb9bSAndroid Build Coastguard Worker kqueue 483*663afb9bSAndroid Build Coastguard Worker fcntl 484*663afb9bSAndroid Build Coastguard Worker mmap 485*663afb9bSAndroid Build Coastguard Worker pipe 486*663afb9bSAndroid Build Coastguard Worker pipe2 487*663afb9bSAndroid Build Coastguard Worker sendfile 488*663afb9bSAndroid Build Coastguard Worker sigaction 489*663afb9bSAndroid Build Coastguard Worker strsignal 490*663afb9bSAndroid Build Coastguard Worker sysctl 491*663afb9bSAndroid Build Coastguard Worker accept4 492*663afb9bSAndroid Build Coastguard Worker arc4random 493*663afb9bSAndroid Build Coastguard Worker arc4random_buf 494*663afb9bSAndroid Build Coastguard Worker arc4random_addrandom 495*663afb9bSAndroid Build Coastguard Worker getrandom 496*663afb9bSAndroid Build Coastguard Worker getegid 497*663afb9bSAndroid Build Coastguard Worker geteuid 498*663afb9bSAndroid Build Coastguard Worker issetugid 499*663afb9bSAndroid Build Coastguard Worker usleep 500*663afb9bSAndroid Build Coastguard Worker timerfd_create 501*663afb9bSAndroid Build Coastguard Worker setenv 502*663afb9bSAndroid Build Coastguard Worker unsetenv 503*663afb9bSAndroid Build Coastguard Worker setrlimit 504*663afb9bSAndroid Build Coastguard Worker gethostbyname_r 505*663afb9bSAndroid Build Coastguard Worker ) 506*663afb9bSAndroid Build Coastguard Worker if (APPLE) 507*663afb9bSAndroid Build Coastguard Worker list(APPEND SYMBOLS_TO_CHECK mach_absolute_time) 508*663afb9bSAndroid Build Coastguard Worker endif() 509*663afb9bSAndroid Build Coastguard Workerendif() 510*663afb9bSAndroid Build Coastguard Worker 511*663afb9bSAndroid Build Coastguard Worker# Add stdio.h for vasprintf 512*663afb9bSAndroid Build Coastguard Workerset(EVENT_INCLUDES ${EVENT_INCLUDES} stdio.h) 513*663afb9bSAndroid Build Coastguard WorkerCHECK_SYMBOLS_EXIST("${SYMBOLS_TO_CHECK}" "${EVENT_INCLUDES}" "EVENT") 514*663afb9bSAndroid Build Coastguard Workerunset(SYMBOLS_TO_CHECK) 515*663afb9bSAndroid Build Coastguard Workerset(EVENT__HAVE_EPOLL ${EVENT__HAVE_EPOLL_CREATE}) 516*663afb9bSAndroid Build Coastguard Worker 517*663afb9bSAndroid Build Coastguard Worker# Get the gethostbyname_r prototype. 518*663afb9bSAndroid Build Coastguard Workerif(EVENT__HAVE_GETHOSTBYNAME_R) 519*663afb9bSAndroid Build Coastguard Worker CHECK_PROTOTYPE_DEFINITION(gethostbyname_r 520*663afb9bSAndroid Build Coastguard Worker "int gethostbyname_r(const char *name, struct hostent *hp, struct hostent_data *hdata)" 521*663afb9bSAndroid Build Coastguard Worker "0" 522*663afb9bSAndroid Build Coastguard Worker "netdb.h" 523*663afb9bSAndroid Build Coastguard Worker EVENT__HAVE_GETHOSTBYNAME_R_3_ARG) 524*663afb9bSAndroid Build Coastguard Worker 525*663afb9bSAndroid Build Coastguard Worker CHECK_PROTOTYPE_DEFINITION(gethostbyname_r 526*663afb9bSAndroid Build Coastguard Worker "struct hostent *gethostbyname_r(const char *name, struct hostent *hp, char *buf, size_t buflen, int *herr)" 527*663afb9bSAndroid Build Coastguard Worker "NULL" 528*663afb9bSAndroid Build Coastguard Worker "netdb.h" 529*663afb9bSAndroid Build Coastguard Worker EVENT__HAVE_GETHOSTBYNAME_R_5_ARG) 530*663afb9bSAndroid Build Coastguard Worker 531*663afb9bSAndroid Build Coastguard Worker CHECK_PROTOTYPE_DEFINITION(gethostbyname_r 532*663afb9bSAndroid Build Coastguard Worker "int gethostbyname_r(const char *name, struct hostent *hp, char *buf, size_t buflen, struct hostent **result, int *herr)" 533*663afb9bSAndroid Build Coastguard Worker "0" 534*663afb9bSAndroid Build Coastguard Worker "netdb.h" 535*663afb9bSAndroid Build Coastguard Worker EVENT__HAVE_GETHOSTBYNAME_R_6_ARG) 536*663afb9bSAndroid Build Coastguard Workerendif() 537*663afb9bSAndroid Build Coastguard Worker 538*663afb9bSAndroid Build Coastguard Workerif(HAVE_PORT_H AND HAVE_PORT_CREATE) 539*663afb9bSAndroid Build Coastguard Worker set(EVENT__HAVE_EVENT_PORTS 1) 540*663afb9bSAndroid Build Coastguard Workerendif() 541*663afb9bSAndroid Build Coastguard Worker 542*663afb9bSAndroid Build Coastguard Worker# Only `CHECK_TYPE_SIZE()' will use `CMAKE_EXTRA_INCLUDE_FILES' 543*663afb9bSAndroid Build Coastguard Workerset(CMAKE_EXTRA_INCLUDE_FILES ${EVENT_INCLUDES}) 544*663afb9bSAndroid Build Coastguard Worker 545*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("struct sockaddr_un" EVENT__HAVE_STRUCT_SOCKADDR_UN) 546*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("uint8_t" EVENT__HAVE_UINT8_T) 547*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("uint16_t" EVENT__HAVE_UINT16_T) 548*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("uint32_t" EVENT__HAVE_UINT32_T) 549*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("uint64_t" EVENT__HAVE_UINT64_T) 550*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("short" EVENT__SIZEOF_SHORT BUILTIN_TYPES_ONLY) 551*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("int" EVENT__SIZEOF_INT BUILTIN_TYPES_ONLY) 552*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("unsigned" EVENT__SIZEOF_UNSIGNED BUILTIN_TYPES_ONLY) 553*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("unsigned int" EVENT__SIZEOF_UNSIGNED_INT BUILTIN_TYPES_ONLY) 554*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("long" EVENT__SIZEOF_LONG BUILTIN_TYPES_ONLY) 555*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("long long" EVENT__SIZEOF_LONG_LONG BUILTIN_TYPES_ONLY) 556*663afb9bSAndroid Build Coastguard Worker 557*663afb9bSAndroid Build Coastguard Workerif(WIN32) 558*663afb9bSAndroid Build Coastguard Worker # These aren't available until Windows Vista. 559*663afb9bSAndroid Build Coastguard Worker # But you can still link them. They just won't be found when running the exe. 560*663afb9bSAndroid Build Coastguard Worker set(EVENT__HAVE_INET_NTOP 0) 561*663afb9bSAndroid Build Coastguard Worker set(EVENT__HAVE_INET_PTON 0) 562*663afb9bSAndroid Build Coastguard Workerendif() 563*663afb9bSAndroid Build Coastguard Worker 564*663afb9bSAndroid Build Coastguard Worker# Check for different inline keyword versions. 565*663afb9bSAndroid Build Coastguard Workercheck_function_keywords("inline" "__inline" "__inline__") 566*663afb9bSAndroid Build Coastguard Worker 567*663afb9bSAndroid Build Coastguard Workerif (HAVE_INLINE) 568*663afb9bSAndroid Build Coastguard Worker set(EVENT__inline inline) 569*663afb9bSAndroid Build Coastguard Workerelseif (HAVE___INLINE) 570*663afb9bSAndroid Build Coastguard Worker set(EVENT__inline __inline) 571*663afb9bSAndroid Build Coastguard Workerelseif(HAVE___INLINE__) 572*663afb9bSAndroid Build Coastguard Worker set(EVENT__inline __inline__) 573*663afb9bSAndroid Build Coastguard Workerelse() 574*663afb9bSAndroid Build Coastguard Worker set(EVENT__inline) 575*663afb9bSAndroid Build Coastguard Workerendif() 576*663afb9bSAndroid Build Coastguard Worker 577*663afb9bSAndroid Build Coastguard Worker# __func__/__FUNCTION__ is not a macros in general 578*663afb9bSAndroid Build Coastguard WorkerCHECK_SYMBOL_EXISTS("__func__" "" EVENT__HAVE___func__) 579*663afb9bSAndroid Build Coastguard WorkerCHECK_SYMBOL_EXISTS("__FUNCTION__" "" EVENT__HAVE___FUNCTION__) 580*663afb9bSAndroid Build Coastguard Worker 581*663afb9bSAndroid Build Coastguard WorkerCHECK_SYMBOL_EXISTS(TAILQ_FOREACH sys/queue.h EVENT__HAVE_TAILQFOREACH) 582*663afb9bSAndroid Build Coastguard WorkerCHECK_CONST_EXISTS(CTL_KERN sys/sysctl.h EVENT__HAVE_DECL_CTL_KERN) 583*663afb9bSAndroid Build Coastguard WorkerCHECK_CONST_EXISTS(KERN_ARND sys/sysctl.h EVENT__HAVE_DECL_KERN_ARND) 584*663afb9bSAndroid Build Coastguard WorkerCHECK_SYMBOL_EXISTS(F_SETFD fcntl.h EVENT__HAVE_SETFD) 585*663afb9bSAndroid Build Coastguard Worker 586*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE(fd_mask EVENT__HAVE_FD_MASK) 587*663afb9bSAndroid Build Coastguard Worker 588*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE(size_t EVENT__SIZEOF_SIZE_T) 589*663afb9bSAndroid Build Coastguard Workerif(NOT EVENT__SIZEOF_SIZE_T) 590*663afb9bSAndroid Build Coastguard Worker set(EVENT__size_t "unsigned") 591*663afb9bSAndroid Build Coastguard Worker set(EVENT__SIZEOF_SIZE_T ${EVENT__SIZEOF_UNSIGNED}) 592*663afb9bSAndroid Build Coastguard Workerelse() 593*663afb9bSAndroid Build Coastguard Worker set(EVENT__size_t size_t) 594*663afb9bSAndroid Build Coastguard Workerendif() 595*663afb9bSAndroid Build Coastguard Worker 596*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("off_t" EVENT__SIZEOF_OFF_T LANGUAGE C) 597*663afb9bSAndroid Build Coastguard Worker 598*663afb9bSAndroid Build Coastguard Worker 599*663afb9bSAndroid Build Coastguard Worker# XXX we should functionalize these size and type sets. --elley 600*663afb9bSAndroid Build Coastguard Worker 601*663afb9bSAndroid Build Coastguard Worker# Winssck. 602*663afb9bSAndroid Build Coastguard Workerif (_MSC_VER) 603*663afb9bSAndroid Build Coastguard Worker list(APPEND CMAKE_EXTRA_INCLUDE_FILES BaseTsd.h) 604*663afb9bSAndroid Build Coastguard Workerendif() 605*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("ssize_t" EVENT__SIZEOF_SSIZE_T_LOWER LANGUAGE C) 606*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("SSIZE_T" EVENT__SIZEOF_SSIZE_T_UPPER LANGUAGE C) 607*663afb9bSAndroid Build Coastguard Worker 608*663afb9bSAndroid Build Coastguard Workerif (EVENT__SIZEOF_SSIZE_T_LOWER) 609*663afb9bSAndroid Build Coastguard Worker set(EVENT__ssize_t "ssize_t") 610*663afb9bSAndroid Build Coastguard Worker set(EVENT__SIZEOF_SSIZE_T ${EVENT__SIZEOF_SSIZE_T_LOWER}) 611*663afb9bSAndroid Build Coastguard Workerelseif (EVENT__SIZEOF_SSIZE_T_UPPER) 612*663afb9bSAndroid Build Coastguard Worker set(EVENT__ssize_t "SSIZE_T") 613*663afb9bSAndroid Build Coastguard Worker set(EVENT__SIZEOF_SSIZE_T ${EVENT__SIZEOF_SSIZE_T_UPPER}) 614*663afb9bSAndroid Build Coastguard Workerelse() 615*663afb9bSAndroid Build Coastguard Worker set(EVENT__ssize_t "int") 616*663afb9bSAndroid Build Coastguard Worker set(EVENT__SIZEOF_SSIZE_T ${EVENT__SIZEOF_INT}) 617*663afb9bSAndroid Build Coastguard Workerendif() 618*663afb9bSAndroid Build Coastguard Worker 619*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE(socklen_t EVENT__SIZEOF_SOCKLEN_T) 620*663afb9bSAndroid Build Coastguard Workerif(NOT EVENT__SIZEOF_SOCKLEN_T) 621*663afb9bSAndroid Build Coastguard Worker set(EVENT__socklen_t "unsigned int") 622*663afb9bSAndroid Build Coastguard Worker set(EVENT__SIZEOF_SOCKLEN_T ${EVENT__SIZEOF_UNSIGNED_INT}) 623*663afb9bSAndroid Build Coastguard Workerelse() 624*663afb9bSAndroid Build Coastguard Worker set(EVENT__socklen_t "socklen_t") 625*663afb9bSAndroid Build Coastguard Workerendif() 626*663afb9bSAndroid Build Coastguard Worker 627*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE(pid_t EVENT__SIZEOF_PID_T) 628*663afb9bSAndroid Build Coastguard Workerif(NOT EVENT__SIZEOF_PID_T) 629*663afb9bSAndroid Build Coastguard Worker set(EVENT__SIZEOF_PID_T ${EVENT__SIZEOF_INT}) 630*663afb9bSAndroid Build Coastguard Workerelse() 631*663afb9bSAndroid Build Coastguard Worker set(EVENT__SIZEOF_PID_T EVENT__SIZEOF_PID_T) 632*663afb9bSAndroid Build Coastguard Workerendif() 633*663afb9bSAndroid Build Coastguard Worker 634*663afb9bSAndroid Build Coastguard Workerif (NOT EVENT__DISABLE_THREAD_SUPPORT) 635*663afb9bSAndroid Build Coastguard Worker if (NOT WIN32) 636*663afb9bSAndroid Build Coastguard Worker list(APPEND CMAKE_EXTRA_INCLUDE_FILES pthread.h) 637*663afb9bSAndroid Build Coastguard Worker endif() 638*663afb9bSAndroid Build Coastguard Worker CHECK_TYPE_SIZE(pthread_t EVENT__SIZEOF_PTHREAD_T) 639*663afb9bSAndroid Build Coastguard Workerendif() 640*663afb9bSAndroid Build Coastguard Worker 641*663afb9bSAndroid Build Coastguard Workerif(EVENT__HAVE_CLOCK_GETTIME) 642*663afb9bSAndroid Build Coastguard Worker set(EVENT__DNS_USE_CPU_CLOCK_FOR_ID 1) 643*663afb9bSAndroid Build Coastguard Workerendif() 644*663afb9bSAndroid Build Coastguard Worker 645*663afb9bSAndroid Build Coastguard Worker# we're just getting lazy now. 646*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("uintptr_t" EVENT__HAVE_UINTPTR_T) 647*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("void *" EVENT__SIZEOF_VOID_P) 648*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("time_t" EVENT__SIZEOF_TIME_T) 649*663afb9bSAndroid Build Coastguard Worker 650*663afb9bSAndroid Build Coastguard Worker# Tests file offset bits. 651*663afb9bSAndroid Build Coastguard Worker# TODO: Add AIX test for if -D_LARGE_FILES is needed. 652*663afb9bSAndroid Build Coastguard Worker 653*663afb9bSAndroid Build Coastguard Worker# XXX: Why is this here? we don't even use it. Well, we don't even use it 654*663afb9bSAndroid Build Coastguard Worker# on top of that, why is it set in the config.h?! IT_MAKES_NO_SENSE 655*663afb9bSAndroid Build Coastguard Worker# I'm commenting it out for now. 656*663afb9bSAndroid Build Coastguard Worker# - ellzey 657*663afb9bSAndroid Build Coastguard Worker 658*663afb9bSAndroid Build Coastguard Worker#CHECK_FILE_OFFSET_BITS() 659*663afb9bSAndroid Build Coastguard Worker 660*663afb9bSAndroid Build Coastguard Worker# Verify kqueue works with pipes. 661*663afb9bSAndroid Build Coastguard Workerif (EVENT__HAVE_KQUEUE) 662*663afb9bSAndroid Build Coastguard Worker if ((CMAKE_CROSSCOMPILING OR APPLE) AND NOT EVENT__FORCE_KQUEUE_CHECK) 663*663afb9bSAndroid Build Coastguard Worker 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)") 664*663afb9bSAndroid Build Coastguard Worker set(EVENT__HAVE_WORKING_KQUEUE 1) 665*663afb9bSAndroid Build Coastguard Worker else() 666*663afb9bSAndroid Build Coastguard Worker message(STATUS "Checking if kqueue works with pipes...") 667*663afb9bSAndroid Build Coastguard Worker include(CheckWorkingKqueue) 668*663afb9bSAndroid Build Coastguard Worker endif() 669*663afb9bSAndroid Build Coastguard Workerendif() 670*663afb9bSAndroid Build Coastguard Worker 671*663afb9bSAndroid Build Coastguard Workerif(EVENT__HAVE_NETDB_H) 672*663afb9bSAndroid Build Coastguard Worker list(APPEND CMAKE_EXTRA_INCLUDE_FILES netdb.h) 673*663afb9bSAndroid Build Coastguard Worker CHECK_TYPE_SIZE("struct addrinfo" EVENT__HAVE_STRUCT_ADDRINFO) 674*663afb9bSAndroid Build Coastguard Workerelseif(WIN32) 675*663afb9bSAndroid Build Coastguard Worker list(APPEND CMAKE_EXTRA_INCLUDE_FILES ws2tcpip.h) 676*663afb9bSAndroid Build Coastguard Worker CHECK_TYPE_SIZE("struct addrinfo" EVENT__HAVE_STRUCT_ADDRINFO) 677*663afb9bSAndroid Build Coastguard Workerendif() 678*663afb9bSAndroid Build Coastguard Worker 679*663afb9bSAndroid Build Coastguard Worker# Check for sockaddr structure sizes. 680*663afb9bSAndroid Build Coastguard Workerset(SOCKADDR_HEADERS) 681*663afb9bSAndroid Build Coastguard Workerif (WIN32) 682*663afb9bSAndroid Build Coastguard Worker set(CMAKE_REQUIRED_DEFINITIONS "-DWIN32_LEAN_AND_MEAN") 683*663afb9bSAndroid Build Coastguard Worker if (_MSC_VER LESS 1300) 684*663afb9bSAndroid Build Coastguard Worker set(SOCKADDR_HEADERS winsock.h) 685*663afb9bSAndroid Build Coastguard Worker else() 686*663afb9bSAndroid Build Coastguard Worker set(SOCKADDR_HEADERS winsock2.h ws2tcpip.h) 687*663afb9bSAndroid Build Coastguard Worker endif() 688*663afb9bSAndroid Build Coastguard Workerelse() 689*663afb9bSAndroid Build Coastguard Worker if (EVENT__HAVE_NETINET_IN_H) 690*663afb9bSAndroid Build Coastguard Worker set(SOCKADDR_HEADERS ${SOCKADDR_HEADERS} netinet/in.h) 691*663afb9bSAndroid Build Coastguard Worker endif() 692*663afb9bSAndroid Build Coastguard Worker 693*663afb9bSAndroid Build Coastguard Worker if (EVENT__HAVE_NETINET_IN6_H) 694*663afb9bSAndroid Build Coastguard Worker set(SOCKADDR_HEADERS ${SOCKADDR_HEADERS} netinet/in6.h) 695*663afb9bSAndroid Build Coastguard Worker endif() 696*663afb9bSAndroid Build Coastguard Worker 697*663afb9bSAndroid Build Coastguard Worker if (EVENT__HAVE_SYS_SOCKET_H) 698*663afb9bSAndroid Build Coastguard Worker set(SOCKADDR_HEADERS ${SOCKADDR_HEADERS} sys/socket.h) 699*663afb9bSAndroid Build Coastguard Worker endif() 700*663afb9bSAndroid Build Coastguard Worker 701*663afb9bSAndroid Build Coastguard Worker if (EVENT__HAVE_NETDB_H) 702*663afb9bSAndroid Build Coastguard Worker set(SOCKADDR_HEADERS ${SOCKADDR_HEADERS} netdb.h) 703*663afb9bSAndroid Build Coastguard Worker endif() 704*663afb9bSAndroid Build Coastguard Workerendif() 705*663afb9bSAndroid Build Coastguard Worker 706*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("struct in6_addr" EVENT__HAVE_STRUCT_IN6_ADDR) 707*663afb9bSAndroid Build Coastguard Workerif(EVENT__HAVE_STRUCT_IN6_ADDR) 708*663afb9bSAndroid Build Coastguard Worker CHECK_STRUCT_HAS_MEMBER("struct in6_addr" 709*663afb9bSAndroid Build Coastguard Worker s6_addr16 "${SOCKADDR_HEADERS}" 710*663afb9bSAndroid Build Coastguard Worker EVENT__HAVE_STRUCT_IN6_ADDR_S6_ADDR16) 711*663afb9bSAndroid Build Coastguard Worker 712*663afb9bSAndroid Build Coastguard Worker CHECK_STRUCT_HAS_MEMBER("struct in6_addr" 713*663afb9bSAndroid Build Coastguard Worker s6_addr32 "${SOCKADDR_HEADERS}" 714*663afb9bSAndroid Build Coastguard Worker EVENT__HAVE_STRUCT_IN6_ADDR_S6_ADDR32) 715*663afb9bSAndroid Build Coastguard Workerendif() 716*663afb9bSAndroid Build Coastguard Worker 717*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("sa_family_t" EVENT__HAVE_SA_FAMILY_T) 718*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("struct sockaddr_in6" EVENT__HAVE_STRUCT_SOCKADDR_IN6) 719*663afb9bSAndroid Build Coastguard Worker 720*663afb9bSAndroid Build Coastguard Workerif(EVENT__HAVE_STRUCT_SOCKADDR_IN6) 721*663afb9bSAndroid Build Coastguard Worker CHECK_STRUCT_HAS_MEMBER("struct sockaddr_in6" 722*663afb9bSAndroid Build Coastguard Worker sin6_len "${SOCKADDR_HEADERS}" 723*663afb9bSAndroid Build Coastguard Worker EVENT__HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN) 724*663afb9bSAndroid Build Coastguard Worker 725*663afb9bSAndroid Build Coastguard Worker CHECK_STRUCT_HAS_MEMBER("struct sockaddr_in6" 726*663afb9bSAndroid Build Coastguard Worker sin_len "${SOCKADDR_HEADERS}" 727*663afb9bSAndroid Build Coastguard Worker EVENT__HAVE_STRUCT_SOCKADDR_IN_SIN_LEN) 728*663afb9bSAndroid Build Coastguard Workerendif() 729*663afb9bSAndroid Build Coastguard Worker 730*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("struct sockaddr_storage" EVENT__HAVE_STRUCT_SOCKADDR_STORAGE) 731*663afb9bSAndroid Build Coastguard Workerif(EVENT__HAVE_STRUCT_SOCKADDR_STORAGE) 732*663afb9bSAndroid Build Coastguard Worker CHECK_STRUCT_HAS_MEMBER("struct sockaddr_storage" 733*663afb9bSAndroid Build Coastguard Worker ss_family "${SOCKADDR_HEADERS}" 734*663afb9bSAndroid Build Coastguard Worker EVENT__HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY) 735*663afb9bSAndroid Build Coastguard Worker 736*663afb9bSAndroid Build Coastguard Worker CHECK_STRUCT_HAS_MEMBER("struct sockaddr_storage" 737*663afb9bSAndroid Build Coastguard Worker __ss_family "${SOCKADDR_HEADERS}" EVENT__HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY) 738*663afb9bSAndroid Build Coastguard Workerendif() 739*663afb9bSAndroid Build Coastguard Worker 740*663afb9bSAndroid Build Coastguard WorkerCHECK_TYPE_SIZE("struct linger" EVENT__HAVE_STRUCT_LINGER) 741*663afb9bSAndroid Build Coastguard Worker 742*663afb9bSAndroid Build Coastguard Worker# Group the source files. 743*663afb9bSAndroid Build Coastguard Workerset(HDR_PRIVATE 744*663afb9bSAndroid Build Coastguard Worker bufferevent-internal.h 745*663afb9bSAndroid Build Coastguard Worker changelist-internal.h 746*663afb9bSAndroid Build Coastguard Worker defer-internal.h 747*663afb9bSAndroid Build Coastguard Worker epolltable-internal.h 748*663afb9bSAndroid Build Coastguard Worker evbuffer-internal.h 749*663afb9bSAndroid Build Coastguard Worker event-internal.h 750*663afb9bSAndroid Build Coastguard Worker evmap-internal.h 751*663afb9bSAndroid Build Coastguard Worker evrpc-internal.h 752*663afb9bSAndroid Build Coastguard Worker evsignal-internal.h 753*663afb9bSAndroid Build Coastguard Worker evthread-internal.h 754*663afb9bSAndroid Build Coastguard Worker ht-internal.h 755*663afb9bSAndroid Build Coastguard Worker http-internal.h 756*663afb9bSAndroid Build Coastguard Worker iocp-internal.h 757*663afb9bSAndroid Build Coastguard Worker ipv6-internal.h 758*663afb9bSAndroid Build Coastguard Worker log-internal.h 759*663afb9bSAndroid Build Coastguard Worker minheap-internal.h 760*663afb9bSAndroid Build Coastguard Worker mm-internal.h 761*663afb9bSAndroid Build Coastguard Worker ratelim-internal.h 762*663afb9bSAndroid Build Coastguard Worker strlcpy-internal.h 763*663afb9bSAndroid Build Coastguard Worker util-internal.h 764*663afb9bSAndroid Build Coastguard Worker evconfig-private.h 765*663afb9bSAndroid Build Coastguard Worker compat/sys/queue.h) 766*663afb9bSAndroid Build Coastguard Worker 767*663afb9bSAndroid Build Coastguard Workerset(HDR_COMPAT 768*663afb9bSAndroid Build Coastguard Worker include/evdns.h 769*663afb9bSAndroid Build Coastguard Worker include/evrpc.h 770*663afb9bSAndroid Build Coastguard Worker include/event.h 771*663afb9bSAndroid Build Coastguard Worker include/evhttp.h 772*663afb9bSAndroid Build Coastguard Worker include/evutil.h) 773*663afb9bSAndroid Build Coastguard Worker 774*663afb9bSAndroid Build Coastguard Workerset(HDR_PUBLIC 775*663afb9bSAndroid Build Coastguard Worker include/event2/buffer.h 776*663afb9bSAndroid Build Coastguard Worker include/event2/bufferevent.h 777*663afb9bSAndroid Build Coastguard Worker include/event2/bufferevent_compat.h 778*663afb9bSAndroid Build Coastguard Worker include/event2/bufferevent_struct.h 779*663afb9bSAndroid Build Coastguard Worker include/event2/buffer_compat.h 780*663afb9bSAndroid Build Coastguard Worker include/event2/dns.h 781*663afb9bSAndroid Build Coastguard Worker include/event2/dns_compat.h 782*663afb9bSAndroid Build Coastguard Worker include/event2/dns_struct.h 783*663afb9bSAndroid Build Coastguard Worker include/event2/event.h 784*663afb9bSAndroid Build Coastguard Worker include/event2/event_compat.h 785*663afb9bSAndroid Build Coastguard Worker include/event2/event_struct.h 786*663afb9bSAndroid Build Coastguard Worker include/event2/http.h 787*663afb9bSAndroid Build Coastguard Worker include/event2/http_compat.h 788*663afb9bSAndroid Build Coastguard Worker include/event2/http_struct.h 789*663afb9bSAndroid Build Coastguard Worker include/event2/keyvalq_struct.h 790*663afb9bSAndroid Build Coastguard Worker include/event2/listener.h 791*663afb9bSAndroid Build Coastguard Worker include/event2/rpc.h 792*663afb9bSAndroid Build Coastguard Worker include/event2/rpc_compat.h 793*663afb9bSAndroid Build Coastguard Worker include/event2/rpc_struct.h 794*663afb9bSAndroid Build Coastguard Worker include/event2/tag.h 795*663afb9bSAndroid Build Coastguard Worker include/event2/tag_compat.h 796*663afb9bSAndroid Build Coastguard Worker include/event2/thread.h 797*663afb9bSAndroid Build Coastguard Worker include/event2/util.h 798*663afb9bSAndroid Build Coastguard Worker include/event2/visibility.h 799*663afb9bSAndroid Build Coastguard Worker ${PROJECT_BINARY_DIR}/include/event2/event-config.h) 800*663afb9bSAndroid Build Coastguard Worker 801*663afb9bSAndroid Build Coastguard Workerset(SRC_CORE 802*663afb9bSAndroid Build Coastguard Worker buffer.c 803*663afb9bSAndroid Build Coastguard Worker bufferevent.c 804*663afb9bSAndroid Build Coastguard Worker bufferevent_filter.c 805*663afb9bSAndroid Build Coastguard Worker bufferevent_pair.c 806*663afb9bSAndroid Build Coastguard Worker bufferevent_ratelim.c 807*663afb9bSAndroid Build Coastguard Worker bufferevent_sock.c 808*663afb9bSAndroid Build Coastguard Worker event.c 809*663afb9bSAndroid Build Coastguard Worker evmap.c 810*663afb9bSAndroid Build Coastguard Worker evthread.c 811*663afb9bSAndroid Build Coastguard Worker evutil.c 812*663afb9bSAndroid Build Coastguard Worker evutil_rand.c 813*663afb9bSAndroid Build Coastguard Worker evutil_time.c 814*663afb9bSAndroid Build Coastguard Worker listener.c 815*663afb9bSAndroid Build Coastguard Worker log.c 816*663afb9bSAndroid Build Coastguard Worker signal.c 817*663afb9bSAndroid Build Coastguard Worker strlcpy.c) 818*663afb9bSAndroid Build Coastguard Worker 819*663afb9bSAndroid Build Coastguard Workerif(EVENT__HAVE_SELECT) 820*663afb9bSAndroid Build Coastguard Worker list(APPEND SRC_CORE select.c) 821*663afb9bSAndroid Build Coastguard Workerendif() 822*663afb9bSAndroid Build Coastguard Worker 823*663afb9bSAndroid Build Coastguard Workerif(EVENT__HAVE_POLL) 824*663afb9bSAndroid Build Coastguard Worker list(APPEND SRC_CORE poll.c) 825*663afb9bSAndroid Build Coastguard Workerendif() 826*663afb9bSAndroid Build Coastguard Worker 827*663afb9bSAndroid Build Coastguard Workerif(EVENT__HAVE_KQUEUE) 828*663afb9bSAndroid Build Coastguard Worker list(APPEND SRC_CORE kqueue.c) 829*663afb9bSAndroid Build Coastguard Workerendif() 830*663afb9bSAndroid Build Coastguard Worker 831*663afb9bSAndroid Build Coastguard Workerif(EVENT__HAVE_DEVPOLL) 832*663afb9bSAndroid Build Coastguard Worker list(APPEND SRC_CORE devpoll.c) 833*663afb9bSAndroid Build Coastguard Workerendif() 834*663afb9bSAndroid Build Coastguard Worker 835*663afb9bSAndroid Build Coastguard Workerif(EVENT__HAVE_EPOLL) 836*663afb9bSAndroid Build Coastguard Worker list(APPEND SRC_CORE epoll.c) 837*663afb9bSAndroid Build Coastguard Workerendif() 838*663afb9bSAndroid Build Coastguard Worker 839*663afb9bSAndroid Build Coastguard Workerif(EVENT__HAVE_EVENT_PORTS) 840*663afb9bSAndroid Build Coastguard Worker list(APPEND SRC_CORE evport.c) 841*663afb9bSAndroid Build Coastguard Workerendif() 842*663afb9bSAndroid Build Coastguard Worker 843*663afb9bSAndroid Build Coastguard Workerif (NOT EVENT__DISABLE_OPENSSL) 844*663afb9bSAndroid Build Coastguard Worker find_package(OpenSSL REQUIRED) 845*663afb9bSAndroid Build Coastguard Worker 846*663afb9bSAndroid Build Coastguard Worker set(EVENT__HAVE_OPENSSL 1) 847*663afb9bSAndroid Build Coastguard Worker 848*663afb9bSAndroid Build Coastguard Worker message(STATUS "OpenSSL include: ${OPENSSL_INCLUDE_DIR}") 849*663afb9bSAndroid Build Coastguard Worker message(STATUS "OpenSSL lib: ${OPENSSL_LIBRARIES}") 850*663afb9bSAndroid Build Coastguard Worker 851*663afb9bSAndroid Build Coastguard Worker include_directories(${OPENSSL_INCLUDE_DIR}) 852*663afb9bSAndroid Build Coastguard Worker 853*663afb9bSAndroid Build Coastguard Worker list(APPEND SRC_OPENSSL bufferevent_openssl.c) 854*663afb9bSAndroid Build Coastguard Worker list(APPEND HDR_PUBLIC include/event2/bufferevent_ssl.h) 855*663afb9bSAndroid Build Coastguard Worker list(APPEND LIB_APPS ${OPENSSL_LIBRARIES}) 856*663afb9bSAndroid Build Coastguard Workerendif() 857*663afb9bSAndroid Build Coastguard Worker 858*663afb9bSAndroid Build Coastguard Workerif (NOT EVENT__DISABLE_THREAD_SUPPORT) 859*663afb9bSAndroid Build Coastguard Worker if (WIN32) 860*663afb9bSAndroid Build Coastguard Worker list(APPEND SRC_CORE evthread_win32.c) 861*663afb9bSAndroid Build Coastguard Worker else() 862*663afb9bSAndroid Build Coastguard Worker find_package(Threads REQUIRED) 863*663afb9bSAndroid Build Coastguard Worker if (NOT CMAKE_USE_PTHREADS_INIT) 864*663afb9bSAndroid Build Coastguard Worker message(FATAL_ERROR 865*663afb9bSAndroid Build Coastguard Worker "Failed to find Pthreads, set EVENT__DISABLE_THREAD_SUPPORT to disable") 866*663afb9bSAndroid Build Coastguard Worker endif() 867*663afb9bSAndroid Build Coastguard Worker 868*663afb9bSAndroid Build Coastguard Worker set(EVENT__HAVE_PTHREADS 1) 869*663afb9bSAndroid Build Coastguard Worker list(APPEND LIB_APPS ${CMAKE_THREAD_LIBS_INIT}) 870*663afb9bSAndroid Build Coastguard Worker endif() 871*663afb9bSAndroid Build Coastguard Workerendif() 872*663afb9bSAndroid Build Coastguard Worker 873*663afb9bSAndroid Build Coastguard Workerif (NOT EVENT__DISABLE_TESTS) 874*663afb9bSAndroid Build Coastguard Worker # Zlib is only used for testing. 875*663afb9bSAndroid Build Coastguard Worker find_package(ZLIB) 876*663afb9bSAndroid Build Coastguard Worker 877*663afb9bSAndroid Build Coastguard Worker if (ZLIB_LIBRARY AND ZLIB_INCLUDE_DIR) 878*663afb9bSAndroid Build Coastguard Worker include_directories(${ZLIB_INCLUDE_DIRS}) 879*663afb9bSAndroid Build Coastguard Worker 880*663afb9bSAndroid Build Coastguard Worker set(EVENT__HAVE_LIBZ 1) 881*663afb9bSAndroid Build Coastguard Worker list(APPEND LIB_APPS ${ZLIB_LIBRARIES}) 882*663afb9bSAndroid Build Coastguard Worker endif() 883*663afb9bSAndroid Build Coastguard Workerendif() 884*663afb9bSAndroid Build Coastguard Worker 885*663afb9bSAndroid Build Coastguard Workerset(SRC_EXTRA 886*663afb9bSAndroid Build Coastguard Worker event_tagging.c 887*663afb9bSAndroid Build Coastguard Worker http.c 888*663afb9bSAndroid Build Coastguard Worker evdns.c 889*663afb9bSAndroid Build Coastguard Worker evrpc.c) 890*663afb9bSAndroid Build Coastguard Worker 891*663afb9bSAndroid Build Coastguard Workeradd_definitions(-DHAVE_CONFIG_H) 892*663afb9bSAndroid Build Coastguard Worker 893*663afb9bSAndroid Build Coastguard Worker# We use BEFORE here so we don't accidentally look in system directories 894*663afb9bSAndroid Build Coastguard Worker# first for some previous versions of the headers that are installed. 895*663afb9bSAndroid Build Coastguard Workerinclude_directories(BEFORE ${PROJECT_SOURCE_DIR} 896*663afb9bSAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/compat 897*663afb9bSAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/include) 898*663afb9bSAndroid Build Coastguard Worker 899*663afb9bSAndroid Build Coastguard Workerif(WIN32) 900*663afb9bSAndroid Build Coastguard Worker list(APPEND SRC_CORE 901*663afb9bSAndroid Build Coastguard Worker buffer_iocp.c 902*663afb9bSAndroid Build Coastguard Worker bufferevent_async.c 903*663afb9bSAndroid Build Coastguard Worker event_iocp.c 904*663afb9bSAndroid Build Coastguard Worker win32select.c) 905*663afb9bSAndroid Build Coastguard Worker 906*663afb9bSAndroid Build Coastguard Worker list(APPEND HDR_PRIVATE WIN32-Code/getopt.h) 907*663afb9bSAndroid Build Coastguard Worker 908*663afb9bSAndroid Build Coastguard Worker set(EVENT__DNS_USE_FTIME_FOR_ID 1) 909*663afb9bSAndroid Build Coastguard Worker set(LIB_PLATFORM ws2_32 shell32 advapi32) 910*663afb9bSAndroid Build Coastguard Worker add_definitions( 911*663afb9bSAndroid Build Coastguard Worker -D_CRT_SECURE_NO_WARNINGS 912*663afb9bSAndroid Build Coastguard Worker -D_CRT_NONSTDC_NO_DEPRECATE) 913*663afb9bSAndroid Build Coastguard Worker 914*663afb9bSAndroid Build Coastguard Worker include_directories(./WIN32-Code) 915*663afb9bSAndroid Build Coastguard Workerendif() 916*663afb9bSAndroid Build Coastguard Worker 917*663afb9bSAndroid Build Coastguard Workerif (SOLARIS) 918*663afb9bSAndroid Build Coastguard Worker list(APPEND LIB_PLATFORM socket nsl) 919*663afb9bSAndroid Build Coastguard Workerendif() 920*663afb9bSAndroid Build Coastguard Worker 921*663afb9bSAndroid Build Coastguard Workersource_group("Headers Private" FILES ${HDR_PRIVATE}) 922*663afb9bSAndroid Build Coastguard Workersource_group("Header Compat" FILES ${HDR_COMPAT}) 923*663afb9bSAndroid Build Coastguard Workersource_group("Headers Public" FILES ${HDR_PUBLIC}) 924*663afb9bSAndroid Build Coastguard Workersource_group("Source Core" FILES ${SRC_CORE}) 925*663afb9bSAndroid Build Coastguard Workersource_group("Source Extra" FILES ${SRC_EXTRA}) 926*663afb9bSAndroid Build Coastguard Worker 927*663afb9bSAndroid Build Coastguard Worker# Generate the configure headers. 928*663afb9bSAndroid Build Coastguard Worker# (Place them in the build dir so we don't polute the source tree with generated files). 929*663afb9bSAndroid Build Coastguard Workerinclude_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}/include) 930*663afb9bSAndroid Build Coastguard Worker 931*663afb9bSAndroid Build Coastguard Workerif (${GNUC}) 932*663afb9bSAndroid Build Coastguard Worker set(EVENT_SHARED_FLAGS -fvisibility=hidden) 933*663afb9bSAndroid Build Coastguard Workerelseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "SunPro") 934*663afb9bSAndroid Build Coastguard Worker set(EVENT_SHARED_FLAGS -xldscope=hidden) 935*663afb9bSAndroid Build Coastguard Workerendif() 936*663afb9bSAndroid Build Coastguard Worker 937*663afb9bSAndroid Build Coastguard Workerconfigure_file( 938*663afb9bSAndroid Build Coastguard Worker ${CMAKE_CURRENT_SOURCE_DIR}/event-config.h.cmake 939*663afb9bSAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/include/event2/event-config.h 940*663afb9bSAndroid Build Coastguard Worker NEWLINE_STYLE UNIX) 941*663afb9bSAndroid Build Coastguard Worker 942*663afb9bSAndroid Build Coastguard Workerconfigure_file( 943*663afb9bSAndroid Build Coastguard Worker ${CMAKE_CURRENT_SOURCE_DIR}/evconfig-private.h.cmake 944*663afb9bSAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/include/evconfig-private.h) 945*663afb9bSAndroid Build Coastguard Worker 946*663afb9bSAndroid Build Coastguard Worker# 947*663afb9bSAndroid Build Coastguard Worker# Create the libraries. 948*663afb9bSAndroid Build Coastguard Worker# 949*663afb9bSAndroid Build Coastguard Workerinclude(AddEventLibrary) 950*663afb9bSAndroid Build Coastguard Workeradd_event_library(event_core SOURCES ${SRC_CORE}) 951*663afb9bSAndroid Build Coastguard Workeradd_event_library(event_extra 952*663afb9bSAndroid Build Coastguard Worker INNER_LIBRARIES event_core 953*663afb9bSAndroid Build Coastguard Worker SOURCES ${SRC_EXTRA}) 954*663afb9bSAndroid Build Coastguard Worker 955*663afb9bSAndroid Build Coastguard Workerif (NOT EVENT__DISABLE_OPENSSL) 956*663afb9bSAndroid Build Coastguard Worker add_event_library(event_openssl 957*663afb9bSAndroid Build Coastguard Worker INNER_LIBRARIES event_core 958*663afb9bSAndroid Build Coastguard Worker OUTER_INCLUDES ${OPENSSL_INCLUDE_DIR} 959*663afb9bSAndroid Build Coastguard Worker LIBRARIES ${OPENSSL_LIBRARIES} 960*663afb9bSAndroid Build Coastguard Worker SOURCES ${SRC_OPENSSL}) 961*663afb9bSAndroid Build Coastguard Workerendif() 962*663afb9bSAndroid Build Coastguard Worker 963*663afb9bSAndroid Build Coastguard Workerif (EVENT__HAVE_PTHREADS) 964*663afb9bSAndroid Build Coastguard Worker set(SRC_PTHREADS evthread_pthread.c) 965*663afb9bSAndroid Build Coastguard Worker add_event_library(event_pthreads 966*663afb9bSAndroid Build Coastguard Worker INNER_LIBRARIES event_core 967*663afb9bSAndroid Build Coastguard Worker SOURCES ${SRC_PTHREADS}) 968*663afb9bSAndroid Build Coastguard Workerendif() 969*663afb9bSAndroid Build Coastguard Worker 970*663afb9bSAndroid Build Coastguard Worker# library exists for historical reasons; it contains the contents of 971*663afb9bSAndroid Build Coastguard Worker# both libevent_core and libevent_extra. You shouldn’t use it; it may 972*663afb9bSAndroid Build Coastguard Worker# go away in a future version of Libevent. 973*663afb9bSAndroid Build Coastguard Workeradd_event_library(event SOURCES ${SRC_CORE} ${SRC_EXTRA}) 974*663afb9bSAndroid Build Coastguard Worker 975*663afb9bSAndroid Build Coastguard Workerset(WIN32_GETOPT) 976*663afb9bSAndroid Build Coastguard Workerif (WIN32) 977*663afb9bSAndroid Build Coastguard Worker set(_TMPLIBS) 978*663afb9bSAndroid Build Coastguard Worker if (${EVENT_LIBRARY_STATIC}) 979*663afb9bSAndroid Build Coastguard Worker list(APPEND _TMPLIBS event_core_static event_static) 980*663afb9bSAndroid Build Coastguard Worker endif() 981*663afb9bSAndroid Build Coastguard Worker if (${EVENT_LIBRARY_SHARED}) 982*663afb9bSAndroid Build Coastguard Worker list(APPEND _TMPLIBS event_core_shared event_shared) 983*663afb9bSAndroid Build Coastguard Worker endif() 984*663afb9bSAndroid Build Coastguard Worker foreach(lib ${_TMPLIBS}) 985*663afb9bSAndroid Build Coastguard Worker target_link_libraries(${lib} iphlpapi) 986*663afb9bSAndroid Build Coastguard Worker endforeach() 987*663afb9bSAndroid Build Coastguard Worker unset(_TMPLIBS) 988*663afb9bSAndroid Build Coastguard Worker 989*663afb9bSAndroid Build Coastguard Worker list(APPEND WIN32_GETOPT 990*663afb9bSAndroid Build Coastguard Worker WIN32-Code/getopt.c 991*663afb9bSAndroid Build Coastguard Worker WIN32-Code/getopt_long.c) 992*663afb9bSAndroid Build Coastguard Workerendif() 993*663afb9bSAndroid Build Coastguard Worker 994*663afb9bSAndroid Build Coastguard Worker# 995*663afb9bSAndroid Build Coastguard Worker# Samples. 996*663afb9bSAndroid Build Coastguard Worker# 997*663afb9bSAndroid Build Coastguard Workermacro(add_sample_prog ssl name) 998*663afb9bSAndroid Build Coastguard Worker add_executable(${name} ${ARGN}) 999*663afb9bSAndroid Build Coastguard Worker 1000*663afb9bSAndroid Build Coastguard Worker target_link_libraries(${name} 1001*663afb9bSAndroid Build Coastguard Worker event_extra 1002*663afb9bSAndroid Build Coastguard Worker event_core 1003*663afb9bSAndroid Build Coastguard Worker ${LIB_APPS} 1004*663afb9bSAndroid Build Coastguard Worker ${LIB_PLATFORM}) 1005*663afb9bSAndroid Build Coastguard Worker 1006*663afb9bSAndroid Build Coastguard Worker if (${ssl}) 1007*663afb9bSAndroid Build Coastguard Worker target_link_libraries(${name} event_openssl) 1008*663afb9bSAndroid Build Coastguard Worker if(WIN32) 1009*663afb9bSAndroid Build Coastguard Worker target_link_libraries(${name} crypt32) 1010*663afb9bSAndroid Build Coastguard Worker endif() 1011*663afb9bSAndroid Build Coastguard Worker endif() 1012*663afb9bSAndroid Build Coastguard Workerendmacro() 1013*663afb9bSAndroid Build Coastguard Workerif (NOT EVENT__DISABLE_SAMPLES) 1014*663afb9bSAndroid Build Coastguard Worker set(SAMPLES 1015*663afb9bSAndroid Build Coastguard Worker event-read-fifo 1016*663afb9bSAndroid Build Coastguard Worker hello-world 1017*663afb9bSAndroid Build Coastguard Worker signal-test 1018*663afb9bSAndroid Build Coastguard Worker http-connect 1019*663afb9bSAndroid Build Coastguard Worker time-test) 1020*663afb9bSAndroid Build Coastguard Worker 1021*663afb9bSAndroid Build Coastguard Worker foreach(SAMPLE ${SAMPLES}) 1022*663afb9bSAndroid Build Coastguard Worker add_sample_prog(OFF ${SAMPLE} sample/${SAMPLE}.c) 1023*663afb9bSAndroid Build Coastguard Worker endforeach() 1024*663afb9bSAndroid Build Coastguard Worker 1025*663afb9bSAndroid Build Coastguard Worker if (NOT EVENT__DISABLE_OPENSSL) 1026*663afb9bSAndroid Build Coastguard Worker add_sample_prog(ON https-client 1027*663afb9bSAndroid Build Coastguard Worker sample/https-client.c 1028*663afb9bSAndroid Build Coastguard Worker sample/openssl_hostname_validation.c 1029*663afb9bSAndroid Build Coastguard Worker sample/hostcheck.c) 1030*663afb9bSAndroid Build Coastguard Worker add_sample_prog(ON le-proxy 1031*663afb9bSAndroid Build Coastguard Worker sample/le-proxy.c) 1032*663afb9bSAndroid Build Coastguard Worker endif() 1033*663afb9bSAndroid Build Coastguard Worker 1034*663afb9bSAndroid Build Coastguard Worker set(SAMPLES_WOPT 1035*663afb9bSAndroid Build Coastguard Worker dns-example 1036*663afb9bSAndroid Build Coastguard Worker http-server 1037*663afb9bSAndroid Build Coastguard Worker ) 1038*663afb9bSAndroid Build Coastguard Worker foreach (SAMPLE ${SAMPLES_WOPT}) 1039*663afb9bSAndroid Build Coastguard Worker add_sample_prog(OFF ${SAMPLE} sample/${SAMPLE}.c ${WIN32_GETOPT}) 1040*663afb9bSAndroid Build Coastguard Worker endforeach() 1041*663afb9bSAndroid Build Coastguard Workerendif() 1042*663afb9bSAndroid Build Coastguard Worker 1043*663afb9bSAndroid Build Coastguard Worker# 1044*663afb9bSAndroid Build Coastguard Worker# Benchmarks 1045*663afb9bSAndroid Build Coastguard Worker# 1046*663afb9bSAndroid Build Coastguard Workermacro(add_bench_prog prog) 1047*663afb9bSAndroid Build Coastguard Worker add_executable(${prog} ${ARGN}) 1048*663afb9bSAndroid Build Coastguard Worker target_link_libraries(${prog} 1049*663afb9bSAndroid Build Coastguard Worker event_extra 1050*663afb9bSAndroid Build Coastguard Worker event_core 1051*663afb9bSAndroid Build Coastguard Worker ${LIB_APPS} 1052*663afb9bSAndroid Build Coastguard Worker ${LIB_PLATFORM}) 1053*663afb9bSAndroid Build Coastguard Workerendmacro() 1054*663afb9bSAndroid Build Coastguard Workerif (NOT EVENT__DISABLE_BENCHMARK) 1055*663afb9bSAndroid Build Coastguard Worker foreach (BENCHMARK bench_http bench_httpclient) 1056*663afb9bSAndroid Build Coastguard Worker add_bench_prog(${BENCHMARK} test/${BENCHMARK}.c) 1057*663afb9bSAndroid Build Coastguard Worker endforeach() 1058*663afb9bSAndroid Build Coastguard Worker 1059*663afb9bSAndroid Build Coastguard Worker add_bench_prog(bench test/bench.c ${WIN32_GETOPT}) 1060*663afb9bSAndroid Build Coastguard Worker add_bench_prog(bench_cascade test/bench_cascade.c ${WIN32_GETOPT}) 1061*663afb9bSAndroid Build Coastguard Workerendif() 1062*663afb9bSAndroid Build Coastguard Worker 1063*663afb9bSAndroid Build Coastguard Worker# 1064*663afb9bSAndroid Build Coastguard Worker# Tests 1065*663afb9bSAndroid Build Coastguard Worker# 1066*663afb9bSAndroid Build Coastguard Workermacro(add_test_prog prog) 1067*663afb9bSAndroid Build Coastguard Worker add_executable(${prog} test/${prog}.c) 1068*663afb9bSAndroid Build Coastguard Worker target_link_libraries(${prog} 1069*663afb9bSAndroid Build Coastguard Worker ${LIB_APPS} 1070*663afb9bSAndroid Build Coastguard Worker ${LIB_PLATFORM} 1071*663afb9bSAndroid Build Coastguard Worker event_core 1072*663afb9bSAndroid Build Coastguard Worker event_extra 1073*663afb9bSAndroid Build Coastguard Worker ${ARGN}) 1074*663afb9bSAndroid Build Coastguard Workerendmacro() 1075*663afb9bSAndroid Build Coastguard Workerif (NOT EVENT__DISABLE_TESTS) 1076*663afb9bSAndroid Build Coastguard Worker # 1077*663afb9bSAndroid Build Coastguard Worker # Generate Regress tests. 1078*663afb9bSAndroid Build Coastguard Worker # 1079*663afb9bSAndroid Build Coastguard Worker if (NOT EVENT__DISABLE_REGRESS) 1080*663afb9bSAndroid Build Coastguard Worker # (We require python to generate the regress tests) 1081*663afb9bSAndroid Build Coastguard Worker find_package(PythonInterp 3) 1082*663afb9bSAndroid Build Coastguard Worker 1083*663afb9bSAndroid Build Coastguard Worker if (PYTHONINTERP_FOUND) 1084*663afb9bSAndroid Build Coastguard Worker set(__FOUND_USABLE_PYTHON 1) 1085*663afb9bSAndroid Build Coastguard Worker else() 1086*663afb9bSAndroid Build Coastguard Worker find_package(PythonInterp 2) 1087*663afb9bSAndroid Build Coastguard Worker if (PYTHONINTERP_FOUND) 1088*663afb9bSAndroid Build Coastguard Worker set(__FOUND_USABLE_PYTHON 1) 1089*663afb9bSAndroid Build Coastguard Worker else() 1090*663afb9bSAndroid Build Coastguard Worker message(ERROR "No suitable Python version found, bailing...") 1091*663afb9bSAndroid Build Coastguard Worker endif() 1092*663afb9bSAndroid Build Coastguard Worker endif() 1093*663afb9bSAndroid Build Coastguard Worker 1094*663afb9bSAndroid Build Coastguard Worker if (__FOUND_USABLE_PYTHON) 1095*663afb9bSAndroid Build Coastguard Worker message(STATUS "Generating regress tests...") 1096*663afb9bSAndroid Build Coastguard Worker 1097*663afb9bSAndroid Build Coastguard Worker add_definitions(-DTINYTEST_LOCAL) 1098*663afb9bSAndroid Build Coastguard Worker 1099*663afb9bSAndroid Build Coastguard Worker add_custom_command( 1100*663afb9bSAndroid Build Coastguard Worker OUTPUT 1101*663afb9bSAndroid Build Coastguard Worker ${CMAKE_CURRENT_SOURCE_DIR}/test/regress.gen.c 1102*663afb9bSAndroid Build Coastguard Worker ${CMAKE_CURRENT_SOURCE_DIR}/test/regress.gen.h 1103*663afb9bSAndroid Build Coastguard Worker DEPENDS 1104*663afb9bSAndroid Build Coastguard Worker event_rpcgen.py 1105*663afb9bSAndroid Build Coastguard Worker test/regress.rpc 1106*663afb9bSAndroid Build Coastguard Worker COMMAND ${PYTHON_EXECUTABLE} ../event_rpcgen.py --quiet regress.rpc 1107*663afb9bSAndroid Build Coastguard Worker WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) 1108*663afb9bSAndroid Build Coastguard Worker 1109*663afb9bSAndroid Build Coastguard Worker list(APPEND SRC_REGRESS 1110*663afb9bSAndroid Build Coastguard Worker test/regress.c 1111*663afb9bSAndroid Build Coastguard Worker test/regress.gen.c 1112*663afb9bSAndroid Build Coastguard Worker test/regress.gen.h 1113*663afb9bSAndroid Build Coastguard Worker test/regress_buffer.c 1114*663afb9bSAndroid Build Coastguard Worker test/regress_bufferevent.c 1115*663afb9bSAndroid Build Coastguard Worker test/regress_dns.c 1116*663afb9bSAndroid Build Coastguard Worker test/regress_et.c 1117*663afb9bSAndroid Build Coastguard Worker test/regress_finalize.c 1118*663afb9bSAndroid Build Coastguard Worker test/regress_http.c 1119*663afb9bSAndroid Build Coastguard Worker test/regress_listener.c 1120*663afb9bSAndroid Build Coastguard Worker test/regress_main.c 1121*663afb9bSAndroid Build Coastguard Worker test/regress_minheap.c 1122*663afb9bSAndroid Build Coastguard Worker test/regress_rpc.c 1123*663afb9bSAndroid Build Coastguard Worker test/regress_testutils.c 1124*663afb9bSAndroid Build Coastguard Worker test/regress_testutils.h 1125*663afb9bSAndroid Build Coastguard Worker test/regress_util.c 1126*663afb9bSAndroid Build Coastguard Worker test/tinytest.c) 1127*663afb9bSAndroid Build Coastguard Worker 1128*663afb9bSAndroid Build Coastguard Worker if (WIN32) 1129*663afb9bSAndroid Build Coastguard Worker list(APPEND SRC_REGRESS test/regress_iocp.c) 1130*663afb9bSAndroid Build Coastguard Worker if (NOT EVENT__DISABLE_THREAD_SUPPORT) 1131*663afb9bSAndroid Build Coastguard Worker list(APPEND SRC_REGRESS test/regress_thread.c) 1132*663afb9bSAndroid Build Coastguard Worker endif() 1133*663afb9bSAndroid Build Coastguard Worker elseif (EVENT__HAVE_PTHREADS) 1134*663afb9bSAndroid Build Coastguard Worker list(APPEND SRC_REGRESS test/regress_thread.c) 1135*663afb9bSAndroid Build Coastguard Worker endif() 1136*663afb9bSAndroid Build Coastguard Worker 1137*663afb9bSAndroid Build Coastguard Worker if (ZLIB_LIBRARY AND ZLIB_INCLUDE_DIR) 1138*663afb9bSAndroid Build Coastguard Worker list(APPEND SRC_REGRESS test/regress_zlib.c) 1139*663afb9bSAndroid Build Coastguard Worker endif() 1140*663afb9bSAndroid Build Coastguard Worker 1141*663afb9bSAndroid Build Coastguard Worker if (NOT EVENT__DISABLE_OPENSSL) 1142*663afb9bSAndroid Build Coastguard Worker list(APPEND SRC_REGRESS test/regress_ssl.c) 1143*663afb9bSAndroid Build Coastguard Worker endif() 1144*663afb9bSAndroid Build Coastguard Worker 1145*663afb9bSAndroid Build Coastguard Worker add_executable(regress ${SRC_REGRESS}) 1146*663afb9bSAndroid Build Coastguard Worker 1147*663afb9bSAndroid Build Coastguard Worker target_link_libraries(regress 1148*663afb9bSAndroid Build Coastguard Worker ${LIB_APPS} 1149*663afb9bSAndroid Build Coastguard Worker ${LIB_PLATFORM} 1150*663afb9bSAndroid Build Coastguard Worker event_core 1151*663afb9bSAndroid Build Coastguard Worker event_extra) 1152*663afb9bSAndroid Build Coastguard Worker if (NOT EVENT__DISABLE_OPENSSL) 1153*663afb9bSAndroid Build Coastguard Worker target_link_libraries(regress event_openssl) 1154*663afb9bSAndroid Build Coastguard Worker endif() 1155*663afb9bSAndroid Build Coastguard Worker if (CMAKE_USE_PTHREADS_INIT) 1156*663afb9bSAndroid Build Coastguard Worker target_link_libraries(regress event_pthreads) 1157*663afb9bSAndroid Build Coastguard Worker endif() 1158*663afb9bSAndroid Build Coastguard Worker else() 1159*663afb9bSAndroid Build Coastguard Worker message(WARNING "No suitable Python interpreter found, cannot generate regress tests!") 1160*663afb9bSAndroid Build Coastguard Worker endif() 1161*663afb9bSAndroid Build Coastguard Worker endif() 1162*663afb9bSAndroid Build Coastguard Worker 1163*663afb9bSAndroid Build Coastguard Worker # 1164*663afb9bSAndroid Build Coastguard Worker # Test programs. 1165*663afb9bSAndroid Build Coastguard Worker # 1166*663afb9bSAndroid Build Coastguard Worker # all of these, including the cmakelists.txt should be moved 1167*663afb9bSAndroid Build Coastguard Worker # into the dirctory 'tests' first. 1168*663afb9bSAndroid Build Coastguard Worker # 1169*663afb9bSAndroid Build Coastguard Worker # doing this, we can remove all the DISABLE_TESTS stuff, and simply 1170*663afb9bSAndroid Build Coastguard Worker # do something like: 1171*663afb9bSAndroid Build Coastguard Worker # 1172*663afb9bSAndroid Build Coastguard Worker # add_custom_targets(tests) 1173*663afb9bSAndroid Build Coastguard Worker # add_executable(... EXCLUDE_FROM_ALL ...c) 1174*663afb9bSAndroid Build Coastguard Worker # add_dependencis(tests testa testb testc) 1175*663afb9bSAndroid Build Coastguard Worker # add_test(....) 1176*663afb9bSAndroid Build Coastguard Worker # 1177*663afb9bSAndroid Build Coastguard Worker # then you can just run 'make tests' instead of them all 1178*663afb9bSAndroid Build Coastguard Worker # auto-compile|running 1179*663afb9bSAndroid Build Coastguard Worker # - ellzey 1180*663afb9bSAndroid Build Coastguard Worker set(TESTPROGS test-changelist 1181*663afb9bSAndroid Build Coastguard Worker test-eof 1182*663afb9bSAndroid Build Coastguard Worker test-closed 1183*663afb9bSAndroid Build Coastguard Worker test-fdleak 1184*663afb9bSAndroid Build Coastguard Worker test-init 1185*663afb9bSAndroid Build Coastguard Worker test-time 1186*663afb9bSAndroid Build Coastguard Worker test-weof) 1187*663afb9bSAndroid Build Coastguard Worker 1188*663afb9bSAndroid Build Coastguard Worker foreach (TESTPROG ${TESTPROGS} test-dumpevents) 1189*663afb9bSAndroid Build Coastguard Worker add_test_prog(${TESTPROG}) 1190*663afb9bSAndroid Build Coastguard Worker endforeach() 1191*663afb9bSAndroid Build Coastguard Worker if (UNIX) 1192*663afb9bSAndroid Build Coastguard Worker add_test_prog(test-ratelim m) 1193*663afb9bSAndroid Build Coastguard Worker else() 1194*663afb9bSAndroid Build Coastguard Worker add_test_prog(test-ratelim) 1195*663afb9bSAndroid Build Coastguard Worker endif() 1196*663afb9bSAndroid Build Coastguard Worker 1197*663afb9bSAndroid Build Coastguard Worker set(ALL_TESTPROGS 1198*663afb9bSAndroid Build Coastguard Worker ${TESTPROGS} 1199*663afb9bSAndroid Build Coastguard Worker test-dumpevents 1200*663afb9bSAndroid Build Coastguard Worker test-ratelim 1201*663afb9bSAndroid Build Coastguard Worker ) 1202*663afb9bSAndroid Build Coastguard Worker 1203*663afb9bSAndroid Build Coastguard Worker # 1204*663afb9bSAndroid Build Coastguard Worker # We run all tests with the different backends turned on one at a time. 1205*663afb9bSAndroid Build Coastguard Worker # 1206*663afb9bSAndroid Build Coastguard Worker 1207*663afb9bSAndroid Build Coastguard Worker # Add event backends based on system introspection result. 1208*663afb9bSAndroid Build Coastguard Worker set(BACKENDS "") 1209*663afb9bSAndroid Build Coastguard Worker 1210*663afb9bSAndroid Build Coastguard Worker if (EVENT__HAVE_EPOLL) 1211*663afb9bSAndroid Build Coastguard Worker list(APPEND BACKENDS EPOLL) 1212*663afb9bSAndroid Build Coastguard Worker endif() 1213*663afb9bSAndroid Build Coastguard Worker 1214*663afb9bSAndroid Build Coastguard Worker if (EVENT__HAVE_SELECT) 1215*663afb9bSAndroid Build Coastguard Worker list(APPEND BACKENDS SELECT) 1216*663afb9bSAndroid Build Coastguard Worker endif() 1217*663afb9bSAndroid Build Coastguard Worker 1218*663afb9bSAndroid Build Coastguard Worker if (EVENT__HAVE_POLL) 1219*663afb9bSAndroid Build Coastguard Worker list(APPEND BACKENDS POLL) 1220*663afb9bSAndroid Build Coastguard Worker endif() 1221*663afb9bSAndroid Build Coastguard Worker 1222*663afb9bSAndroid Build Coastguard Worker if (EVENT__HAVE_KQUEUE) 1223*663afb9bSAndroid Build Coastguard Worker list(APPEND BACKENDS KQUEUE) 1224*663afb9bSAndroid Build Coastguard Worker endif() 1225*663afb9bSAndroid Build Coastguard Worker 1226*663afb9bSAndroid Build Coastguard Worker if (EVENT__HAVE_EVENT_PORTS) 1227*663afb9bSAndroid Build Coastguard Worker list(APPEND BACKENDS EVPORT) 1228*663afb9bSAndroid Build Coastguard Worker endif() 1229*663afb9bSAndroid Build Coastguard Worker 1230*663afb9bSAndroid Build Coastguard Worker if (EVENT__HAVE_DEVPOLL) 1231*663afb9bSAndroid Build Coastguard Worker list(APPEND BACKENDS DEVPOLL) 1232*663afb9bSAndroid Build Coastguard Worker endif() 1233*663afb9bSAndroid Build Coastguard Worker 1234*663afb9bSAndroid Build Coastguard Worker if (WIN32) 1235*663afb9bSAndroid Build Coastguard Worker list(APPEND BACKENDS WIN32) 1236*663afb9bSAndroid Build Coastguard Worker endif() 1237*663afb9bSAndroid Build Coastguard Worker 1238*663afb9bSAndroid Build Coastguard Worker 1239*663afb9bSAndroid Build Coastguard Worker # Default environment variables turns off all event systems, 1240*663afb9bSAndroid Build Coastguard Worker # then we enable each one, one at a time when creating the tests. 1241*663afb9bSAndroid Build Coastguard Worker set(DEFAULT_TEST_ENV_VARS) 1242*663afb9bSAndroid Build Coastguard Worker foreach(BACKEND ${BACKENDS}) 1243*663afb9bSAndroid Build Coastguard Worker set(BACKEND_ENV_VAR "EVENT_NO${BACKEND}=1") 1244*663afb9bSAndroid Build Coastguard Worker list(APPEND DEFAULT_TEST_ENV_VARS "${BACKEND_ENV_VAR}") 1245*663afb9bSAndroid Build Coastguard Worker endforeach() 1246*663afb9bSAndroid Build Coastguard Worker 1247*663afb9bSAndroid Build Coastguard Worker # Macro that creates the ctest test for a backend. 1248*663afb9bSAndroid Build Coastguard Worker macro(add_backend_test BACKEND_TEST_NAME ENV_VARS) 1249*663afb9bSAndroid Build Coastguard Worker set(TEST_NAMES "") 1250*663afb9bSAndroid Build Coastguard Worker 1251*663afb9bSAndroid Build Coastguard Worker foreach (TESTPROG ${TESTPROGS}) 1252*663afb9bSAndroid Build Coastguard Worker set(TEST_NAME ${TESTPROG}__${BACKEND_TEST_NAME}) 1253*663afb9bSAndroid Build Coastguard Worker 1254*663afb9bSAndroid Build Coastguard Worker add_test(${TEST_NAME} 1255*663afb9bSAndroid Build Coastguard Worker ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TESTPROG}) 1256*663afb9bSAndroid Build Coastguard Worker 1257*663afb9bSAndroid Build Coastguard Worker list(APPEND TEST_NAMES ${TEST_NAME}) 1258*663afb9bSAndroid Build Coastguard Worker 1259*663afb9bSAndroid Build Coastguard Worker set_tests_properties(${TEST_NAME} 1260*663afb9bSAndroid Build Coastguard Worker PROPERTIES ENVIRONMENT "${ENV_VARS}") 1261*663afb9bSAndroid Build Coastguard Worker endforeach() 1262*663afb9bSAndroid Build Coastguard Worker 1263*663afb9bSAndroid Build Coastguard Worker # Dump events test. 1264*663afb9bSAndroid Build Coastguard Worker if (__FOUND_USABLE_PYTHON) 1265*663afb9bSAndroid Build Coastguard Worker set(TEST_NAME test-dumpevents__${BACKEND_TEST_NAME}) 1266*663afb9bSAndroid Build Coastguard Worker 1267*663afb9bSAndroid Build Coastguard Worker add_test(${TEST_NAME} 1268*663afb9bSAndroid Build Coastguard Worker ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-dumpevents | 1269*663afb9bSAndroid Build Coastguard Worker ${PYTHON_EXECUTABLE} 1270*663afb9bSAndroid Build Coastguard Worker ${CMAKE_CURRENT_SOURCE_DIR}/test/check-dumpevents.py) 1271*663afb9bSAndroid Build Coastguard Worker 1272*663afb9bSAndroid Build Coastguard Worker set_tests_properties(${TEST_NAME} 1273*663afb9bSAndroid Build Coastguard Worker PROPERTIES ENVIRONMENT "${ENV_VARS}") 1274*663afb9bSAndroid Build Coastguard Worker else() 1275*663afb9bSAndroid Build Coastguard Worker message(WARNING "test-dumpevents will be run without output check since python was not found!") 1276*663afb9bSAndroid Build Coastguard Worker set(TEST_NAME test-dumpevents__${BACKEND_TEST_NAME}_no_check) 1277*663afb9bSAndroid Build Coastguard Worker 1278*663afb9bSAndroid Build Coastguard Worker add_test(${TEST_NAME} 1279*663afb9bSAndroid Build Coastguard Worker ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-dumpevents) 1280*663afb9bSAndroid Build Coastguard Worker 1281*663afb9bSAndroid Build Coastguard Worker set_tests_properties(${TEST_NAME} 1282*663afb9bSAndroid Build Coastguard Worker PROPERTIES ENVIRONMENT "${ENV_VARS}") 1283*663afb9bSAndroid Build Coastguard Worker endif() 1284*663afb9bSAndroid Build Coastguard Worker 1285*663afb9bSAndroid Build Coastguard Worker # Regress tests. 1286*663afb9bSAndroid Build Coastguard Worker if (NOT EVENT__DISABLE_REGRESS AND __FOUND_USABLE_PYTHON) 1287*663afb9bSAndroid Build Coastguard Worker set(TEST_NAME regress__${BACKEND_TEST_NAME}) 1288*663afb9bSAndroid Build Coastguard Worker 1289*663afb9bSAndroid Build Coastguard Worker add_test(${TEST_NAME} 1290*663afb9bSAndroid Build Coastguard Worker ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/regress --quiet) 1291*663afb9bSAndroid Build Coastguard Worker 1292*663afb9bSAndroid Build Coastguard Worker set_tests_properties(${TEST_NAME} 1293*663afb9bSAndroid Build Coastguard Worker PROPERTIES ENVIRONMENT "${ENV_VARS}") 1294*663afb9bSAndroid Build Coastguard Worker 1295*663afb9bSAndroid Build Coastguard Worker add_test(${TEST_NAME}_debug 1296*663afb9bSAndroid Build Coastguard Worker ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/regress --quiet) 1297*663afb9bSAndroid Build Coastguard Worker 1298*663afb9bSAndroid Build Coastguard Worker set_tests_properties(${TEST_NAME}_debug 1299*663afb9bSAndroid Build Coastguard Worker PROPERTIES ENVIRONMENT "${ENV_VARS};EVENT_DEBUG_MODE=1") 1300*663afb9bSAndroid Build Coastguard Worker endif() 1301*663afb9bSAndroid Build Coastguard Worker endmacro() 1302*663afb9bSAndroid Build Coastguard Worker 1303*663afb9bSAndroid Build Coastguard Worker # Add the tests for each backend. 1304*663afb9bSAndroid Build Coastguard Worker foreach(BACKEND ${BACKENDS}) 1305*663afb9bSAndroid Build Coastguard Worker # Enable this backend only. 1306*663afb9bSAndroid Build Coastguard Worker set(BACKEND_ENV_VARS ${DEFAULT_TEST_ENV_VARS}) 1307*663afb9bSAndroid Build Coastguard Worker list(REMOVE_ITEM BACKEND_ENV_VARS EVENT_NO${BACKEND}=1) 1308*663afb9bSAndroid Build Coastguard Worker 1309*663afb9bSAndroid Build Coastguard Worker # Epoll has some extra settings. 1310*663afb9bSAndroid Build Coastguard Worker if (${BACKEND} STREQUAL "EPOLL") 1311*663afb9bSAndroid Build Coastguard Worker add_backend_test(timerfd_${BACKEND} 1312*663afb9bSAndroid Build Coastguard Worker "${BACKEND_ENV_VARS};EVENT_PRECISE_TIMER=1") 1313*663afb9bSAndroid Build Coastguard Worker 1314*663afb9bSAndroid Build Coastguard Worker add_backend_test(changelist_${BACKEND} 1315*663afb9bSAndroid Build Coastguard Worker "${BACKEND_ENV_VARS};EVENT_EPOLL_USE_CHANGELIST=yes") 1316*663afb9bSAndroid Build Coastguard Worker 1317*663afb9bSAndroid Build Coastguard Worker add_backend_test(timerfd_changelist_${BACKEND} 1318*663afb9bSAndroid Build Coastguard Worker "${BACKEND_ENV_VARS};EVENT_EPOLL_USE_CHANGELIST=yes;EVENT_PRECISE_TIMER=1") 1319*663afb9bSAndroid Build Coastguard Worker else() 1320*663afb9bSAndroid Build Coastguard Worker add_backend_test(${BACKEND} "${BACKEND_ENV_VARS}") 1321*663afb9bSAndroid Build Coastguard Worker endif() 1322*663afb9bSAndroid Build Coastguard Worker endforeach() 1323*663afb9bSAndroid Build Coastguard Worker 1324*663afb9bSAndroid Build Coastguard Worker # 1325*663afb9bSAndroid Build Coastguard Worker # Rate limiter tests. 1326*663afb9bSAndroid Build Coastguard Worker # 1327*663afb9bSAndroid Build Coastguard Worker 1328*663afb9bSAndroid Build Coastguard Worker # Group limits, no connection limit. 1329*663afb9bSAndroid Build Coastguard Worker set(RL_BIN ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test-ratelim) 1330*663afb9bSAndroid Build Coastguard Worker 1331*663afb9bSAndroid Build Coastguard Worker add_test(test-ratelim__group_lim 1332*663afb9bSAndroid Build Coastguard Worker ${RL_BIN} 1333*663afb9bSAndroid Build Coastguard Worker -g 30000 1334*663afb9bSAndroid Build Coastguard Worker -n 30 1335*663afb9bSAndroid Build Coastguard Worker -t 100 1336*663afb9bSAndroid Build Coastguard Worker --check-grouplimit 1000 1337*663afb9bSAndroid Build Coastguard Worker --check-stddev 100) 1338*663afb9bSAndroid Build Coastguard Worker 1339*663afb9bSAndroid Build Coastguard Worker # Connection limit, no group limit. 1340*663afb9bSAndroid Build Coastguard Worker add_test(test-ratelim__con_lim 1341*663afb9bSAndroid Build Coastguard Worker ${RL_BIN} 1342*663afb9bSAndroid Build Coastguard Worker -c 1000 1343*663afb9bSAndroid Build Coastguard Worker -n 30 1344*663afb9bSAndroid Build Coastguard Worker -t 100 1345*663afb9bSAndroid Build Coastguard Worker --check-connlimit 50 1346*663afb9bSAndroid Build Coastguard Worker --check-stddev 50) 1347*663afb9bSAndroid Build Coastguard Worker 1348*663afb9bSAndroid Build Coastguard Worker # Connection limit and group limit. 1349*663afb9bSAndroid Build Coastguard Worker add_test(test-ratelim__group_con_lim 1350*663afb9bSAndroid Build Coastguard Worker ${RL_BIN} 1351*663afb9bSAndroid Build Coastguard Worker -c 1000 1352*663afb9bSAndroid Build Coastguard Worker -g 30000 1353*663afb9bSAndroid Build Coastguard Worker -n 30 1354*663afb9bSAndroid Build Coastguard Worker -t 100 1355*663afb9bSAndroid Build Coastguard Worker --check-grouplimit 1000 1356*663afb9bSAndroid Build Coastguard Worker --check-connlimit 50 1357*663afb9bSAndroid Build Coastguard Worker --check-stddev 50) 1358*663afb9bSAndroid Build Coastguard Worker 1359*663afb9bSAndroid Build Coastguard Worker # Connection limit and group limit with independent drain. 1360*663afb9bSAndroid Build Coastguard Worker add_test(test-ratelim__group_con_lim_drain 1361*663afb9bSAndroid Build Coastguard Worker ${RL_BIN} 1362*663afb9bSAndroid Build Coastguard Worker -c 1000 1363*663afb9bSAndroid Build Coastguard Worker -g 35000 1364*663afb9bSAndroid Build Coastguard Worker -n 30 1365*663afb9bSAndroid Build Coastguard Worker -t 100 1366*663afb9bSAndroid Build Coastguard Worker -G 500 1367*663afb9bSAndroid Build Coastguard Worker --check-grouplimit 1000 1368*663afb9bSAndroid Build Coastguard Worker --check-connlimit 50 1369*663afb9bSAndroid Build Coastguard Worker --check-stddev 50) 1370*663afb9bSAndroid Build Coastguard Worker 1371*663afb9bSAndroid Build Coastguard Worker # Add a "make verify" target, same as for autoconf. 1372*663afb9bSAndroid Build Coastguard Worker # (Important! This will unset all EVENT_NO* environment variables. 1373*663afb9bSAndroid Build Coastguard Worker # If they are set in the shell the tests are running using simply "ctest" or "make test" will fail) 1374*663afb9bSAndroid Build Coastguard Worker if (WIN32) 1375*663afb9bSAndroid Build Coastguard Worker # Windows doesn't have "unset". But you can use "set VAR=" instead. 1376*663afb9bSAndroid Build Coastguard Worker # We need to guard against the possibility taht EVENT_NOWIN32 is set, and all test failing 1377*663afb9bSAndroid Build Coastguard Worker # since no event backend being available. 1378*663afb9bSAndroid Build Coastguard Worker file(TO_NATIVE_PATH ${CMAKE_CTEST_COMMAND} WINDOWS_CTEST_COMMAND) 1379*663afb9bSAndroid Build Coastguard Worker 1380*663afb9bSAndroid Build Coastguard Worker file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/tmp/verify_tests.bat 1381*663afb9bSAndroid Build Coastguard Worker " 1382*663afb9bSAndroid Build Coastguard Worker set EVENT_NOWIN32= 1383*663afb9bSAndroid Build Coastguard Worker \"${WINDOWS_CTEST_COMMAND}\" 1384*663afb9bSAndroid Build Coastguard Worker ") 1385*663afb9bSAndroid Build Coastguard Worker 1386*663afb9bSAndroid Build Coastguard Worker message(STATUS "${WINDOWS_CTEST_COMMAND}") 1387*663afb9bSAndroid Build Coastguard Worker 1388*663afb9bSAndroid Build Coastguard Worker file(COPY ${CMAKE_CURRENT_BINARY_DIR}/tmp/verify_tests.bat 1389*663afb9bSAndroid Build Coastguard Worker DESTINATION ${CMAKE_CURRENT_BINARY_DIR} 1390*663afb9bSAndroid Build Coastguard Worker FILE_PERMISSIONS 1391*663afb9bSAndroid Build Coastguard Worker OWNER_READ 1392*663afb9bSAndroid Build Coastguard Worker OWNER_WRITE 1393*663afb9bSAndroid Build Coastguard Worker OWNER_EXECUTE 1394*663afb9bSAndroid Build Coastguard Worker GROUP_READ 1395*663afb9bSAndroid Build Coastguard Worker GROUP_EXECUTE 1396*663afb9bSAndroid Build Coastguard Worker WORLD_READ WORLD_EXECUTE) 1397*663afb9bSAndroid Build Coastguard Worker 1398*663afb9bSAndroid Build Coastguard Worker file(TO_NATIVE_PATH 1399*663afb9bSAndroid Build Coastguard Worker "${CMAKE_CURRENT_BINARY_DIR}/verify_tests.bat" VERIFY_PATH) 1400*663afb9bSAndroid Build Coastguard Worker 1401*663afb9bSAndroid Build Coastguard Worker add_custom_target(verify COMMAND "${VERIFY_PATH}" 1402*663afb9bSAndroid Build Coastguard Worker DEPENDS event ${ALL_TESTPROGS}) 1403*663afb9bSAndroid Build Coastguard Worker else() 1404*663afb9bSAndroid Build Coastguard Worker # On some platforms doing exec(unset) as CMake does won't work, so make sure 1405*663afb9bSAndroid Build Coastguard Worker # we run the unset command in a shell instead. 1406*663afb9bSAndroid Build Coastguard Worker # First we write the script contents. 1407*663afb9bSAndroid Build Coastguard Worker file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/tmp/verify_tests.sh 1408*663afb9bSAndroid Build Coastguard Worker " 1409*663afb9bSAndroid Build Coastguard Worker #!/bin/bash 1410*663afb9bSAndroid Build Coastguard Worker unset EVENT_NOEPOLL; unset EVENT_NOPOLL; unset EVENT_NOSELECT; unset EVENT_NOWIN32; unset EVENT_NOEVPORT; unset EVENT_NOKQUEUE; unset EVENT_NODEVPOLL 1411*663afb9bSAndroid Build Coastguard Worker ${CMAKE_CTEST_COMMAND} 1412*663afb9bSAndroid Build Coastguard Worker ") 1413*663afb9bSAndroid Build Coastguard Worker 1414*663afb9bSAndroid Build Coastguard Worker # Then we copy the file (this allows us to set execute permission on it) 1415*663afb9bSAndroid Build Coastguard Worker file(COPY ${CMAKE_CURRENT_BINARY_DIR}/tmp/verify_tests.sh 1416*663afb9bSAndroid Build Coastguard Worker DESTINATION ${CMAKE_CURRENT_BINARY_DIR} 1417*663afb9bSAndroid Build Coastguard Worker FILE_PERMISSIONS 1418*663afb9bSAndroid Build Coastguard Worker OWNER_READ 1419*663afb9bSAndroid Build Coastguard Worker OWNER_WRITE 1420*663afb9bSAndroid Build Coastguard Worker OWNER_EXECUTE 1421*663afb9bSAndroid Build Coastguard Worker GROUP_READ 1422*663afb9bSAndroid Build Coastguard Worker GROUP_EXECUTE 1423*663afb9bSAndroid Build Coastguard Worker WORLD_READ 1424*663afb9bSAndroid Build Coastguard Worker WORLD_EXECUTE) 1425*663afb9bSAndroid Build Coastguard Worker 1426*663afb9bSAndroid Build Coastguard Worker # Create the target that runs the script. 1427*663afb9bSAndroid Build Coastguard Worker add_custom_target(verify 1428*663afb9bSAndroid Build Coastguard Worker COMMAND ${CMAKE_CURRENT_BINARY_DIR}/verify_tests.sh 1429*663afb9bSAndroid Build Coastguard Worker DEPENDS event ${ALL_TESTPROGS}) 1430*663afb9bSAndroid Build Coastguard Worker endif() 1431*663afb9bSAndroid Build Coastguard Worker 1432*663afb9bSAndroid Build Coastguard Worker if (NOT EVENT__DISABLE_REGRESS AND __FOUND_USABLE_PYTHON) 1433*663afb9bSAndroid Build Coastguard Worker add_dependencies(verify regress) 1434*663afb9bSAndroid Build Coastguard Worker endif() 1435*663afb9bSAndroid Build Coastguard Worker 1436*663afb9bSAndroid Build Coastguard Worker if (EVENT__COVERAGE) 1437*663afb9bSAndroid Build Coastguard Worker include(CodeCoverage) 1438*663afb9bSAndroid Build Coastguard Worker 1439*663afb9bSAndroid Build Coastguard Worker setup_target_for_coverage( 1440*663afb9bSAndroid Build Coastguard Worker verify_coverage # Coverage target name "make verify_coverage" 1441*663afb9bSAndroid Build Coastguard Worker make # Test runner. 1442*663afb9bSAndroid Build Coastguard Worker coverage # Output directory. 1443*663afb9bSAndroid Build Coastguard Worker verify) # Arguments passed to test runner. "make verify" 1444*663afb9bSAndroid Build Coastguard Worker endif() 1445*663afb9bSAndroid Build Coastguard Worker 1446*663afb9bSAndroid Build Coastguard Worker enable_testing() 1447*663afb9bSAndroid Build Coastguard Worker 1448*663afb9bSAndroid Build Coastguard Worker include(CTest) 1449*663afb9bSAndroid Build Coastguard Workerendif() 1450*663afb9bSAndroid Build Coastguard Worker 1451*663afb9bSAndroid Build Coastguard Worker# 1452*663afb9bSAndroid Build Coastguard Worker# Installation preparation. 1453*663afb9bSAndroid Build Coastguard Worker# 1454*663afb9bSAndroid Build Coastguard Worker 1455*663afb9bSAndroid Build Coastguard Workerset(EVENT_INSTALL_CMAKE_DIR 1456*663afb9bSAndroid Build Coastguard Worker "${CMAKE_INSTALL_PREFIX}/lib/cmake/libevent") 1457*663afb9bSAndroid Build Coastguard Worker 1458*663afb9bSAndroid Build Coastguard Workerexport(PACKAGE libevent) 1459*663afb9bSAndroid Build Coastguard Worker 1460*663afb9bSAndroid Build Coastguard Workerfunction(gen_package_config forinstall) 1461*663afb9bSAndroid Build Coastguard Worker if(${forinstall}) 1462*663afb9bSAndroid Build Coastguard Worker set(CONFIG_FOR_INSTALL_TREE 1) 1463*663afb9bSAndroid Build Coastguard Worker set(dir "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}") 1464*663afb9bSAndroid Build Coastguard Worker else() 1465*663afb9bSAndroid Build Coastguard Worker set(CONFIG_FOR_INSTALL_TREE 0) 1466*663afb9bSAndroid Build Coastguard Worker set(dir "${PROJECT_BINARY_DIR}") 1467*663afb9bSAndroid Build Coastguard Worker endif() 1468*663afb9bSAndroid Build Coastguard Worker configure_file(${PROJECT_SOURCE_DIR}/cmake/LibeventConfig.cmake.in 1469*663afb9bSAndroid Build Coastguard Worker "${dir}/LibeventConfig.cmake" 1470*663afb9bSAndroid Build Coastguard Worker @ONLY) 1471*663afb9bSAndroid Build Coastguard Workerendfunction() 1472*663afb9bSAndroid Build Coastguard Worker 1473*663afb9bSAndroid Build Coastguard Worker# Generate the config file for the build-tree. 1474*663afb9bSAndroid Build Coastguard Workerset(EVENT__INCLUDE_DIRS 1475*663afb9bSAndroid Build Coastguard Worker "${PROJECT_SOURCE_DIR}/include" 1476*663afb9bSAndroid Build Coastguard Worker "${PROJECT_BINARY_DIR}/include") 1477*663afb9bSAndroid Build Coastguard Worker 1478*663afb9bSAndroid Build Coastguard Workerset(LIBEVENT_INCLUDE_DIRS 1479*663afb9bSAndroid Build Coastguard Worker ${EVENT__INCLUDE_DIRS} 1480*663afb9bSAndroid Build Coastguard Worker CACHE PATH "Libevent include directories") 1481*663afb9bSAndroid Build Coastguard Worker 1482*663afb9bSAndroid Build Coastguard Workergen_package_config(0) 1483*663afb9bSAndroid Build Coastguard Worker 1484*663afb9bSAndroid Build Coastguard Worker# Generate the config file for the installation tree. 1485*663afb9bSAndroid Build Coastguard Workergen_package_config(1) 1486*663afb9bSAndroid Build Coastguard Worker 1487*663afb9bSAndroid Build Coastguard Worker# Generate version info for both build-tree and install-tree. 1488*663afb9bSAndroid Build Coastguard Workerconfigure_file(${PROJECT_SOURCE_DIR}/cmake/LibeventConfigVersion.cmake.in 1489*663afb9bSAndroid Build Coastguard Worker ${PROJECT_BINARY_DIR}/LibeventConfigVersion.cmake 1490*663afb9bSAndroid Build Coastguard Worker @ONLY) 1491*663afb9bSAndroid Build Coastguard Worker 1492*663afb9bSAndroid Build Coastguard Worker# Install compat headers 1493*663afb9bSAndroid Build Coastguard Workerinstall(FILES ${HDR_COMPAT} 1494*663afb9bSAndroid Build Coastguard Worker DESTINATION "include" 1495*663afb9bSAndroid Build Coastguard Worker COMPONENT dev) 1496*663afb9bSAndroid Build Coastguard Worker 1497*663afb9bSAndroid Build Coastguard Worker# Install public headers 1498*663afb9bSAndroid Build Coastguard Workerinstall(FILES ${HDR_PUBLIC} 1499*663afb9bSAndroid Build Coastguard Worker DESTINATION "include/event2" 1500*663afb9bSAndroid Build Coastguard Worker COMPONENT dev) 1501*663afb9bSAndroid Build Coastguard Worker 1502*663afb9bSAndroid Build Coastguard Worker# Install the configs. 1503*663afb9bSAndroid Build Coastguard Workerinstall(FILES 1504*663afb9bSAndroid Build Coastguard Worker ${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/LibeventConfig.cmake 1505*663afb9bSAndroid Build Coastguard Worker ${PROJECT_BINARY_DIR}/LibeventConfigVersion.cmake 1506*663afb9bSAndroid Build Coastguard Worker DESTINATION "${EVENT_INSTALL_CMAKE_DIR}" 1507*663afb9bSAndroid Build Coastguard Worker COMPONENT dev) 1508*663afb9bSAndroid Build Coastguard Worker 1509*663afb9bSAndroid Build Coastguard Worker# Install exports for the install-tree. 1510*663afb9bSAndroid Build Coastguard Workermacro(install_export type) 1511*663afb9bSAndroid Build Coastguard Worker install(EXPORT LibeventTargets-${type} 1512*663afb9bSAndroid Build Coastguard Worker NAMESPACE ${PROJECT_NAME}:: 1513*663afb9bSAndroid Build Coastguard Worker DESTINATION "${EVENT_INSTALL_CMAKE_DIR}" 1514*663afb9bSAndroid Build Coastguard Worker COMPONENT dev) 1515*663afb9bSAndroid Build Coastguard Workerendmacro() 1516*663afb9bSAndroid Build Coastguard Worker 1517*663afb9bSAndroid Build Coastguard Workerif (${EVENT_LIBRARY_STATIC}) 1518*663afb9bSAndroid Build Coastguard Worker install_export(static) 1519*663afb9bSAndroid Build Coastguard Workerendif() 1520*663afb9bSAndroid Build Coastguard Workerif (${EVENT_LIBRARY_SHARED}) 1521*663afb9bSAndroid Build Coastguard Worker install_export(shared) 1522*663afb9bSAndroid Build Coastguard Workerendif() 1523*663afb9bSAndroid Build Coastguard Worker 1524*663afb9bSAndroid Build Coastguard Worker# Install the scripts. 1525*663afb9bSAndroid Build Coastguard Workerinstall(PROGRAMS 1526*663afb9bSAndroid Build Coastguard Worker ${CMAKE_CURRENT_SOURCE_DIR}/event_rpcgen.py 1527*663afb9bSAndroid Build Coastguard Worker DESTINATION "bin" 1528*663afb9bSAndroid Build Coastguard Worker COMPONENT runtime) 1529*663afb9bSAndroid Build Coastguard Worker 1530*663afb9bSAndroid Build Coastguard Worker# Create documents with doxygen. 1531*663afb9bSAndroid Build Coastguard Workeroption(EVENT__DOXYGEN 1532*663afb9bSAndroid Build Coastguard Worker "Enables doxygen documentation" OFF) 1533*663afb9bSAndroid Build Coastguard Workerif (EVENT__DOXYGEN) 1534*663afb9bSAndroid Build Coastguard Worker include(UseDoxygen) 1535*663afb9bSAndroid Build Coastguard Worker UseDoxygen() 1536*663afb9bSAndroid Build Coastguard Workerendif() 1537*663afb9bSAndroid Build Coastguard Worker 1538*663afb9bSAndroid Build Coastguard Worker 1539*663afb9bSAndroid Build Coastguard Workerif (NOT TARGET uninstall) 1540*663afb9bSAndroid Build Coastguard Worker # Create the uninstall target. 1541*663afb9bSAndroid Build Coastguard Worker # https://gitlab.kitware.com/cmake/community/wikis/FAQ#can-i-do-make-uninstall-with-cmake 1542*663afb9bSAndroid Build Coastguard Worker configure_file(${PROJECT_SOURCE_DIR}/cmake/Uninstall.cmake.in 1543*663afb9bSAndroid Build Coastguard Worker ${PROJECT_BINARY_DIR}/Uninstall.cmake 1544*663afb9bSAndroid Build Coastguard Worker @ONLY) 1545*663afb9bSAndroid Build Coastguard Worker 1546*663afb9bSAndroid Build Coastguard Worker add_custom_target(uninstall 1547*663afb9bSAndroid Build Coastguard Worker COMMAND ${CMAKE_COMMAND} -P ${PROJECT_BINARY_DIR}/Uninstall.cmake) 1548*663afb9bSAndroid Build Coastguard Workerendif() 1549*663afb9bSAndroid Build Coastguard Worker 1550*663afb9bSAndroid Build Coastguard Workermessage(STATUS "") 1551*663afb9bSAndroid Build Coastguard Workermessage(STATUS " ---( Libevent " ${EVENT_VERSION} " )---") 1552*663afb9bSAndroid Build Coastguard Workermessage(STATUS "") 1553*663afb9bSAndroid Build Coastguard Workermessage(STATUS "Available event backends: ${BACKENDS}") 1554*663afb9bSAndroid Build Coastguard Workermessage(STATUS "CMAKE_BINARY_DIR: ${CMAKE_BINARY_DIR}") 1555*663afb9bSAndroid Build Coastguard Workermessage(STATUS "CMAKE_CURRENT_BINARY_DIR: ${CMAKE_CURRENT_BINARY_DIR}") 1556*663afb9bSAndroid Build Coastguard Workermessage(STATUS "CMAKE_SOURCE_DIR: ${CMAKE_SOURCE_DIR}") 1557*663afb9bSAndroid Build Coastguard Workermessage(STATUS "CMAKE_CURRENT_SOURCE_DIR: ${CMAKE_CURRENT_SOURCE_DIR}") 1558*663afb9bSAndroid Build Coastguard Workermessage(STATUS "PROJECT_BINARY_DIR: ${PROJECT_BINARY_DIR}") 1559*663afb9bSAndroid Build Coastguard Workermessage(STATUS "PROJECT_SOURCE_DIR: ${PROJECT_SOURCE_DIR}") 1560*663afb9bSAndroid Build Coastguard Workermessage(STATUS "CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}") 1561*663afb9bSAndroid Build Coastguard Workermessage(STATUS "CMAKE_COMMAND: ${CMAKE_COMMAND}") 1562*663afb9bSAndroid Build Coastguard Workermessage(STATUS "CMAKE_ROOT: ${CMAKE_ROOT}") 1563*663afb9bSAndroid Build Coastguard Workermessage(STATUS "CMAKE_SYSTEM: ${CMAKE_SYSTEM}") 1564*663afb9bSAndroid Build Coastguard Workermessage(STATUS "CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}") 1565*663afb9bSAndroid Build Coastguard Workermessage(STATUS "CMAKE_SYSTEM_VERSION: ${CMAKE_SYSTEM_VERSION}") 1566*663afb9bSAndroid Build Coastguard Workermessage(STATUS "CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}") 1567*663afb9bSAndroid Build Coastguard Workermessage(STATUS "CMAKE_SKIP_RPATH: ${CMAKE_SKIP_RPATH}") 1568*663afb9bSAndroid Build Coastguard Workermessage(STATUS "CMAKE_VERBOSE_MAKEFILE: ${CMAKE_VERBOSE_MAKEFILE}") 1569*663afb9bSAndroid Build Coastguard Workermessage(STATUS "CMAKE_C_FLAGS: ${CMAKE_C_FLAGS}") 1570*663afb9bSAndroid Build Coastguard Workermessage(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") 1571*663afb9bSAndroid Build Coastguard Workermessage(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER} (id ${CMAKE_C_COMPILER_ID}, clang ${CLANG}, GNUC ${GNUC})") 1572*663afb9bSAndroid Build Coastguard Workermessage(STATUS "CMAKE_AR: ${CMAKE_AR}") 1573*663afb9bSAndroid Build Coastguard Workermessage(STATUS "CMAKE_RANLIB: ${CMAKE_RANLIB}") 1574*663afb9bSAndroid Build Coastguard Workermessage(STATUS "") 1575*663afb9bSAndroid Build Coastguard Worker 1576