From 327bf14af964cd7ce7bd49d39e23fa07b8d238e3 Mon Sep 17 00:00:00 2001 From: Isaac Hier Date: Sun, 18 Mar 2018 08:02:31 -0400 Subject: [PATCH] Modernize CMake build --- CMakeLists.txt | 424 +++++++++++++++++++++------------------- cmake/Config.cmake.in | 9 + cmake/options.cmake | 16 +- cmake/version.cmake | 5 - examples/CMakeLists.txt | 25 ++- 5 files changed, 249 insertions(+), 230 deletions(-) create mode 100644 cmake/Config.cmake.in delete mode 100644 cmake/version.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 4a28c0e..6b6100d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,281 +1,293 @@ -cmake_minimum_required(VERSION 2.8) -project(libevhtp) +cmake_minimum_required(VERSION 3.1) -set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) +project(libevhtp VERSION 1.2.16) -include (version) -include (colors) -include (options) -include (CheckFunctionExists) -include (CheckIncludeFiles) -include (CheckTypeSize) -include (CheckCCompilerFlag) -include (TestBigEndian) +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) -add_definitions ("-DPROJECT_VERSION=${PROJECT_VERSION} -Wall") +include(colors) +include(options) +include(CheckFunctionExists) +include(CheckIncludeFiles) +include(CheckTypeSize) +include(CheckCCompilerFlag) +include(TestBigEndian) -set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -ggdb3") -SET(CMAKE_BUILD_TYPE Release CACHE STRING "default to Release") +check_function_exists(strndup HAVE_STRNDUP) +check_function_exists(strnlen HAVE_STRNLEN) -CHECK_FUNCTION_EXISTS(strndup HAVE_STRNDUP) -CHECK_FUNCTION_EXISTS(strnlen HAVE_STRNLEN) +check_include_files(stdlib.h HAVE_STDLIB_H) +check_include_files(string.h HAVE_STRING_H) +check_include_files(stdint.h HAVE_STDINT_H) +check_include_files(errno.h HAVE_ERRNO_H) +check_include_files(strings.h HAVE_STRINGS_H) +check_include_files(inttypes.h HAVE_INTTYPES_H) +check_include_files(limits.h HAVE_LIMITS_H) -if (EVHTP_THR_SHARED_PIPE) - add_definitions(-DEVTHR_SHARED_PIPE) -endif() - -check_include_files (stdlib.h HAVE_STDLIB_H) -check_include_files (string.h HAVE_STRING_H) -check_include_files (stdint.h HAVE_STDINT_H) -check_include_files (errno.h HAVE_ERRNO_H) -check_include_files (strings.h HAVE_STRINGS_H) -check_include_files (inttypes.h HAVE_INTTYPES_H) -check_include_files (limits.h HAVE_LIMITS_H) - -check_include_files (unistd.h HAVE_UNISTD_H) -check_include_files (stdarg.h HAVE_STDARG_PROTOTYPES) -check_include_files (sys/tree.h HAVE_SYS_TREE) -check_include_files (sys/queue.h HAVE_SYS_QUEUE) -check_include_files (sys/un.h HAVE_SYS_UN) +check_include_files(unistd.h HAVE_UNISTD_H) +check_include_files(stdarg.h HAVE_STDARG_PROTOTYPES) +check_include_files(sys/tree.h HAVE_SYS_TREE) +check_include_files(sys/queue.h HAVE_SYS_QUEUE) +check_include_files(sys/un.h HAVE_SYS_UN) -CHECK_TYPE_SIZE("int" SIZEOF_INT) -CHECK_TYPE_SIZE("long" SIZEOF_LONG) -CHECK_TYPE_SIZE("short" SIZEOF_SHORT) +check_type_size("int" SIZEOF_INT) +check_type_size("long" SIZEOF_LONG) +check_type_size("short" SIZEOF_SHORT) -TEST_BIG_ENDIAN(HOST_BIG_ENDIAN) +test_big_endian(HOST_BIG_ENDIAN) -check_c_compiler_flag(-fvisibility=hidden EVHTP_HAS_VISIBILITY_HIDDEN) -check_c_compiler_flag(-std=c99 EVHTP_HAS_C99) -check_c_compiler_flag(-fsanitize=address EVHTP_HAS_SANITIZE_ADDRESS) -check_c_compiler_flag(-fsanitize=leak EVHTP_HAS_SANITIZE_LEAK) +check_c_compiler_flag(-std=c99 has_c99) # NOTE in as of ubuntu 14, this is enabled by default, so if you see it fail # the check, don't freak out. -check_c_compiler_flag(-fstack-protector-strong EVHTP_HAS_STACK_PROTECTOR) +check_c_compiler_flag(-fstack-protector-strong has_stack_protector) -if (EVHTP_HAS_SANITIZE_ADDRESS) - set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fsanitize=address") -endif() +set(LIBEVHTP_SOURCE_FILES + evhtp.c + numtoa.c + parser.c) -if (EVHTP_HAS_SANITIZE_LEAK) - set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fsanitize=leak") -endif() +find_package(libevent REQUIRED) +list(APPEND LIBEVHTP_EXTERNAL_LIBS libevent::event_core libevent::event_extra) +list(APPEND package_deps libevent) +set(public_headers + "include/evhtp.h" + "include/evhtp/evhtp.h" + "include/evhtp/parser.h") -if (EVHTP_HAS_STACK_PROTECTOR) - set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fstack-protector-strong") +if(NOT EVHTP_DISABLE_SSL) + find_package(OpenSSL) + if(OPENSSL_FOUND) + list(APPEND LIBEVHTP_SOURCE_FILES sslutils.c) + list(APPEND LIBEVHTP_EXTERNAL_LIBS openssl::ssl) + list(APPEND package_deps OpenSSL) + list(APPEND public_headers "include/evhtp/sslutils.h") + endif() endif() -if (EVHTP_HAS_C99) - add_definitions(-DEVHTP_HAS_C99) +if(NOT EVHTP_DISABLE_EVTHR) + find_package(Threads) + if(CMAKE_THREAD_LIBS_INIT) + list(APPEND LIBEVHTP_SOURCE_FILES thread.c) + list(APPEND LIBEVHTP_EXTERNAL_LIBS Threads::Threads) + list(APPEND package_deps Threads) + list(APPEND public_headers "include/evhtp/thread.h") + endif() endif() -if (EVHTP_HAS_VISIBILITY_HIDDEN) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden") +if(NOT EVHTP_DISABLE_REGEX) + find_package(Oniguruma) + if(ONIGURUMA_FOUND) + list(APPEND LIBEVHTP_EXTERNAL_LIBS ${ONIGURUMA_LIBRARIES}) + list(APPEND package_deps Oniguruma) + else() + message(STATUS "${BoldRed}${CMAKE_BUILD_TYPE}ONIGURUMA NOT FOUND, DISABLING REGEX SUPPORT${ColourReset}") + set(EVHTP_DISABLE_REGEX ON) + endif() endif() -if (NOT HAVE_SYS_TREE) - configure_file ( - ${PROJECT_SOURCE_DIR}/compat/sys/tree.h.in - ${PROJECT_BINARY_DIR}/compat/sys/tree.h) - - include_directories(${PROJECT_BINARY_DIR}/compat) +if(EVHTP_ALLOCATOR STREQUAL "jemalloc") + find_package(jemalloc) + if(JEMALLOC_FOUND) + list(APPEND LIBEVHTP_EXTERNAL_LIBS jemalloc) + list(APPEND package_deps jemalloc) + endif() +elseif(EVHTP_ALLOCATOR STREQUAL "tcmalloc") + find_package(tcmalloc) + if(TCMALLOC_FOUND) + list(APPEND LIBEVHTP_EXTERNAL_LIBS tcmalloc) + list(APPEND package_deps tcmalloc) + endif() endif() -if (NOT HAVE_SYS_QUEUE) - configure_file ( - ${PROJECT_SOURCE_DIR}/compat/sys/queue.h.in - ${PROJECT_BINARY_DIR}/compat/sys/queue.h) +add_library(evhtp ${LIBEVHTP_SOURCE_FILES}) +target_link_libraries(evhtp PUBLIC ${LIBEVHTP_EXTERNAL_LIBS}) - include_directories(${PROJECT_BINARY_DIR}/compat) +target_compile_definitions(evhtp PUBLIC "-DPROJECT_VERSION=${PROJECT_VERSION}") +if(has_stack_protector) + target_compile_options(evhtp PUBLIC -fstack-protector-strong) endif() -if (NOT HAVE_STRNDUP) - add_definitions(-DNO_STRNDUP) +if(EVHTP_THR_SHARED_PIPE) + target_compile_definitions(evhtp PUBLIC -DEVTHR_SHARED_PIPE) endif() -if (NOT HAVE_STRNLEN) - add_definitions(-DNO_STRNLEN) +if(has_c99) + target_compile_definitions(evhtp PUBLIC -DEVHTP_HAS_C99) endif() -if (NOT HAVE_SYS_UN) - add_definitions(-DNO_SYS_UN) -endif(NOT HAVE_SYS_UN) - -if (HOST_BIG_ENDIAN) - add_definitions(-DHOST_BIG_ENDIAN) +if(NOT HAVE_SYS_TREE) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/compat/sys/tree.h.in + ${CMAKE_CURRENT_BINARY_DIR}/compat/sys/tree.h) + list(APPEND compat_headers "${CMAKE_CURRENT_BINARY_DIR}/compat/sys/tree.h") endif() -# Test 32/64 bits -if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") - add_definitions(-DEVHTP_SYS_ARCH=64) -elseif("${CMAKE_SIZEOF_VOID_P}" EQUAL "4") - add_definitions(-DEVHTP_SYS_ARCH=32) -else() - message(ERROR "Unable to determine architecture") +if(NOT HAVE_SYS_QUEUE) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/compat/sys/queue.h.in + ${CMAKE_CURRENT_BINARY_DIR}/compat/sys/queue.h) + list(APPEND compat_headers "${CMAKE_CURRENT_BINARY_DIR}/compat/sys/queue.h") endif() -if (EVHTP_USE_DEFER_ACCEPT) - add_definitions(-DUSE_DEFER_ACCEPT) -endif(EVHTP_USE_DEFER_ACCEPT) - -set (CMAKE_INCLUDE_CURRENT_DIR ON) - -find_package(LibEvent REQUIRED) - -if (NOT EVHTP_DISABLE_REGEX) - find_package(Oniguruma) +if(NOT HAVE_SYS_TREE OR NOT HAVE_SYS_QUEUE) + target_include_directories(${CMAKE_CURRENT_BINARY_DIR}/compat) +endif() - if (NOT ONIGURUMA_FOUND) - message(STATUS "${BoldRed}${CMAKE_BUILD_TYPE}ONIGURUMA NOT FOUND, DISABLING REGEX SUPPORT${ColourReset}") - set(EVHTP_DISABLE_REGEX ON) - endif() +if(NOT HAVE_STRNDUP) + target_compile_definitions(evhtp PUBLIC -DNO_STRNDUP) endif() -if (NOT EVHTP_DISABLE_SSL) - find_package(OpenSSL) +if(NOT HAVE_STRNLEN) + target_compile_definitions(evhtp PUBLIC -DNO_STRNLEN) endif() -if (OPENSSL_FOUND) - if (APPLE) - # darwin based hosts have deprecated normal openssl functions, which is - # annoying to see warnings, for now, just ignore them. - add_definitions(-Wno-deprecated-declarations) - endif() +if(NOT HAVE_SYS_UN) + target_compile_definitions(evhtp PUBLIC -DNO_SYS_UN) endif() +if(HOST_BIG_ENDIAN) + target_compile_definitions(evhtp PUBLIC -DHOST_BIG_ENDIAN) +endif() -if (EVHTP_USE_JEMALLOC) - set(LIBEVHTP_EXTERNAL_LIBS ${LIBEVHTP_EXTERNAL_LIBS} jemalloc) +# Test 32/64 bits +if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + target_compile_definitions(evhtp PUBLIC -DEVHTP_SYS_ARCH=64) +elseif("${CMAKE_SIZEOF_VOID_P}" EQUAL "4") + target_compile_definitions(evhtp PUBLIC -DEVHTP_SYS_ARCH=32) +else() + message(ERROR "Unable to determine architecture") endif() -if (EVHTP_USE_TCMALLOC) - set(LIBEVHTP_EXTERNAL_LIBS ${LIBEVHTP_EXTERNAL_LIBS} tcmalloc) +if(EVHTP_USE_DEFER_ACCEPT) + target_compile_definitions(evhtp PUBLIC -DUSE_DEFER_ACCEPT) endif() -if (WIN32) - add_definitions (-DWIN32 -march=i486) - find_library (LIB_WS32 ws2_32) - set (SYS_LIBS ${SYS_LIBS} ${LIB_WS32}) -endif () +if(OPENSSL_FOUND and APPLE) + # Darwin based hosts have deprecated normal openssl functions, which is + # annoying to see warnings, for now, just ignore them. + target_compile_options(evhtp PUBLIC -Wno-deprecated-declarations) +endif() -if (EVHTP_BUILD_SHARED) - set (EVHTP_LIBTYPE SHARED) -else() - set (EVHTP_LIBTYPE STATIC) +if(WIN32) + target_compile_definitions(evhtp PUBLIC -DWIN32) + target_compile_options(evhtp PUBLIC -march=i486) + find_library(LIB_WS32 ws2_32) + list(APPEND SYS_LIBS ${LIB_WS32}) endif() configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/include/evhtp/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/evhtp/config.h) +list(APPEND public_headers "${CMAKE_CURRENT_BINARY_DIR}/include/evhtp/config.h") -include_directories( - ${PROJECT_BINARY_DIR}/include - ${PROJECT_SOURCE_DIR}/include - ${OPENSSL_INCLUDE_DIRS} - ${ONIGURUMA_INCLUDE_DIRS} - ${LIBEVENT_INCLUDE_DIRS} - -) -set(LIBEVHTP_EXTERNAL_LIBS - ${LIBEVENT_LIBRARIES} - ${ONIGURUMA_LIBRARIES} - ${OPENSSL_LIBRARIES} +target_include_directories(evhtp PUBLIC + $ + $ ) -set (LIBEVHTP_SOURCE_FILES - evhtp.c - numtoa.c - parser.c) - -if (NOT EVHTP_DISABLE_SSL) - list (APPEND LIBEVHTP_SOURCE_FILES sslutils.c) +if(BUILD_SHARED_LIBS) + set_target_properties(evhtp PROPERTIES + VERSION "${PROJECT_VERSION}" + SOVERSION 0 + OUTPUT_NAME "evhtp" + C_VISIBILITY_PRESET hidden) endif() -if (NOT EVHTP_DISABLE_EVTHR) - list (APPEND LIBEVHTP_SOURCE_FILES thread.c) - list (APPEND LIBEVHTP_EXTERNAL_LIBS pthread) -endif() +add_subdirectory(examples) -add_library (evhtp ${EVHTP_LIBTYPE} ${LIBEVHTP_SOURCE_FILES}) -target_link_libraries (evhtp ${LIBEVHTP_EXTERNAL_LIBS}) +# Installation (https://github.com/forexample/package-example) -if (EVHTP_BUILD_SHARED) - set_target_properties(evhtp PROPERTIES VERSION "${PROJECT_VERSION}" SOVERSION 0 OUTPUT_NAME "evhtp") -endif() +# Layout. This works for all platforms: +# * /lib/cmake/ +# * /lib/ +# * /include/ +set(config_install_dir "lib/cmake/${PROJECT_NAME}") +set(include_install_dir "include") -add_subdirectory(examples) +set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated") -if (NOT LIB_INSTALL_DIR) - set (LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib") -endif (NOT LIB_INSTALL_DIR) +# Configuration +set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake") +set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake") +set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets") +set(namespace "${PROJECT_NAME}::") -if(NOT INCLUDE_INSTALL_DIR) - set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include) -endif() +# Include module with fuction 'write_basic_package_version_file' +include(CMakePackageConfigHelpers) -install (TARGETS evhtp DESTINATION ${LIB_INSTALL_DIR}) - -install ( - FILES - ${PROJECT_SOURCE_DIR}/include/evhtp/evhtp.h - ${PROJECT_SOURCE_DIR}/include/evhtp/parser.h - ${PROJECT_BINARY_DIR}/include/evhtp/config.h - DESTINATION - ${INCLUDE_INSTALL_DIR}/evhtp) - -install ( - FILES - ${PROJECT_SOURCE_DIR}/include/evhtp.h - DESTINATION - ${INCLUDE_INSTALL_DIR}) - -if (NOT EVHTP_DISABLE_SSL) - install ( - FILES - ${PROJECT_SOURCE_DIR}/include/evhtp/sslutils.h - DESTINATION - ${INCLUDE_INSTALL_DIR}/evhtp) -endif() +# Configure 'ConfigVersion.cmake' +# Use: +# * PROJECT_VERSION +write_basic_package_version_file( + "${version_config}" COMPATIBILITY SameMajorVersion +) -if (NOT EVHTP_DISABLE_EVTHR) - install ( - FILES - ${PROJECT_SOURCE_DIR}/include/evhtp/thread.h - DESTINATION - ${INCLUDE_INSTALL_DIR}/evhtp) -endif() +# Configure 'Config.cmake' +# Use variables: +# * TARGETS_EXPORT_NAME +# * PROJECT_NAME +configure_package_config_file( + "cmake/Config.cmake.in" + "${project_config}" + INSTALL_DESTINATION "${config_install_dir}" +) -if (NOT HAVE_SYS_QUEUE) - install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/compat/sys/queue.h - DESTINATION ${INCLUDE_INSTALL_DIR}/evhtp/sys) -endif() +# Targets: +# * /lib/libevhtp.a +# * header location after install: /include/evhtp.h +# * headers can be included by C code `#include ` +install( + TARGETS evhtp + EXPORT "${TARGETS_EXPORT_NAME}" + LIBRARY DESTINATION "lib" + ARCHIVE DESTINATION "lib" + RUNTIME DESTINATION "bin" + INCLUDES DESTINATION "${include_install_dir}" +) + +# Headers: +# * include/evhtp.h -> /include/evhtp.h +install( + FILES "include/evhtp.h" + DESTINATION "${include_install_dir}/evhtp" +) + +# Headers: +# * include/evhtp/parser.h -> /include/evhtp/parser.h +install( + FILES ${public_headers} + DESTINATION "${include_install_dir}/evhtp" +) + +# Headers: +# * compat/sys/tree.h -> /include/evhtp/sys/tree.h +install( + FILES ${compat_headers} + DESTINATION "${include_install_dir}/evhtp/sys" +) -IF (WIN32) - install (FILES compat/sys/queue.h DESTINATION ${INCLUDE_INSTALL_DIR}/sys) -ENDIF (WIN32) +# Config +# * /lib/cmake/libevhtp/libevhtpConfig.cmake +# * /lib/cmake/libevhtp/libevhtpConfigVersion.cmake +install( + FILES "${project_config}" "${version_config}" + DESTINATION "${config_install_dir}" +) + +# Config +# * /lib/cmake/libevhtp/libevhtpTargets.cmake +install( + EXPORT "${TARGETS_EXPORT_NAME}" + NAMESPACE "${namespace}" + DESTINATION "${config_install_dir}" +) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/evhtp.pc.in ${CMAKE_CURRENT_BINARY_DIR}/evhtp.pc @ONLY) - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/evhtp.pc" DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig") -# add_definitions() calls do not show up in the C_FLAGS var -# it is instead a property of COMPILE_DEFINITIONS. -# -# so we fetch the property into the variable CDEFS, iterate over each entry, -# append it to a list, and finally replace ";" separators to -D to mimic a CFLAG - -get_property(CDEFS DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY COMPILE_DEFINITIONS) - -foreach(CDEF ${CDEFS}) - list(APPEND CFLAG_LIST ${CDEF}) -endforeach() - -string(REPLACE ";" " -D" CFLAG_DEFS "${CFLAG_LIST}") - message("") message(STATUS "${BoldBlue}EVHTP_VERSION${ColourReset} : ${BoldGreen} ${PROJECT_VERSION}${ColourReset}") message(STATUS "${BoldBlue}EVHTP_DISABLE_SSL${ColourReset} : ${BoldGreen} ${EVHTP_DISABLE_SSL}${ColourReset}") @@ -300,7 +312,7 @@ message(STATUS "${Blue}CMAKE_AR${ColourReset} : " ${CMAKE_AR}) message(STATUS "${Blue}CMAKE_RANLIB${ColourReset} : " ${CMAKE_RANLIB}) message(STATUS "${Blue}CFLAGS${ColourReset} : -D${CFLAG_DEFS} ${CMAKE_C_FLAGS}") -if (CMAKE_BUILD_TYPE MATCHES Debug) +if(CMAKE_BUILD_TYPE MATCHES Debug) message(" ${CMAKE_C_FLAGS_DEBUG}") else(CMAKE_BUILD_TYPE MATCHES Release) message(" ${CMAKE_C_FLAGS_RELEASE}") diff --git a/cmake/Config.cmake.in b/cmake/Config.cmake.in new file mode 100644 index 0000000..b834857 --- /dev/null +++ b/cmake/Config.cmake.in @@ -0,0 +1,9 @@ +@PACKAGE_INIT@ + +set(package_deps @package_deps@) +foreach(dep IN LISTS package_deps) + find_package(${dep} REQUIRED) +endforeach() + +include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake") +check_required_components("@PROJECT_NAME@") diff --git a/cmake/options.cmake b/cmake/options.cmake index c874461..f7d6f22 100644 --- a/cmake/options.cmake +++ b/cmake/options.cmake @@ -1,21 +1,19 @@ -# -DEVHTP_DISABLE_SSL:STRING=ON +# -DEVHTP_DISABLE_SSL=ON option (EVHTP_DISABLE_SSL "Disable ssl support" OFF) -# -DEVHTP_DISABLE_EVTHR:STRING=ON +# -DEVHTP_DISABLE_EVTHR=ON option (EVHTP_DISABLE_EVTHR "Disable evthread support" OFF) -# -DEVHTP_DISABLE_REGEX:STRING=ON +# -DEVHTP_DISABLE_REGEX=ON +find_package(Oniguruma) option (EVHTP_DISABLE_REGEX "Disable regex support" OFF) -# -DEVHTP_BUILD_SHARED:STRING=ON -option (EVHTP_BUILD_SHARED "Build shared library too" OFF) - -# -DEVHTP_DEBUG:STRING=ON +# -DEVHTP_DEBUG=ON option (EVHTP_DEBUG "Enable verbose debug logging" OFF) # can be overwritten by new set_alloc functions -option (EVHTP_USE_JEMALLOC "Enable jemalloc allocator" OFF) -option (EVHTP_USE_TCMALLOC "Enable tcmalloc allocator" OFF) +set(EVHTP_ALLOCATOR CACHE STRING "Allocator library") +set_property(CACHE EVHTP_ALLOCATOR PROPERTY STRINGS "jemalloc;tcmalloc") # disable ability to wrap memory functions option (EVHTP_DISABLE_MEMFUNCTIONS "Disable custom allocators" OFF) diff --git a/cmake/version.cmake b/cmake/version.cmake deleted file mode 100644 index 80ecbb2..0000000 --- a/cmake/version.cmake +++ /dev/null @@ -1,5 +0,0 @@ -set (PROJECT_MAJOR_VERSION 1) -set (PROJECT_MINOR_VERSION 2) -set (PROJECT_PATCH_VERSION 16) -set (PROJECT_VERSION - "${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}.${PROJECT_PATCH_VERSION}") diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index a022fc1..85a728d 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -11,8 +11,7 @@ add_executable(example_pause EXCLUDE_FROM_ALL example_pause.c) add_executable(example_chunked EXCLUDE_FROM_ALL example_chunked.c) add_executable(example_request_fini EXCLUDE_FROM_ALL example_request_fini.c) - -if (NOT EVHTP_DISABLE_EVTHR) +if(NOT EVHTP_DISABLE_EVTHR) add_executable(test_proxy EXCLUDE_FROM_ALL test_proxy.c) target_link_libraries(test_proxy evhtp ${LIBEVHTP_EXTERNAL_LIBS} ${SYS_LIBS}) add_dependencies(examples test_proxy) @@ -29,13 +28,13 @@ target_link_libraries(example_pause evhtp ${LIBEVHTP_EXTERNAL_LIBS} ${SYS_LIBS}) target_link_libraries(example_chunked evhtp ${LIBEVHTP_EXTERNAL_LIBS} ${SYS_LIBS}) target_link_libraries(example_request_fini evhtp ${LIBEVHTP_EXTERNAL_LIBS} ${SYS_LIBS}) -if (NOT EVHTP_DISABLE_SSL) - file (COPY - https/etc/ca.cnf - https/etc/client1.cnf - https/etc/client2.cnf - https/etc/server.cnf - DESTINATION https/etc/) +if(NOT EVHTP_DISABLE_SSL) + file(COPY + https/etc/ca.cnf + https/etc/client1.cnf + https/etc/client2.cnf + https/etc/server.cnf + DESTINATION https/etc/) configure_file(https/bin/generate.sh.in https/bin/generate.sh @ONLY) @@ -48,4 +47,10 @@ if (NOT EVHTP_DISABLE_SSL) add_dependencies(examples example_https_server example_https_client) endif() -add_dependencies(examples example_request_fini example_chunked example_pause example_vhost test_extensive test_basic test_vhost test_client test_query test_perf) +add_dependencies(examples + example_request_fini + example_chunked example_pause + example_vhost test_extensive + test_basic + test_vhost test_client + test_query test_perf)