FIND_PACKAGE(Threads)
endif(CMAKE_SYSTEM_NAME MATCHES "Linux")
-if(CMAKE_CXX_COMPILER_ID STREQUAL GNU)
- if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7)
- message(FATAL_ERROR "GCC 7+ required due to C++17 requirements")
- endif()
-endif()
-
option(WITH_CCACHE "Build with ccache.")
if(WITH_CCACHE)
find_program(CCACHE_FOUND ccache)
list(APPEND CMAKE_REQUIRED_INCLUDES /usr/local/include)
endif(FREEBSD)
-#Check Includes
-include(CheckIncludeFiles)
-include(CheckIncludeFileCXX)
-include(CheckFunctionExists)
#put all the libs and binaries in one place
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
-
-CHECK_FUNCTION_EXISTS(fallocate CEPH_HAVE_FALLOCATE)
-CHECK_FUNCTION_EXISTS(posix_fadvise HAVE_POSIX_FADVISE)
-CHECK_FUNCTION_EXISTS(posix_fallocate HAVE_POSIX_FALLOCATE)
-CHECK_FUNCTION_EXISTS(syncfs HAVE_SYS_SYNCFS)
-CHECK_FUNCTION_EXISTS(sync_file_range HAVE_SYNC_FILE_RANGE)
-CHECK_FUNCTION_EXISTS(pwritev HAVE_PWRITEV)
-CHECK_FUNCTION_EXISTS(splice CEPH_HAVE_SPLICE)
-CHECK_FUNCTION_EXISTS(getgrouplist HAVE_GETGROUPLIST)
-if(NOT APPLE)
- CHECK_FUNCTION_EXISTS(fdatasync HAVE_FDATASYNC)
-endif()
-CHECK_FUNCTION_EXISTS(strerror_r HAVE_Strerror_R)
-CHECK_FUNCTION_EXISTS(name_to_handle_at HAVE_NAME_TO_HANDLE_AT)
-CHECK_FUNCTION_EXISTS(pipe2 HAVE_PIPE2)
-CHECK_FUNCTION_EXISTS(accept4 HAVE_ACCEPT4)
-
-include(CMakePushCheckState)
-cmake_push_check_state(RESET)
-set(CMAKE_REQUIRED_LIBRARIES pthread)
-CHECK_FUNCTION_EXISTS(pthread_spin_init HAVE_PTHREAD_SPINLOCK)
-CHECK_FUNCTION_EXISTS(pthread_set_name_np HAVE_PTHREAD_SET_NAME_NP)
-CHECK_FUNCTION_EXISTS(pthread_get_name_np HAVE_PTHREAD_GET_NAME_NP)
-CHECK_FUNCTION_EXISTS(pthread_setname_np HAVE_PTHREAD_SETNAME_NP)
-CHECK_FUNCTION_EXISTS(pthread_getname_np HAVE_PTHREAD_GETNAME_NP)
-CHECK_FUNCTION_EXISTS(pthread_rwlockattr_setkind_np HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP)
-cmake_pop_check_state()
-
-CHECK_FUNCTION_EXISTS(eventfd HAVE_EVENTFD)
-CHECK_FUNCTION_EXISTS(getprogname HAVE_GETPROGNAME)
-
-CHECK_INCLUDE_FILES("linux/types.h" HAVE_LINUX_TYPES_H)
-CHECK_INCLUDE_FILES("linux/version.h" HAVE_LINUX_VERSION_H)
-CHECK_INCLUDE_FILES("arpa/nameser_compat.h" HAVE_ARPA_NAMESER_COMPAT_H)
-CHECK_INCLUDE_FILES("sys/mount.h" HAVE_SYS_MOUNT_H)
-CHECK_INCLUDE_FILES("sys/param.h" HAVE_SYS_PARAM_H)
-CHECK_INCLUDE_FILES("sys/types.h" HAVE_SYS_TYPES_H)
-CHECK_INCLUDE_FILES("sys/vfs.h" HAVE_SYS_VFS_H)
-CHECK_INCLUDE_FILES("sys/prctl.h" HAVE_SYS_PRCTL_H)
-CHECK_INCLUDE_FILES("execinfo.h" HAVE_EXECINFO_H)
-if(LINUX)
- CHECK_INCLUDE_FILES("sched.h" HAVE_SCHED)
-endif(LINUX)
-CHECK_INCLUDE_FILES("valgrind/helgrind.h" HAVE_VALGRIND_HELGRIND_H)
-
-include(CheckTypeSize)
-set(CMAKE_EXTRA_INCLUDE_FILES "linux/types.h")
-CHECK_TYPE_SIZE(__be16 __BE16)
-CHECK_TYPE_SIZE(__be32 __BE32)
-CHECK_TYPE_SIZE(__be64 __BE64)
-CHECK_TYPE_SIZE(__le16 __LE16)
-CHECK_TYPE_SIZE(__le32 __LE32)
-CHECK_TYPE_SIZE(__le64 __LE64)
-CHECK_TYPE_SIZE(__u8 __U8)
-CHECK_TYPE_SIZE(__u16 __U16)
-CHECK_TYPE_SIZE(__u32 __U32)
-CHECK_TYPE_SIZE(__u64 __U64)
-CHECK_TYPE_SIZE(__s8 __S8)
-CHECK_TYPE_SIZE(__s16 __S16)
-CHECK_TYPE_SIZE(__s32 __S32)
-CHECK_TYPE_SIZE(__s64 __S64)
-unset(CMAKE_EXTRA_INCLUDE_FILES)
-
-include(CheckSymbolExists)
-CHECK_SYMBOL_EXISTS(res_nquery "resolv.h" HAVE_RES_NQUERY)
-CHECK_SYMBOL_EXISTS(F_SETPIPE_SZ "linux/fcntl.h" CEPH_HAVE_SETPIPE_SZ)
-CHECK_SYMBOL_EXISTS(__func__ "" HAVE_FUNC)
-CHECK_SYMBOL_EXISTS(__PRETTY_FUNCTION__ "" HAVE_PRETTY_FUNC)
-CHECK_SYMBOL_EXISTS(getentropy "unistd.h" HAVE_GETENTROPY)
-
-include(CheckCXXSourceCompiles)
-CHECK_CXX_SOURCE_COMPILES("
- #include <string.h>
- int main() { char x = *strerror_r(0, &x, sizeof(x)); return 0; }
- " STRERROR_R_CHAR_P)
-
-include(CheckStructHasMember)
-CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtim.tv_nsec sys/stat.h
- HAVE_STAT_ST_MTIM_TV_NSEC LANGUAGE C)
-CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtimespec.tv_nsec sys/stat.h
- HAVE_STAT_ST_MTIMESPEC_TV_NSEC LANGUAGE C)
+include(CephChecks)
set(CEPH_MAN_DIR "share/man" CACHE STRING "Install location for man pages (relative to prefix).")
--- /dev/null
+if(CMAKE_CXX_COMPILER_ID STREQUAL GNU)
+ if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7)
+ message(FATAL_ERROR "GCC 7+ required due to C++17 requirements")
+ endif()
+endif()
+
+#Check Includes
+include(CheckIncludeFiles)
+include(CheckIncludeFileCXX)
+include(CheckFunctionExists)
+
+check_function_exists(fallocate CEPH_HAVE_FALLOCATE)
+check_function_exists(posix_fadvise HAVE_POSIX_FADVISE)
+check_function_exists(posix_fallocate HAVE_POSIX_FALLOCATE)
+check_function_exists(syncfs HAVE_SYS_SYNCFS)
+check_function_exists(sync_file_range HAVE_SYNC_FILE_RANGE)
+check_function_exists(pwritev HAVE_PWRITEV)
+check_function_exists(splice CEPH_HAVE_SPLICE)
+check_function_exists(getgrouplist HAVE_GETGROUPLIST)
+if(NOT APPLE)
+ check_function_exists(fdatasync HAVE_FDATASYNC)
+endif()
+check_function_exists(strerror_r HAVE_Strerror_R)
+check_function_exists(name_to_handle_at HAVE_NAME_TO_HANDLE_AT)
+check_function_exists(pipe2 HAVE_PIPE2)
+check_function_exists(accept4 HAVE_ACCEPT4)
+
+include(CMakePushCheckState)
+cmake_push_check_state(RESET)
+set(CMAKE_REQUIRED_LIBRARIES pthread)
+check_function_exists(pthread_spin_init HAVE_PTHREAD_SPINLOCK)
+check_function_exists(pthread_set_name_np HAVE_PTHREAD_SET_NAME_NP)
+check_function_exists(pthread_get_name_np HAVE_PTHREAD_GET_NAME_NP)
+check_function_exists(pthread_setname_np HAVE_PTHREAD_SETNAME_NP)
+check_function_exists(pthread_getname_np HAVE_PTHREAD_GETNAME_NP)
+check_function_exists(pthread_rwlockattr_setkind_np HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP)
+cmake_pop_check_state()
+
+check_function_exists(eventfd HAVE_EVENTFD)
+check_function_exists(getprogname HAVE_GETPROGNAME)
+
+CHECK_INCLUDE_FILES("linux/types.h" HAVE_LINUX_TYPES_H)
+CHECK_INCLUDE_FILES("linux/version.h" HAVE_LINUX_VERSION_H)
+CHECK_INCLUDE_FILES("arpa/nameser_compat.h" HAVE_ARPA_NAMESER_COMPAT_H)
+CHECK_INCLUDE_FILES("sys/mount.h" HAVE_SYS_MOUNT_H)
+CHECK_INCLUDE_FILES("sys/param.h" HAVE_SYS_PARAM_H)
+CHECK_INCLUDE_FILES("sys/types.h" HAVE_SYS_TYPES_H)
+CHECK_INCLUDE_FILES("sys/vfs.h" HAVE_SYS_VFS_H)
+CHECK_INCLUDE_FILES("sys/prctl.h" HAVE_SYS_PRCTL_H)
+CHECK_INCLUDE_FILES("execinfo.h" HAVE_EXECINFO_H)
+if(LINUX)
+ CHECK_INCLUDE_FILES("sched.h" HAVE_SCHED)
+endif()
+CHECK_INCLUDE_FILES("valgrind/helgrind.h" HAVE_VALGRIND_HELGRIND_H)
+
+include(CheckTypeSize)
+set(CMAKE_EXTRA_INCLUDE_FILES "linux/types.h")
+CHECK_TYPE_SIZE(__be16 __BE16)
+CHECK_TYPE_SIZE(__be32 __BE32)
+CHECK_TYPE_SIZE(__be64 __BE64)
+CHECK_TYPE_SIZE(__le16 __LE16)
+CHECK_TYPE_SIZE(__le32 __LE32)
+CHECK_TYPE_SIZE(__le64 __LE64)
+CHECK_TYPE_SIZE(__u8 __U8)
+CHECK_TYPE_SIZE(__u16 __U16)
+CHECK_TYPE_SIZE(__u32 __U32)
+CHECK_TYPE_SIZE(__u64 __U64)
+CHECK_TYPE_SIZE(__s8 __S8)
+CHECK_TYPE_SIZE(__s16 __S16)
+CHECK_TYPE_SIZE(__s32 __S32)
+CHECK_TYPE_SIZE(__s64 __S64)
+unset(CMAKE_EXTRA_INCLUDE_FILES)
+
+include(CheckSymbolExists)
+check_symbol_exists(res_nquery "resolv.h" HAVE_RES_NQUERY)
+check_symbol_exists(F_SETPIPE_SZ "linux/fcntl.h" CEPH_HAVE_SETPIPE_SZ)
+check_symbol_exists(__func__ "" HAVE_FUNC)
+check_symbol_exists(__PRETTY_FUNCTION__ "" HAVE_PRETTY_FUNC)
+check_symbol_exists(getentropy "unistd.h" HAVE_GETENTROPY)
+
+include(CheckCXXSourceCompiles)
+check_cxx_source_compiles("
+ #include <string.h>
+ int main() { char x = *strerror_r(0, &x, sizeof(x)); return 0; }
+ " STRERROR_R_CHAR_P)
+
+include(CheckStructHasMember)
+CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtim.tv_nsec sys/stat.h
+ HAVE_STAT_ST_MTIM_TV_NSEC LANGUAGE C)
+CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtimespec.tv_nsec sys/stat.h
+ HAVE_STAT_ST_MTIMESPEC_TV_NSEC LANGUAGE C)