fmt_VERSION_STRING)
if(fmt_FOUND AND NOT (TARGET fmt::fmt))
- add_library(fmt::fmt UNKNOWN IMPORTED)
- set_target_properties(fmt::fmt PROPERTIES
+ add_library(fmt-header-only INTERFACE)
+ set_target_properties(fmt-header-only PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${fmt_INCLUDE_DIR}"
+ INTERFACE_COMPILE_DEFINITIONS FMT_HEADER_ONLY=1
+ INTERFACE_COMPILE_FEATURES cxx_std_11)
+
+ add_library(fmt UNKNOWN IMPORTED GLOBAL)
+ set_target_properties(fmt PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${fmt_INCLUDE_DIR}"
+ INTERFACE_COMPILE_FEATURES cxx_std_11
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
IMPORTED_LOCATION "${fmt_LIBRARY}")
+
+ if(WITH_FMT_HEADER_ONLY)
+ # please note, this is different from how upstream defines fmt::fmt.
+ # in order to force 3rd party libraries to link against fmt-header-only if
+ # WITH_FMT_HEADER_ONLY is ON, we have to point fmt::fmt to fmt-header-only
+ # in this case.
+ add_library(fmt::fmt ALIAS fmt-header-only)
+ else()
+ add_library(fmt::fmt ALIAS fmt)
+ endif()
+
endif()
include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/src/xxHash")
include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/src/rapidjson/include")
+option(WITH_FMT_HEADER_ONLY "use header-only version of fmt library" OFF)
find_package(fmt 6.0.0 QUIET)
if(fmt_FOUND)
include_directories(SYSTEM "${fmt_INCLUDE_DIR}")
CHECK_TYPE_SIZE(suseconds_t SUSECONDS_T)
unset(CMAKE_EXTRA_INCLUDE_FILES)
+function(compile_with_fmt target)
+ get_target_property(fmt_compile_definitions
+ fmt::fmt INTERFACE_COMPILE_DEFINITIONS)
+ if(fmt_compile_definitions)
+ target_compile_definitions(${target} PUBLIC
+ ${fmt_compile_definitions})
+ endif()
+endfunction()
+
set(libcommon_files
${CMAKE_BINARY_DIR}/src/include/ceph_ver.h
ceph_ver.c
set_source_files_properties(ceph_ver.c
APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_BINARY_DIR}/src/include/ceph_ver.h)
add_library(common-objs OBJECT ${libcommon_files})
+compile_with_fmt(common-objs)
add_dependencies(common-objs legacy-option-headers)
if(WITH_JAEGER)
"CMAKE_INSTALL_LIBDIR=\"${CMAKE_INSTALL_LIBDIR}\""
"CEPH_INSTALL_FULL_PKGLIBDIR=\"${CEPH_INSTALL_FULL_PKGLIBDIR}\""
"CEPH_INSTALL_DATADIR=\"${CEPH_INSTALL_DATADIR}\"")
+compile_with_fmt(common-common-objs)
add_dependencies(common-common-objs legacy-option-headers)
set(common_mountcephfs_srcs
add_library(mon STATIC
${lib_mon_srcs})
-target_link_libraries(mon kv heap_profiler)
+target_link_libraries(mon
+ kv
+ heap_profiler
+ fmt::fmt)
if(WITH_JAEGER)
target_link_libraries(mon jaeger-base)
endif()
endif()
add_library(common-msg-objs OBJECT ${msg_srcs})
+compile_with_fmt(common-msg-objs)
target_include_directories(common-msg-objs PRIVATE ${OPENSSL_INCLUDE_DIR})
if(WITH_DPDK)
add_library(neorados_objs OBJECT
RADOSImpl.cc)
+compile_with_fmt(neorados_objs)
add_library(neorados_api_obj OBJECT
RADOS.cc)
+compile_with_fmt(neorados_api_obj)
add_library(libneorados STATIC
$<TARGET_OBJECTS:neorados_api_obj>
add_library(osd STATIC ${osd_srcs})
target_link_libraries(osd
PUBLIC dmclock::dmclock Boost::MPL
- PRIVATE os heap_profiler cpu_profiler ${CMAKE_DL_LIBS})
+ PRIVATE os heap_profiler cpu_profiler fmt::fmt ${CMAKE_DL_LIBS})
if(WITH_LTTNG)
add_dependencies(osd osd-tp pg-tp)
endif()
set(neorados_srcs
neorados.cc)
add_executable(neorados ${neorados_srcs})
- target_link_libraries(neorados libneorados spawn ${CMAKE_DL_LIBS})
+ target_link_libraries(neorados libneorados spawn fmt::fmt ${CMAKE_DL_LIBS})
#install(TARGETS neorados DESTINATION bin)
endif()