From: Ali Maredia Date: Mon, 2 May 2016 22:21:32 +0000 (-0400) Subject: cmake: Added #defines to config-h.in.cmake X-Git-Tag: v11.0.0~400^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0ef09f32d46d68c6fd95ba1d59b91e5d700141df;p=ceph.git cmake: Added #defines to config-h.in.cmake Signed-off-by: Ali Maredia --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 8dbdcb510b1..53399c7dc71 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 2.8.11) project(Ceph) -set(VERSION "0.90") +set(VERSION "10.2.1") if (NOT (CMAKE_MAJOR_VERSION LESS 3)) # Tweak policies (this one disables "missing" dependency warning) @@ -70,6 +70,7 @@ 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) @@ -77,64 +78,75 @@ CHECK_FUNCTION_EXISTS(syncfs HAVE_SYS_SYNCFS) CHECK_FUNCTION_EXISTS(sync_file_range HAVE_SYNC_FILE_RANGE) CHECK_FUNCTION_EXISTS(mallinfo HAVE_MALLINFO) CHECK_FUNCTION_EXISTS(pwritev HAVE_PWRITEV) -CHECK_INCLUDE_FILES("arpa/inet.h" HAVE_ARPA_INET_H) -CHECK_INCLUDE_FILES("boost/random/discrete_distribution.hpp" HAVE_BOOST_RANDOM_DISCRETE_DISTRIBUTION) +CHECK_FUNCTION_EXISTS(splice CEPH_HAVE_SPLICE) +CHECK_FUNCTION_EXISTS(getgrouplist HAVE_GETGROUPLIST) +CHECK_FUNCTION_EXISTS(fdatasync HAVE_FDATASYNC) +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) +set(CMAKE_REQUIRED_LIBRARIES pthread) +CHECK_FUNCTION_EXISTS(pthread_spin_init HAVE_PTHREAD_SPINLOCK) +CHECK_FUNCTION_EXISTS(eventfd HAVE_EVENTFD) + CHECK_INCLUDE_FILE_CXX("boost/asio/coroutine.hpp" HAVE_BOOST_ASIO_COROUTINE) -CHECK_INCLUDE_FILES("dirent.h" HAVE_DIRENT_H) -CHECK_INCLUDE_FILES("dlfcn.h" HAVE_DLFCN_H) CHECK_INCLUDE_FILES("inttypes.h" HAVE_INTTYPES_H) CHECK_INCLUDE_FILES("linux/types.h" HAVE_LINUX_TYPES_H) -CHECK_INCLUDE_FILES("memory.h" HAVE_MEMORY_H) -CHECK_INCLUDE_FILES("ndir.h" HAVE_NDIR_H) -CHECK_INCLUDE_FILES("netdb.h" HAVE_NETDB_H) -CHECK_INCLUDE_FILES("netinet/in.h" HAVE_NETINET_IN_H) +CHECK_INCLUDE_FILES("linux/version.h" HAVE_LINUX_VERSION_H) CHECK_INCLUDE_FILES("stdint.h" HAVE_STDINT_H) -CHECK_INCLUDE_FILES("stdlib.h" HAVE_STDLIB_H) -CHECK_INCLUDE_FILES("arpa/inet.h" HAVE_ARPA_INET_H) -CHECK_INCLUDE_FILES("strings.h" HAVE_STRINGS_H) -CHECK_INCLUDE_FILES("string.h" HAVE_STRING_H) -CHECK_INCLUDE_FILES("syslog.h" HAVE_SYSLOG_H) -CHECK_INCLUDE_FILES("sys/dir.h" HAVE_SYS_DIR_H) -CHECK_INCLUDE_FILES("sys/file.h" HAVE_SYS_FILE_H) -CHECK_INCLUDE_FILES("sys/ioctl.h" HAVE_SYS_IOCTL_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/ndir.h" HAVE_SYS_NDIR_H) CHECK_INCLUDE_FILES("sys/param.h" HAVE_SYS_PARAM_H) -CHECK_INCLUDE_FILES("sys/socket.h" HAVE_SYS_SOCKET_H) -CHECK_INCLUDE_FILES("sys/statvfs.h" HAVE_SYS_STATVFS_H) -CHECK_INCLUDE_FILES("sys/stat.h" HAVE_SYS_STAT_H) -CHECK_INCLUDE_FILES("sys/time.h" HAVE_SYS_TIME_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/wait.h" HAVE_SYS_WAIT_H) -CHECK_INCLUDE_FILES("sys/xattr.h" HAVE_SYS_XATTR_H) -CHECK_INCLUDE_FILES("unistd.h" HAVE_UNISTD_H) -CHECK_INCLUDE_FILES("utime.h" HAVE_UTIME_H) -CHECK_INCLUDE_FILES("${CMAKE_SOURCE_DIR}/src/include/fiemap.h" HAVE_FIEMAP_H) -CHECK_INCLUDE_FILES("fuse/fuse_lowlevel.h" HAVE_FUSE_LOWLEVEL_H) -CHECK_INCLUDE_FILES("fuse/fuse.h" HAVE_FUSE_H) -CHECK_INCLUDE_FILES("fcgi_config.h" HAVE_FASTCGI_CONFIG_H) -CHECK_INCLUDE_FILES("fastcgi.h" HAVE_FASTCGI_H) -CHECK_INCLUDE_FILES("fcgiapp.h" FASTCGI_FASTCGI_APP_DIR) -CHECK_INCLUDE_FILES("fcgimisc.h" HAVE_FASTCGI_MISC_H) -CHECK_INCLUDE_FILES("fcgio.h" HAVE_FASTCGIO_H) -CHECK_INCLUDE_FILES("fcgios.h" FASTCGI_FASTCGIOS_DIR) -CHECK_INCLUDE_FILES("fcgi_stdio.h" HAVE_FASTCGI_STDIO_H) -CHECK_INCLUDE_FILES("keyutils.h" HAVE_KEYUTILS_H) +CHECK_INCLUDE_FILES("sys/prctl.h" HAVE_SYS_PRCTL_H) CHECK_INCLUDE_FILES("execinfo.h" HAVE_EXECINFO_H) +CHECK_INCLUDE_FILES("sched.h" HAVE_SCHED) +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(__u8 "sys/types.h;linux/types.h" HAVE___U8) -CHECK_SYMBOL_EXISTS(__u64 "sys/types.h;linux/types.h" HAVE___U64) -CHECK_SYMBOL_EXISTS(__s64 "sys/types.h;linux/types.h" HAVE___S64) - 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) include(CheckCXXSourceCompiles) CHECK_CXX_SOURCE_COMPILES(" #include int main() { char x = *strerror_r(0, &x, sizeof(x)); return 0; } " STRERROR_R_CHAR_P) +CHECK_CXX_SOURCE_COMPILES(" + #include + #include + int main() { struct stat foo = {}; foo.st_mtim.tv_nsec = 0; + return 0; } + " HAVE_STAT_ST_MTIM_TV_NSEC) +CHECK_CXX_SOURCE_COMPILES(" + #include + #include + int main() { struct stat foo = {}; foo.st_mtimespec.tv_nsec = 0; + return 0; } + " HAVE_STAT_ST_MTIMESPEC_TV_NSEC) +CHECK_CXX_SOURCE_COMPILES(" + int main() { float f = 12.3; int n = static_cast(f); return 0; } + " HAVE_STATIC_CAST) set(CEPH_MAN_DIR "share/man" CACHE STRING "Install location for man pages (relative to prefix).") @@ -178,13 +190,12 @@ option(WITH_FUSE "Fuse is here" ON) if(${WITH_FUSE}) find_package(fuse) set(HAVE_LIBFUSE ${FUSE_FOUND}) -CHECK_FUNCTION_EXISTS(fuse_getgroups HAVE_FUSE_GETGROUPS) endif(${WITH_FUSE}) option(WITH_XFS "XFS is here" ON) if(${WITH_XFS}) find_package(xfs) -set(HAVE_XFS ${XFS_FOUND}) +set(HAVE_LIBXFS ${XFS_FOUND}) endif(${WITH_XFS}) option(WITH_SPDK "Enable SPDK" OFF) @@ -195,13 +206,11 @@ if(WITH_SPDK) endif(WITH_SPDK) find_package(blkid REQUIRED) -set(HAVE_LIBBLKID ${BLKID_FOUND}) # probably fuse etc need this -- how to check? XXX option(WITH_MDS "MDS is here" ON) # needs mds and? XXX -option(WITH_CLIENT "Client is here" ON) option(WITH_LIBCEPHFS "libcephfs client library" ON) # key-value store @@ -213,22 +222,22 @@ option(WITH_RBD "Remote block storage is here" ON) option(WITH_LEVELDB "LevelDB is here" ON) if(${WITH_LEVELDB}) find_package(leveldb REQUIRED) -set(HAVE_LIBLEVELDB ${LEVELDB_FOUND}) find_file(HAVE_LEVELDB_FILTER_POLICY filter_policy.h PATHS /usr/include/leveldb) endif(${WITH_LEVELDB}) option(WITH_EXPAT "EXPAT is here" ON) if(${WITH_EXPAT}) find_package(expat REQUIRED) -set(HAVE_EXPAT ${EXPAT_FOUND}) endif(${WITH_EXPAT}) find_package(Cython REQUIRED) find_package(fcgi REQUIRED) find_package(atomic_ops REQUIRED) -set(HAVE_ATOMIC_OPS ${ATOMIC_OPS_FOUND}) message(STATUS "${ATOMIC_OPS_LIBRARIES}") +if(NOT ${ATOMIC_OPS_FOUND}) + set(NO_ATOMIC_OPS 1) +endif(NOT ${ATOMIC_OPS_FOUND}) option(WITH_GPERFTOOLS "gperftools is here" ON) if(${WITH_GPERFTOOLS}) @@ -250,11 +259,15 @@ if(ALLOCATOR) set(HAVE_LIBTCMALLOC ${Tcmalloc_FOUND}) elseif(${ALLOCATOR} STREQUAL "jemalloc") find_package(JeMalloc REQUIRED) + set(HAVE_LIBJEMALLOC ${JEMALLOC_FOUND}) endif() else(ALLOCATOR) find_package(tcmalloc) set(HAVE_LIBTCMALLOC ${Tcmalloc_FOUND}) - find_package(JeMalloc) + if(NOT ${Tcmalloc_FOUND}) + find_package(JeMalloc) + set(HAVE_LIBJEMALLOC ${JEMALLOC_FOUND}) + endif(NOT ${Tcmalloc_FOUND}) if(NOT Tcmalloc_FOUND AND NOT JEMALLOC_FOUND) message(WARNING "tcmalloc and jemalloc not found, falling back to libc") set(ALLOCATOR "libc") @@ -330,14 +343,13 @@ if(${HAVE_BABELTRACE}) set(WITH_BABELTRACE ${BABELTRACE_FOUND}) set(HAVE_BABELTRACE_BABELTRACE_H ${BABELTRACE_FOUND}) set(HAVE_BABELTRACE_CTF_EVENTS_H ${BABELTRACE_FOUND}) + set(HAVE_BABELTRACE_CTF_ITERATOR_H ${BABELTRACE_FOUND}) endif(${HAVE_BABELTRACE}) -# Now create a useable config.h -configure_file( - ${PROJECT_SOURCE_DIR}/src/include/config-h.in.cmake - ${PROJECT_BINARY_DIR}/include/acconfig.h -) -include_directories(${PROJECT_BINARY_DIR}/include) +option(DEBUG_GATHER "C_Gather debugging is enabled" ON) +option(HAVE_LIBZFS "LibZFS is enabled" OFF) +option(ENABLE_COVERAGE "Coverage is enabled" OFF) +option(PG_DEBUG_REFS "PG Ref debugging is enabled" OFF) add_definitions(-D__linux__) @@ -350,6 +362,7 @@ endif(${ENABLE_SHARED}) set(Boost_USE_MULTITHREADED ON) find_package(Boost COMPONENTS thread system regex random program_options date_time iostreams REQUIRED) include_directories(${Boost_INCLUDE_DIRS}) +include_directories(${PROJECT_BINARY_DIR}/include) find_package(Threads REQUIRED) diff --git a/cmake/modules/FindOpenLdap.cmake b/cmake/modules/FindOpenLdap.cmake index 20bf8fa1187..42b3edd01d6 100644 --- a/cmake/modules/FindOpenLdap.cmake +++ b/cmake/modules/FindOpenLdap.cmake @@ -31,7 +31,6 @@ else (OPENLDAP_FOUND) endif (NOT OPENLDAP_INCLUDE_DIR) endif (OPENLDAP_FOUND) -add_definitions(-DHAVE_OPENLDAP) set(OPENLDAP_LIBS ${LIBLDAP} ${LIBLBER}) mark_as_advanced( diff --git a/cmake/modules/Findbabeltrace.cmake b/cmake/modules/Findbabeltrace.cmake index b72b62591eb..d576186b53e 100644 --- a/cmake/modules/Findbabeltrace.cmake +++ b/cmake/modules/Findbabeltrace.cmake @@ -25,7 +25,7 @@ endif() #list(APPEND BABELTRACE_PATH_HINT ${MYPATH}) find_path(BABELTRACE_INCLUDE_DIR - NAMES babeltrace/babeltrace.h babeltrace/ctf/events.h + NAMES babeltrace/babeltrace.h babeltrace/ctf/events.h babeltrace/ctf/iterator.h PATHS ${BABELTRACE_PATH_HINT} PATH_SUFFIXES include DOC "The Babeltrace include headers") diff --git a/cmake/modules/Findfcgi.cmake b/cmake/modules/Findfcgi.cmake index b5f366b21bc..ff8cadc3bd2 100644 --- a/cmake/modules/Findfcgi.cmake +++ b/cmake/modules/Findfcgi.cmake @@ -39,4 +39,4 @@ ENDIF (FCGI_FOUND) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(fcgi DEFAULT_MSG FCGI_LIBRARY FCGI_INCLUDE_DIR) -mark_as_advanced(UUID_LIBRARIES UUID_INCLUDE_DIR) +mark_as_advanced(FCGI_LIBRARY FCGI_INCLUDE_DIR) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7833502fa5e..0ff394cd267 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -55,7 +55,6 @@ else(no_yasm) if(not_arch_x32) message(STATUS " we are not x32") set(HAVE_GOOD_YASM_ELF64 1) - add_definitions("-DHAVE_GOOD_YASM_ELF64") execute_process(COMMAND yasm -f elf64 -i ${CMAKE_SOURCE_DIR}/src/erasure-code/isa/isa-l/include/ ${CMAKE_SOURCE_DIR}/src/erasure-code/isa/isa-l/erasure_code/gf_vect_dot_prod_avx2.asm.s @@ -64,7 +63,6 @@ else(no_yasm) OUTPUT_QUIET) if(NOT rc) set(HAVE_BETTER_YASM_ELF64 1) - add_definitions("-DHAVE_BETTER_YASM_ELF64") message(STATUS " yasm can also build the isa-l stuff") endif(NOT rc) else(not_arch_x32) @@ -87,6 +85,77 @@ else() message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support.") endif() +## detect sse support + +# create a tmp file with an empty main() +set(sse_srcs "${CMAKE_BINARY_DIR}/src/erasure-code/jerasure/tmp_sse.c") +file(WRITE ${sse_srcs} "void main() {}") + +# try each -msse flag +try_compile(INTEL_SSE ${CMAKE_BINARY_DIR} ${sse_srcs} + COMPILE_DEFINITIONS "-msse") +try_compile(INTEL_SSE2 ${CMAKE_BINARY_DIR} ${sse_srcs} + COMPILE_DEFINITIONS "-msse2") +try_compile(INTEL_SSE3 ${CMAKE_BINARY_DIR} ${sse_srcs} + COMPILE_DEFINITIONS "-msse3") +try_compile(INTEL_SSSE3 ${CMAKE_BINARY_DIR} ${sse_srcs} + COMPILE_DEFINITIONS "-mssse3") +try_compile(INTEL_SSE4_1 ${CMAKE_BINARY_DIR} ${sse_srcs} + COMPILE_DEFINITIONS "-msse4.1") +try_compile(INTEL_SSE4_2 ${CMAKE_BINARY_DIR} ${sse_srcs} + COMPILE_DEFINITIONS "-msse4.2") +try_compile(ARM_NEON ${CMAKE_BINARY_DIR} ${sse_srcs} + COMPILE_DEFINITIONS "-mfpu=neon") +try_compile(ARM_NEON2 ${CMAKE_BINARY_DIR} ${sse_srcs} + COMPILE_DEFINITIONS "-march=armv8-a+simd") +try_compile(ARM_CRC ${CMAKE_BINARY_DIR} ${sse_srcs} + COMPILE_DEFINITIONS "-march=armv8-a+crc") + +# clean up tmp file +file(REMOVE ${sse_srcs}) + +if(ARM_CRC) + set(HAVE_ARMV8_CRC 1) + set(ARM_CRC_FLAGS "-march=armv8-a+crc -DARCH_AARCH64") +endif(ARM_CRC) + +if(ARM_NEON OR ARM_NEON2) + set(HAVE_NEON 1) + if(ARM_NEON) + set(ARM_NEON_FLAGS "-mfpu=neon -DARM_NEON") + else(ARM_NEON) + set(ARM_NEON_FLAGS "-march=armv8-a+simd -DARCH_AARCH64 -DARM_NEON") + endif(ARM_NEON) +else(ARM_NEON OR ARM_NEON2) + message(STATUS "Skipping target ec_jerasure_neon & ec_shec_neon: Architecture not ARM") +endif(ARM_NEON OR ARM_NEON2) + +if(INTEL_SSE) + set(HAVE_SSE 1) + set(SSE3_FLAGS "-msse") + if (INTEL_SSE2) + set(HAVE_SSE2 1) + set(SSE3_FLAGS "${SSE3_FLAGS} -msse2") + endif (INTEL_SSE2) + if (INTEL_SSE3) + set(SSE3_FLAGS "${SSE3_FLAGS} -msse3") + endif (INTEL_SSE3) + if (INTEL_SSSE3) + set(SSE3_FLAGS "${SSE3_FLAGS} -mssse3") + endif (INTEL_SSSE3) +else(INTEL_SSE) + message(STATUS "Skipping target ec_jerasure_sse3 & ec_shec_sse3: -msse not supported") +endif(INTEL_SSE) + +if(INTEL_SSE4_1) + set(SSE4_FLAGS "${SSE3_FLAGS} -msse4.1") + if (INTEL_SSE4_2) + set(SSE4_FLAGS "${SSE4_FLAGS} -msse4.2") + endif (INTEL_SSE4_2) +else(INTEL_SSE4_1) + message(STATUS "Skipping target ec_jerasure_sse4 & ec_shec_sse4: -msse4.1 not supported") +endif(INTEL_SSE4_1) + set(EXTRALIBS uuid rt dl ${ATOMIC_OPS_LIBRARIES}) @@ -94,6 +163,16 @@ if(${WITH_PROFILER}) list(APPEND EXTRALIBS profiler) endif(${WITH_PROFILER}) +if(${ENABLE_COVERAGE}) + find_program(HAVE_GCOV gcov) + if(NOT HAVE_GCOV) + message(FATAL_ERROR "Coverage Enabled but gcov Not Found") + endif(NOT HAVE_GCOV) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage -O0") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage") + list(APPEND EXTRALIBS gcov) +endif(${ENABLE_COVERAGE}) + if(USE_NSS) if(NSS_FOUND) if(NSPR_FOUND) @@ -381,6 +460,12 @@ if(${HAVE_GPERFTOOLS}) target_link_libraries(common profiler) endif(${HAVE_GPERFTOOLS}) +if(${HAVE_ARMV8_CRC}) + add_library(common_crc_aarch64 STATIC common/crc32c_aarch64.c) + set_target_properties(common_crc_aarch64 PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} ${ARM_CRC_FLAGS}") + target_link_libraries(common common_crc_aarch64) +endif(${HAVE_ARMV8_CRC}) + add_library(common_utf8 STATIC common/utf8.c) target_link_libraries(common json_spirit common_utf8 erasure_code rt uuid ${CRYPTO_LIBS} ${Boost_LIBRARIES} ${BLKID_LIBRARIES} ${EXECINFO_LIBRARIES}) @@ -646,11 +731,11 @@ add_dependencies(ceph-mon erasure_code_plugins) install(TARGETS ceph-mon DESTINATION bin) # OSD -if(${HAVE_XFS}) +if(${HAVE_LIBXFS}) set(libos_xfs_srcs os/filestore/XfsFileStoreBackend.cc os/fs/XFS.cc) -endif(${HAVE_XFS}) +endif(${HAVE_LIBXFS}) set(libos_srcs os/ObjectStore.cc os/Transaction.cc @@ -1216,10 +1301,6 @@ if(${WITH_RADOSGW}) cls_log_client cls_statelog_client cls_timeindex_client cls_version_client cls_replica_log_client cls_user_client curl global expat) - if(HAVE_BOOST_ASIO_COROUTINE) - target_compile_definitions(rgw_a PUBLIC "HAVE_BOOST_ASIO_COROUTINE") - endif() - set(radosgw_srcs rgw/rgw_fcgi_process.cc rgw/rgw_loadgen_process.cc @@ -1299,6 +1380,12 @@ if(${WITH_RADOSGW}) install(TARGETS radosgw-object-expirer DESTINATION bin) endif(${WITH_RADOSGW}) +# Now create a useable config.h +configure_file( + ${CMAKE_SOURCE_DIR}/src/include/config-h.in.cmake + ${CMAKE_BINARY_DIR}/include/acconfig.h +) + # Everything you need to spin up a cluster with vstart.sh add_custom_target(vstart DEPENDS ceph-osd diff --git a/src/erasure-code/CMakeLists.txt b/src/erasure-code/CMakeLists.txt index 0f406bc441a..0255876ebda 100644 --- a/src/erasure-code/CMakeLists.txt +++ b/src/erasure-code/CMakeLists.txt @@ -1,68 +1,4 @@ ## erasure code plugins - -set(erasure_codelibdir ${LIBRARY_OUTPUT_PATH}/erasure-code) - -## detect sse support - -# create a tmp file with an empty main() -set(sse_srcs "${CMAKE_BINARY_DIR}/src/erasure-code/jerasure/tmp_sse.c") -file(WRITE ${sse_srcs} "void main() {}") - -# try each -msse flag -try_compile(INTEL_SSE ${CMAKE_BINARY_DIR} ${sse_srcs} - COMPILE_DEFINITIONS "-msse") -try_compile(INTEL_SSE2 ${CMAKE_BINARY_DIR} ${sse_srcs} - COMPILE_DEFINITIONS "-msse2") -try_compile(INTEL_SSE3 ${CMAKE_BINARY_DIR} ${sse_srcs} - COMPILE_DEFINITIONS "-msse3") -try_compile(INTEL_SSSE3 ${CMAKE_BINARY_DIR} ${sse_srcs} - COMPILE_DEFINITIONS "-mssse3") -try_compile(INTEL_SSE4_1 ${CMAKE_BINARY_DIR} ${sse_srcs} - COMPILE_DEFINITIONS "-msse4.1") -try_compile(INTEL_SSE4_2 ${CMAKE_BINARY_DIR} ${sse_srcs} - COMPILE_DEFINITIONS "-msse4.2") -try_compile(ARM_NEON ${CMAKE_BINARY_DIR} ${sse_srcs} - COMPILE_DEFINITIONS "-mfpu=neon") -try_compile(ARM_NEON2 ${CMAKE_BINARY_DIR} ${sse_srcs} - COMPILE_DEFINITIONS "-march=armv8-a+simd") - -# clean up tmp file -file(REMOVE ${sse_srcs}) - -if(ARM_NEON OR ARM_NEON2) - if(ARM_NEON) - set(ARM_NEON_FLAGS "-mfpu=neon") - else(ARM_NEON) - set(ARM_NEON_FLAGS "-march=armv8-a+simd") - endif(ARM_NEON) -else(ARM_NEON OR ARM_NEON2) - message(STATUS "Skipping target ec_jerasure_neon & ec_shec_neon: Architecture not ARM") -endif(ARM_NEON OR ARM_NEON2) - -if(INTEL_SSE) - set(SSE3_FLAGS "-msse") - if (INTEL_SSE2) - set(SSE3_FLAGS "${SSE3_FLAGS} -msse2") - endif (INTEL_SSE2) - if (INTEL_SSE3) - set(SSE3_FLAGS "${SSE3_FLAGS} -msse3") - endif (INTEL_SSE3) - if (INTEL_SSSE3) - set(SSE3_FLAGS "${SSE3_FLAGS} -mssse3") - endif (INTEL_SSSE3) -else(INTEL_SSE) - message(STATUS "Skipping target ec_jerasure_sse3 & ec_shec_sse3: -msse not supported") -endif(INTEL_SSE) - -if(INTEL_SSE4_1) - set(SSE4_FLAGS "${SSE3_FLAGS} -msse4.1") - if (INTEL_SSE4_2) - set(SSE4_FLAGS "${SSE4_FLAGS} -msse4.2") - endif (INTEL_SSE4_2) -else(INTEL_SSE4_1) - message(STATUS "Skipping target ec_jerasure_sse4 & ec_shec_sse4: -msse4.1 not supported") -endif(INTEL_SSE4_1) - #jerasure subdir must be before shec so jerasure & neon obj libs are declared include_directories(jerasure/jerasure/include) include_directories(jerasure/gf-complete/include) diff --git a/src/include/config-h.in.cmake b/src/include/config-h.in.cmake index e908e85f43b..0292f7e8532 100644 --- a/src/include/config-h.in.cmake +++ b/src/include/config-h.in.cmake @@ -4,288 +4,267 @@ #define CONFIG_H /* fallocate(2) is supported */ -#cmakedefine CEPH_HAVE_FALLOCATE +#cmakedefine CEPH_HAVE_FALLOCATE -/* mallinfo(3) is supported */ -#cmakedefine HAVE_MALLINFO +/* Define to 1 if you have the `posix_fadvise' function. */ +#cmakedefine HAVE_POSIX_FADVISE 1 -/* posix_fadvise is supported */ -#cmakedefine HAVE_POSIX_FADVISE +/* Define to 1 if you have the `posix_fallocate' function. */ +#cmakedefine HAVE_POSIX_FALLOCATE 1 -/* posix_fallocate is supported */ -#cmakedefine HAVE_POSIX_FALLOCATE +/* Define to 1 if you have the `syncfs' function. */ +#cmakedefine HAVE_SYS_SYNCFS 1 -/* Define if darwin/osx */ -#cmakedefine DARWIN +/* sync_file_range(2) is supported */ +#cmakedefine HAVE_SYNC_FILE_RANGE -/* Define if you want C_Gather debugging */ -#cmakedefine DEBUG_GATHER +/* Define if you have mallinfo */ +#cmakedefine HAVE_MALLINFO -/* Define if enabling coverage. */ -#cmakedefine ENABLE_COVERAGE +/* Define to 1 if you have the `pwritev' function. */ +#cmakedefine HAVE_PWRITEV 1 -/* FastCGI headers are in /usr/include/fastcgi */ -#cmakedefine FASTCGI_INCLUDE_DIR +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_MOUNT_H 1 -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_ARPA_INET_H 1 +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_PARAM_H 1 -/* have boost::random::discrete_distribution */ -#cmakedefine HAVE_BOOST_RANDOM_DISCRETE_DISTRIBUTION +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TYPES_H 1 -/* Define to 1 if you have the header file, and it defines `DIR'. - */ -#cmakedefine HAVE_DIRENT_H 1 +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_VFS_H 1 -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_DLFCN_H 1 +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_EXECINFO_H 1 -/* linux/fiemap.h was found, fiemap ioctl will be used */ -#cmakedefine HAVE_FIEMAP_H 1 +/* Define to 1 if the system has the type `__be16'. */ +#cmakedefine HAVE___BE16 1 -/* Define to 1 if you have the `fuse_getgroups' function. */ -#cmakedefine HAVE_FUSE_GETGROUPS 1 +/* Define to 1 if the system has the type `__be32'. */ +#cmakedefine HAVE___BE32 1 -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_LINUX_TYPES_H 1 +/* Define to 1 if the system has the type `__be64'. */ +#cmakedefine HAVE___BE64 1 -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_INTTYPES_H 1 +/* Define to 1 if the system has the type `__le16'. */ +#cmakedefine HAVE___LE16 1 -/* Defined if LevelDB supports bloom filters */ -#cmakedefine HAVE_LEVELDB_FILTER_POLICY +/* Define to 1 if the system has the type `__le32'. */ +#cmakedefine HAVE___LE32 1 -/* Defined if you don't have atomic_ops */ -#cmakedefine HAVE_LIBAIO +/* Define to 1 if the system has the type `__le64'. */ +#cmakedefine HAVE___LE64 1 -/* Define to 1 if you have the `boost_system' library (-lboost_system). */ -#cmakedefine HAVE_LIBBOOST_SYSTEM 1 +/* Define to 1 if the system has the type `__s16'. */ +#cmakedefine HAVE___S16 1 -/* Define to 1 if you have the `boost_system-mt' library (-lboost_system-mt). - */ -#cmakedefine HAVE_LIBBOOST_SYSTEM_MT 1 +/* Define to 1 if the system has the type `__s32'. */ +#cmakedefine HAVE___S32 1 -/* Define to 1 if you have the `boost_thread' library (-lboost_thread). */ -#cmakedefine HAVE_LIBBOOST_THREAD 1 +/* Define to 1 if the system has the type `__s64'. */ +#cmakedefine HAVE___S64 1 -/* Define to 1 if you have the `boost_thread-mt' library (-lboost_thread-mt). - */ -#cmakedefine HAVE_LIBBOOST_THREAD_MT 1 +/* Define to 1 if the system has the type `__s8'. */ +#cmakedefine HAVE___S8 1 -/* Define if you have fuse */ -#cmakedefine HAVE_LIBFUSE +/* Define to 1 if the system has the type `__u16'. */ +#cmakedefine HAVE___U16 1 -/* Define to 1 if you have the `profiler' library (-lprofiler). */ -#cmakedefine HAVE_LIBPROFILER 1 +/* Define to 1 if the system has the type `__u32'. */ +#cmakedefine HAVE___U32 1 -/* Define to 1 if you have the `snappy' library (-lsnappy). */ -#cmakedefine HAVE_LIBSNAPPY 1 +/* Define to 1 if the system has the type `__u64'. */ +#cmakedefine HAVE___U64 1 -/* Define if you have jemalloc */ -#cmakedefine HAVE_LIBJEMALLOC - -/* Define if you have tcmalloc */ -#cmakedefine HAVE_LIBTCMALLOC +/* Define to 1 if the system has the type `__u8'. */ +#cmakedefine HAVE___U8 1 -/* Define if you have tcmalloc */ -#cmakedefine HAVE_LIBTCMALLOC_MINIMAL - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_MEMORY_H 1 +/* Define if you have res_nquery */ +#cmakedefine HAVE_RES_NQUERY -/* Define to 1 if you have the header file, and it defines `DIR'. */ -#cmakedefine HAVE_NDIR_H 1 +/* Defined if you don't have atomic_ops */ +#cmakedefine NO_ATOMIC_OPS -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_NETDB_H 1 +/* Defined if you have libaio */ +#cmakedefine HAVE_LIBAIO -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_NETINET_IN_H 1 +/* Defined if OpenLDAP enabled */ +#cmakedefine HAVE_OPENLDAP -/* Define if you have perftools profiler enabled */ -#cmakedefine HAVE_PROFILER +/* Define if you have fuse */ +#cmakedefine HAVE_LIBFUSE -/* Define if you have POSIX threads libraries and header files. */ -#cmakedefine HAVE_PTHREAD +/* Define to 1 if you have libxfs */ +#cmakedefine HAVE_LIBXFS 1 -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STDINT_H 1 +/* SPDK conditional compilation */ +#cmakedefine HAVE_SPDK -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STDLIB_H 1 +/* Defined if LevelDB supports bloom filters */ +#cmakedefine HAVE_LEVELDB_FILTER_POLICY -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STRINGS_H 1 +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_GPERFTOOLS_HEAP_PROFILER_H 1 -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STRING_H 1 +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_GPERFTOOLS_MALLOC_EXTENSION_H 1 -/* Define to 1 if you have the `syncfs' function. */ -#cmakedefine HAVE_SYNCFS 1 +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_GPERFTOOLS_PROFILER_H 1 -/* Define to 1 if you have the `pwritev' function. */ -#cmakedefine HAVE_PWRITEV 1 +/* Define if you have tcmalloc */ +#cmakedefine HAVE_LIBTCMALLOC -/* sync_file_range(2) is supported */ -#cmakedefine HAVE_SYNC_FILE_RANGE +/* Define if you have jemalloc */ +#cmakedefine HAVE_LIBJEMALLOC -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYSLOG_H 1 +/* Define if have curl_multi_wait() */ +#cmakedefine HAVE_CURL_MULTI_WAIT 1 -/* Define to 1 if you have the header file, and it defines `DIR'. - */ -#cmakedefine HAVE_SYS_DIR_H 1 +/* Define if using CryptoPP. */ +#cmakedefine USE_CRYPTOPP -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_FILE_H 1 +/* Define if using NSS. */ +#cmakedefine USE_NSS -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_IOCTL_H 1 +/* Accelio conditional compilation */ +#cmakedefine HAVE_XIO -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_MOUNT_H 1 +/* define if radosgw enabled */ +#cmakedefine WITH_RADOSGW -/* Define to 1 if you have the header file, and it defines `DIR'. - */ -#cmakedefine HAVE_SYS_NDIR_H 1 +/* define if HAVE_THREAD_SAFE_RES_QUERY */ +#cmakedefine HAVE_THREAD_SAFE_RES_QUERY -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_PARAM_H 1 +/* define if HAVE_REENTRANT_STRSIGNAL */ +#cmakedefine HAVE_REENTRANT_STRSIGNAL -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_SOCKET_H 1 +/* Define if you want to use LTTng */ +#cmakedefine WITH_LTTNG -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_STATVFS_H 1 +/* Define if you want to use Babeltrace */ +#cmakedefine WITH_BABELTRACE -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_STAT_H 1 +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_BABELTRACE_BABELTRACE_H 1 -/* we have syncfs */ -#cmakedefine HAVE_SYS_SYNCFS +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_BABELTRACE_CTF_EVENTS_H 1 -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_TIME_H 1 +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_BABELTRACE_CTF_ITERATOR_H 1 -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_TYPES_H 1 +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_ARPA_NAMESER_COMPAT_H 1 -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_VFS_H 1 +/* FastCGI headers are in /usr/include/fastcgi */ +#cmakedefine FASTCGI_INCLUDE_DIR -/* Define to 1 if you have that is POSIX.1 compatible. */ -#ifndef HAVE_SYS_WAIT_H -#cmakedefine HAVE_SYS_WAIT_H -#endif +/* splice(2) is supported */ +#cmakedefine CEPH_HAVE_SPLICE -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_XATTR_H +/* Define if you want C_Gather debugging */ +#cmakedefine DEBUG_GATHER -#ifndef HAVE_UNISTD_H -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_UNISTD_H -#endif +/* Define to 1 if you have the `getgrouplist' function. */ +#cmakedefine HAVE_GETGROUPLIST 1 -#ifndef HAVE_UTIME_H -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_UTIME_H -#endif +/* LTTng is disabled, so define this macro to be nothing. */ +#cmakedefine tracepoint -/* Define if you have the header file. */ -#cmakedefine HAVE_EXECINFO_H +/* have boost::asio::coroutine */ +#cmakedefine HAVE_BOOST_ASIO_COROUTINE -/* Define to 1 if strerror_r returns char *. */ -#cmakedefine STRERROR_R_CHAR_P 1 +/* Define to 1 if you have fdatasync. */ +#cmakedefine HAVE_FDATASYNC 1 -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ -#cmakedefine LT_OBJDIR +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_INTTYPES_H 1 -/* Defined if you do not have atomic_ops */ -#cmakedefine NO_ATOMIC_OPS +/* Defined if you have librocksdb enabled */ +#cmakedefine HAVE_LIBROCKSDB -/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -#cmakedefine NO_MINUS_C_MINUS_O +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_VALGRIND_HELGRIND_H 1 -/* Name of package */ -#cmakedefine PACKAGE +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDINT_H 1 -/* Define to the address where bug reports for this package should be sent. */ -#cmakedefine PACKAGE_BUGREPORT +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_PRCTL_H 1 -/* Define to the full name of this package. */ -#cmakedefine PACKAGE_NAME +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LINUX_TYPES_H 1 -/* Define to the full name and version of this package. */ -#cmakedefine PACKAGE_STRING +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LINUX_VERSION_H 1 -/* Define to the one symbol short name of this package. */ -#cmakedefine PACKAGE_TARNAME +/* Define to 1 if you have sched.h. */ +#cmakedefine HAVE_SCHED 1 -/* Define to the home page for this package. */ -#cmakedefine PACKAGE_URL +/* Support SSE (Streaming SIMD Extensions) instructions */ +#cmakedefine HAVE_SSE -/* Define to the version of this package. */ -#cmakedefine PACKAGE_VERSION +/* Support SSE2 (Streaming SIMD Extensions 2) instructions */ +#cmakedefine HAVE_SSE2 -/* Defined if you want pg ref debugging */ -#cmakedefine PG_DEBUG_REFS +/* Define to 1 if you have the `pipe2' function. */ +#cmakedefine HAVE_PIPE2 1 -/* Define to necessary symbol if this constant uses a non-standard name on - your system. */ -#cmakedefine PTHREAD_CREATE_JOINABLE +/* Support NEON instructions */ +#cmakedefine HAVE_NEON -/* Define to 1 if you have the ANSI C header files. */ -#cmakedefine STDC_HEADERS +/* Define if you have pthread_spin_init */ +#cmakedefine HAVE_PTHREAD_SPINLOCK -/* Define if using CryptoPP. */ -#cmakedefine USE_CRYPTOPP +/* name_to_handle_at exists */ +#cmakedefine HAVE_NAME_TO_HANDLE_AT -/* Define if using NSS. */ -#cmakedefine USE_NSS +/* we have a recent yasm and are x86_64 */ +#cmakedefine HAVE_GOOD_YASM_ELF64 -/* Version number of package */ -#cmakedefine VERSION "@VERSION@" +/* yasm can also build the isa-l */ +#cmakedefine HAVE_BETTER_YASM_ELF64 -/* define if radosgw enabled */ -#cmakedefine WITH_RADOSGW +/* Define to 1 if strerror_r returns char *. */ +#cmakedefine STRERROR_R_CHAR_P 1 -/* Defined if XIO */ -#cmakedefine HAVE_XIO +/* Defined if you have libzfs enabled */ +#cmakedefine HAVE_LIBZFS -/* Defined if LTTNG */ -#cmakedefine WITH_LTTNG 1 +/* Define if the C complier supports __func__ */ +#cmakedefine HAVE_FUNC -/* Defined if Babeltrace */ -#cmakedefine WITH_BABELTRACE 1 +/* Define if the C complier supports __PRETTY_FUNCTION__ */ +#cmakedefine HAVE_PRETTY_FUNC -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_BABELTRACE_BABELTRACE_H 1 +/* F_SETPIPE_SZ is supported */ +#cmakedefine CEPH_HAVE_SETPIPE_SZ -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_BABELTRACE_CTF_EVENTS_H 1 +/* Have eventfd extension. */ +#cmakedefine HAVE_EVENTFD -/* Defined if you have librocksdb enabled */ -#cmakedefine HAVE_LIBROCKSDB +/* Define if enabling coverage. */ +#cmakedefine ENABLE_COVERAGE -/* Defined if new gperftools */ -#cmakedefine HAVE_GPERFTOOLS_HEAP_PROFILER_H -#cmakedefine HAVE_GPERFTOOLS_MALLOC_EXTENSION_H -#cmakedefine HAVE_GPERFTOOLS_PROFILER_H +/* Defined if you want pg ref debugging */ +#cmakedefine PG_DEBUG_REFS -/* res_nquery is supported */ -#cmakedefine HAVE_RES_NQUERY +/* Support ARMv8 CRC instructions */ +#cmakedefine HAVE_ARMV8_CRC -/* res_query is thread safe */ -#cmakedefine HAVE_THREAD_SAFE_RES_QUERY +/* Define if you have struct stat.st_mtimespec.tv_nsec */ +#cmakedefine HAVE_STAT_ST_MTIMESPEC_TV_NSEC -/* Define if HAVE_REENTRANT_STRSIGNAL */ -#cmakedefine HAVE_REENTRANT_STRSIGNAL +/* Define if you have struct stat.st_mtim.tv_nsec */ +#cmakedefine HAVE_STAT_ST_MTIM_TV_NSEC -/* Defined if curl headers define curl_multi_wait() */ -#cmakedefine HAVE_CURL_MULTI_WAIT 1 +/* Define if compiler supports static_cast<> */ +#cmakedefine HAVE_STATIC_CAST -/* Define if you have spdk */ -#cmakedefine HAVE_SPDK 1 +/* Version number of package */ +#cmakedefine VERSION "@VERSION@" #endif /* CONFIG_H */