if(CMAKE_CXX_COMPILER_ID STREQUAL GNU)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -rdynamic")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wstrict-null-sentinel -Woverloaded-virtual")
- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
+ if(NOT WITH_OSD_INSTRUMENT_FUNCTIONS)
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
+ endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL Clang)
set(CMAKE_EXE_LINKER_FLAGS "-Wl,-export-dynamic")
set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -rdynamic -Wl,-export-dynamic -export-dynamic")
include(CheckCCompilerFlag)
if(CMAKE_CXX_COMPILER_ID STREQUAL GNU)
- CHECK_C_COMPILER_FLAG("-Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2" HAS_FORTIFY_SOURCE)
+ CHECK_C_COMPILER_FLAG("-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2" HAS_FORTIFY_SOURCE)
if(NOT CMAKE_BUILD_TYPE STREQUAL Debug)
if(HAS_FORTIFY_SOURCE)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2")
- set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2")
+ set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2")
endif()
endif()
CHECK_C_COMPILER_FLAG(-fstack-protector-strong HAS_STACK_PROTECT)
endif()
execute_process(
- COMMAND yasm -f elf64 ${CMAKE_SOURCE_DIR}/src/common/crc32c_intel_fast_asm.S -o /dev/null
+ COMMAND yasm -f elf64 ${CMAKE_SOURCE_DIR}/src/common/crc32c_intel_fast_asm.s -o /dev/null
RESULT_VARIABLE no_yasm
OUTPUT_QUIET)
if(no_yasm)
message(STATUS " we are not x32")
set(HAVE_GOOD_YASM_ELF64 1)
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
+ ${CMAKE_SOURCE_DIR}/src/isa-l/include/
+ ${CMAKE_SOURCE_DIR}/src/isa-l/erasure_code/gf_vect_dot_prod_avx2.asm
-o /dev/null
RESULT_VARIABLE rc
OUTPUT_QUIET)
set(GCOV_PREFIX_STRIP 4)
+# the src/.git_version file may be written out by make-dist; otherwise
+# we pull the git version from .git
option(ENABLE_GIT_VERSION "build Ceph with git version string" ON)
if(${ENABLE_GIT_VERSION})
get_git_head_revision(GIT_REFSPEC CEPH_GIT_VER)
set(CEPH_GIT_NICE_VER "Development")
endif(${ENABLE_GIT_VERSION})
+# the src/ceph_release file is 3 lines,
+# <release number, e.g. '12' for luminous>
+# <release name, e.g. 'luminous'>
+# <release type: 'dev' for x.0.z, 'rc' or x.1.z, or 'stable' or x.2.z>
+# note that the release name is semi-redundant and must match CEPH_RELEASE_*
+# definitions in include/rados.h and common/ceph_strings.c.
+file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/ceph_release CEPH_RELEASE_FILE)
+list(GET CEPH_RELEASE_FILE 0 CEPH_RELEASE)
+list(GET CEPH_RELEASE_FILE 1 CEPH_RELEASE_NAME)
+list(GET CEPH_RELEASE_FILE 2 CEPH_RELEASE_TYPE)
+
option(WITH_OCF "build OCF-compliant cluster resource agent" OFF)
if(WITH_OCF)
add_subdirectory(ocf)
add_subdirectory(json_spirit)
include_directories("${CMAKE_SOURCE_DIR}/src/xxHash")
+include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/src/rapidjson/include")
set(GMOCK_INCLUDE_DIRS
"${CMAKE_SOURCE_DIR}/src/googletest/googletest/include/gmock")
if(HAVE_RDMA)
list(APPEND async_rdma_common_srcs
msg/async/rdma/Infiniband.cc
- msg/async/rdma/Device.cc
msg/async/rdma/RDMAConnectedSocketImpl.cc
- msg/async/rdma/RDMAConnTCP.cc
msg/async/rdma/RDMAServerSocketImpl.cc
msg/async/rdma/RDMAStack.cc)
endif(HAVE_RDMA)
common/TrackedOp.cc
common/SloppyCRCMap.cc
common/types.cc
+ common/iso_8601.cc
log/Log.cc
log/SubsystemMap.cc
mon/MonCap.cc
msg/simple/Accepter.cc
msg/DispatchQueue.cc
msg/Message.cc
+ mon/PGMap.cc
+ mgr/ServiceMap.cc
osd/ECMsgTypes.cc
osd/HitSet.cc
common/RefCountedObj.cc
${async_rdma_common_srcs}
${dpdk_common_srcs}
msg/msg_types.cc
+ common/reverse.c
common/hobject.cc
osd/OSDMap.cc
osd/OSDMapMapping.cc
common/fs_types.cc
common/dns_resolve.cc
common/hostname.cc
+ common/util.cc
arch/probe.cc
${auth_files}
${mds_files})
+if(FREEBSD)
+ list(APPEND libcommon_files common/freebsd_errno.cc)
+elseif(DARWIN)
+ list(APPEND libcommon_files common/darwin_errno.cc)
+elseif(SUN)
+ list(APPEND libcommon_files common/solaris_errno.cc)
+elseif(AIX)
+ list(APPEND libcommon_files common/aix_errno.cc)
+endif()
+
if(HAVE_ARM)
list(APPEND libcommon_files arch/arm.c)
elseif(HAVE_INTEL)
common/crc32c_intel_fast.c)
if(HAVE_GOOD_YASM_ELF64)
list(APPEND libcommon_files
- common/crc32c_intel_fast_asm.S
- common/crc32c_intel_fast_zero_asm.S)
+ common/crc32c_intel_fast_asm.s
+ common/crc32c_intel_fast_zero_asm.s)
endif(HAVE_GOOD_YASM_ELF64)
elseif(HAVE_POWER8)
list(APPEND libcommon_files
common/crc32c_ppc.c
- common/crc32c_ppc_asm.S)
+ common/crc32c_ppc_asm.S
+ common/crc32c_ppc_fast_zero_asm.S)
endif(HAVE_INTEL)
if(LINUX)
list(APPEND libcommon_files common/EventTrace.cc)
endif()
-set(mon_common_files
- auth/AuthSessionHandler.cc
- auth/cephx/CephxSessionHandler.cc
- erasure-code/ErasureCodePlugin.cc)
-add_library(mon_common_objs OBJECT ${mon_common_files})
set(common_mountcephfs_files
common/armor.c
common/safe_io.c
$<TARGET_OBJECTS:crush_objs>)
set(ceph_common_deps
json_spirit erasure_code rt ${LIB_RESOLV}
- ${Boost_THREAD_LIBRARY}
- ${Boost_SYSTEM_LIBRARY}
- ${Boost_REGEX_LIBRARY}
- ${Boost_RANDOM_LIBRARY}
- ${Boost_PROGRAM_OPTIONS_LIBRARY}
- ${Boost_DATE_TIME_LIBRARY}
- ${Boost_IOSTREAMS_LIBRARY}
+ Boost::thread
+ Boost::system
+ Boost::regex
+ Boost::random
+ Boost::program_options
+ Boost::date_time
+ Boost::iostreams
${BLKID_LIBRARIES}
${Backtrace_LIBRARIES}
${BLKIN_LIBRARIES}
add_library(common_utf8 STATIC common/utf8.c)
-target_link_libraries(common json_spirit common_utf8 erasure_code rt uuid resolv ${CRYPTO_LIBS} ${Boost_LIBRARIES} ${BLKID_LIBRARIES} ${EXECINFO_LIBRARIES} ${BLKIN_LIBRARIES})
if(${WITH_LTTNG})
add_subdirectory(tracing)
add_dependencies(common-objs oprequest-tp)
$<TARGET_OBJECTS:heap_profiler_objs>)
target_include_directories(ceph-mgr PRIVATE "${PYTHON_INCLUDE_DIRS}")
target_link_libraries(ceph-mgr osdc client global-static common
- ${Boost_PYTHON_LIBRARY} ${PYTHON_LIBRARIES} ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS} ${ALLOC_LIBS})
+ Boost::python ${PYTHON_LIBRARIES} ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS} ${ALLOC_LIBS})
install(TARGETS ceph-mgr DESTINATION bin)
endif (WITH_MGR)
install(TARGETS ceph-dencoder DESTINATION bin)
# Monitor
-set(common_util_src
- common/util.cc)
-add_library(common_util_obj OBJECT ${common_util_src})
-
add_subdirectory(mon)
set(ceph_mon_srcs
ceph_mon.cc)
set(ceph_osd_srcs
ceph_osd.cc)
-add_executable(ceph-osd ${ceph_osd_srcs}
- $<TARGET_OBJECTS:common_util_obj>)
+add_executable(ceph-osd ${ceph_osd_srcs})
add_dependencies(ceph-osd erasure_code_plugins)
target_link_libraries(ceph-osd osd os global-static common
${BLKID_LIBRARIES} ${RDMA_LIBRARIES})
add_subdirectory(mds)
set(ceph_mds_srcs
ceph_mds.cc)
-add_executable(ceph-mds ${ceph_mds_srcs}
- $<TARGET_OBJECTS:common_util_obj>)
+add_executable(ceph-mds ${ceph_mds_srcs})
target_link_libraries(ceph-mds mds ${CMAKE_DL_LIBS} global-static common
- ${Boost_THREAD_LIBRARY})
+ Boost::thread)
install(TARGETS ceph-mds DESTINATION bin)
add_subdirectory(erasure-code)
add_subdirectory(tools)
-# dmClock
+# dmClock (after gmock)
-add_subdirectory(dmclock) # after gmock
-add_dependencies(tests dmclock-tests dmclock-data-struct-tests)
+add_subdirectory(dmclock/src)
-if(WITH_TESTS)
- install(PROGRAMS
- ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/dmclock-tests
- ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/dmclock-data-struct-tests
- DESTINATION bin)
-endif(WITH_TESTS)
+option(WITH_DMCLOCK_TESTS
+ "enable the build of dmclock-tests and dmclock-data-struct tests binaries"
+ OFF)
+if(WITH_TESTS AND WITH_DMCLOCK_TESTS)
+ # note: add_test is not being called, so dmclock tests aren't part
+ # of ceph tests
+ add_subdirectory(dmclock/test)
+ add_subdirectory(dmclock/support/test)
+endif(WITH_TESTS AND WITH_DMCLOCK_TESTS)
-if(HAVE_INTEL)
+if(HAVE_INTEL AND HAVE_BETTER_YASM_ELF64)
add_subdirectory(crypto/isa-l)
-endif(HAVE_INTEL)
+endif(HAVE_INTEL AND HAVE_BETTER_YASM_ELF64)
if(WITH_TESTS)
install(PROGRAMS
${CMAKE_SOURCE_DIR}/src/ceph-create-keys
# ${CMAKE_SOURCE_DIR}/src/ceph-disk
- ${CMAKE_SOURCE_DIR}/src/ceph-disk-udev
DESTINATION sbin)
add_subdirectory(bash_completion)
install(FILES
sample.ceph.conf
DESTINATION ${CMAKE_INSTALL_DOCDIR})
-install(FILES
- fetch_config
- DESTINATION ${CMAKE_INSTALL_DOCDIR}
- RENAME sample.fetch_config)
# Now create a useable config.h
configure_file(