fix segfault: dtrace build on solaris
[m6w6/libmemcached] / CMakeConfig.txt
index 41b76324d486f8c2400b4e643e399876b2443955..4d17185f4f9a7b059d40ec3f0839bdd8426bff46 100644 (file)
@@ -1,12 +1,26 @@
-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")
 
+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()
+
 option(BUILD_TESTING        "whether to enable build of the test suite"
-        OFF)
+        $ENV{BUILD_TESTING})
 option(BUILD_DOCSONLY       "build *only* documentation"
-        OFF)
+        $ENV{BUILD_DOCSONLY})
 option(BUILD_DOCS           "build documentation"
         ${BUILD_DOCSONLY})
 option(BUILD_DOCS_HTML      "build HTML docs"
@@ -16,25 +30,41 @@ option(BUILD_DOCS_MAN       "build manpages"
 option(BUILD_DOCS_MANGZ     "gzip manpages"
         ${BUILD_DOCS_MAN})
 
+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"
-        OFF)
+        $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"
-        ON)
+        $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"
-        ON)
-option(ENABLE_HASH_HSIEH    "enable hsieh hash support"
-        OFF)
+        $ENV{ENABLE_HASH_MURMUR})
+if(NOT DEFINED ENV{ENABLE_MEMASLAP})
+    set(ENV{ENABLE_MEMASLAP} ON)
+endif()
 option(ENABLE_MEMASLAP      "enable memaslap client"
-        ON)
-option(ENABLE_SASL          "enable SASL support"
-        OFF)
-
-set(ENABLE_SANITIZERS ""
-    CACHE STRING "sanitizers to enable (e.g. address undefined ...)")
+       $ENV{ENABLE_MEMASLAP})
 
 if(BUILD_TESTING)
-    set(MEMCACHED_BINARY "/usr/bin/memcached"
-        CACHE FILEPATH "memcached binary")
+    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(BUILD_DOCS)
@@ -53,12 +83,10 @@ endif()
 # legacy
 
 set(HAVE_VISIBILITY 1)
-set(HAVE_SHARED_ENABLED 1)
-set(HAVE_GCC_BUILTIN_ATOMIC 1)
 
 # modules
 
-set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake)
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake")
 
 if(NOT BUILD_DOCSONLY)
     include(CMake/_Include.cmake)