X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=CMakeConfig.txt;h=2a8617f1ad0614b44caf09b523dd1d41ab0849bf;hb=92d18858b417309f6bdee6bce464a4f3d6a375fd;hp=209f4770976161e7de1f380682c58d16b65d1fd6;hpb=49aa94b8c4df6c3fd9d5c9688651c6f928f9aad1;p=awesomized%2Flibmemcached diff --git a/CMakeConfig.txt b/CMakeConfig.txt index 209f4770..2a8617f1 100644 --- a/CMakeConfig.txt +++ b/CMakeConfig.txt @@ -1,74 +1,101 @@ -set(CMAKE_BUILD_TYPE Release - CACHE STRING "build type (Release, Debug, ...)") +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + if(NOT DEFINED ENV{CMAKE_BUILD_TYPE}) + set(ENV{CMAKE_BUILD_TYPE} Release) + endif() + set(CMAKE_BUILD_TYPE $ENV{CMAKE_BUILD_TYPE} + CACHE STRING "build type (Release, Debug, ...)" FORCE) +endif() set(CMAKE_INSTALL_PREFIX /usr/local CACHE PATH "install prefix") -# make test - -set(BUILD_TESTING ON - CACHE STRING "whether to enable build of the test suite") - -set(ENABLE_SANITIZERS "" - CACHE STRING "sanitizers to enable (e.g. address undefined ...)") - -set(MEMCACHED_BINARY "/usr/bin/memcached" - CACHE FILEPATH "memcached binary") - -# sasl - -set(ENABLE_SASL OFF - CACHE BOOL "enable SASL support") - -# hashes - -set(ENABLE_FNV64_HASH ON - CACHE BOOL "enable fnv64 hash support") -set(ENABLE_MURMUR_HASH ON - CACHE BOOL "enable murmur hash support") -set(ENABLE_HSIEH_HASH OFF - CACHE BOOL "enable hsieh hash support") - -# memaslap, needs libevent and stdatomic -set(ENABLE_MEMASLAP ON - CACHE BOOL "enable memaslap client") - -# dtrace - -set(ENABLE_DTRACE OFF - CACHE BOOL "enable dtrace support") - -# docs / sphinx - -set(BUILD_DOCS ON - CACHE BOOL "build documentation") - -set(BUILD_DOCSONLY OFF - CACHE BOOL "build *only* documentation") - -set(GZIP_MAN ON - CACHE BOOL "gzip manpages") - -set(SPHINX_OPTIONS "" - CACHE STRING "additional sphinx-build command line options") -set(SPHINX_THEME "sphinx_rtd_theme" - CACHE STRING "sphinx HTML theme") -set(SPHINX_THEME_OPTIONS "'collapse_navigation':False, 'navigation_depth':2, 'titles_only':False, 'includehidden':False" - CACHE STRING "sphinx HTML theme options") -set(SPHINX_EXTENSIONS "" - CACHE STRING "comma separated list of quoted sphinx extensions") -set(SPHINX_CONF_APPEND "" - CACHE STRING "append verbatim code to sphinx' conf.py") - -# legacy +if(APPLE) + set(CMAKE_INSTALL_RPATH @loader_path + CACHE STRING "set relative rpath") +elseif(UNIX) + # FIXME + set(CMAKE_INSTALL_RPATH "\$ORIGIN" + CACHE STRING "set relative rpath") +endif() -set(HAVE_VISIBILITY 1) -set(HAVE_SHARED_ENABLED 1) -set(HAVE_GCC_BUILTIN_ATOMIC 1) +if(${CMAKE_VERSION} VERSION_LESS "3.12") + set(TARGET_NAMELINK_COMPONENT "") +else() + set(TARGET_NAMELINK_COMPONENT NAMELINK_COMPONENT dev DESTINATION ${CMAKE_INSTALL_LIBDIR}) +endif() -# modules +set(CLIENT_PREFIX mem + CACHE STRING "client prefix (default mem; i.e.: memstat, memcp, memcat ...)") + +option(BUILD_SHARED_LIBS "whether to build shared libraries" + ON) +option(BUILD_TESTING "whether to enable build of the test suite" + $ENV{BUILD_TESTING}) +option(BUILD_DOCSONLY "build *only* documentation" + $ENV{BUILD_DOCSONLY}) +option(BUILD_DOCS "build documentation" + ${BUILD_DOCSONLY}) +option(BUILD_DOCS_HTML "build HTML docs" + ${BUILD_DOCS}) +option(BUILD_DOCS_MAN "build manpages" + ${BUILD_DOCS}) +option(BUILD_DOCS_MANGZ "gzip manpages" + ${BUILD_DOCS_MAN}) +if(BUILD_DOCS_MANGZ) + set(BUILD_DOCS_MAN ON CACHE BOOL "forced by BUILD_DOCS_MANGZ" FORCE) +endif() +if(BUILD_DOCS_MAN OR BUILD_DOCS_HTML) + set(BUILD_DOCS ON CACHE BOOL "forced by BUILD_DOCS_MAN OR BUILD_DOCS_HTML" FORCE) +endif() -set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake) +set(ENABLE_SANITIZERS "$ENV{ENABLE_SANITIZERS}" + CACHE STRING "sanitizers to enable (e.g. address;undefined ...)") +option(ENABLE_SASL "enable SASL support" + $ENV{ENABLE_SASL}) +option(ENABLE_DTRACE "enable dtrace support" + $ENV{ENABLE_DTRACE}) +option(ENABLE_HASH_HSIEH "enable hsieh hash support" + $ENV{ENABLE_HASH_HSIEH}) +if(NOT DEFINED ENV{ENABLE_HASH_FNV64}) + set(ENV{ENABLE_HASH_FNV64} ON) +endif() +option(ENABLE_HASH_FNV64 "enable fnv64 hash support" + $ENV{ENABLE_HASH_FNV64}) +if(NOT DEFINED ENV{ENABLE_HASH_MURMUR}) + set(ENV{ENABLE_HASH_MURMUR} ON) +endif() +option(ENABLE_HASH_MURMUR "enable murmur hash support" + $ENV{ENABLE_HASH_MURMUR}) +if(NOT DEFINED ENV{ENABLE_MEMASLAP}) + set(ENV{ENABLE_MEMASLAP} ON) +endif() +option(ENABLE_MEMASLAP "enable memaslap client" + $ENV{ENABLE_MEMASLAP}) +option(ENABLE_OPENSSL_CRYPTO + "enable OpenSSL's libcrypto instead of bundled AES implementation" + $ENV{ENABLE_OPENSSL_CRYPTO}) + +if(BUILD_TESTING) + set(MEMCACHED_BINARY "$ENV{MEMCACHED_BINARY}" + CACHE STRING "memcached binary") + set(CMAKE_CTEST_ARGUMENTS "--output-on-failure") + if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.17) + # available since CMake 3.17 + list(APPEND CMAKE_CTEST_ARGUMENTS --repeat until-pass:2) + if(NOT "$ENV{CIRRUS_CI}") + list(APPEND CMAKE_CTEST_ARGUMENTS -j2) + endif() + endif() +endif() -if(NOT BUILD_DOCSONLY) - include(CMake/_Include.cmake) +if(BUILD_DOCS) + set(SPHINX_OPTIONS "" + CACHE STRING "additional sphinx-build command line options") + set(SPHINX_THEME "sphinx_rtd_theme" + CACHE STRING "sphinx HTML theme") + set(SPHINX_THEME_OPTIONS "" + CACHE STRING "sphinx HTML theme options") + set(SPHINX_EXTENSIONS "" + CACHE STRING "comma separated list of quoted sphinx extensions") + set(SPHINX_CONF_APPEND "" + CACHE STRING "append verbatim code to sphinx' conf.py") endif()