From c190fee53d23212faf22b26df33346b393e11b8d Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Tue, 23 Mar 2021 15:16:04 +0800 Subject: [PATCH] cmake: pass compile options by fio interface library for better readability and maintainability Signed-off-by: Kefu Chai --- cmake/modules/BuildFIO.cmake | 8 +++++--- src/test/fio/CMakeLists.txt | 24 ------------------------ 2 files changed, 5 insertions(+), 27 deletions(-) diff --git a/cmake/modules/BuildFIO.cmake b/cmake/modules/BuildFIO.cmake index d3288cc33091..6a86300fae14 100644 --- a/cmake/modules/BuildFIO.cmake +++ b/cmake/modules/BuildFIO.cmake @@ -9,14 +9,15 @@ function(build_fio) include(FindMake) find_make("MAKE_EXECUTABLE" "make_cmd") + set(source_dir ${CMAKE_BINARY_DIR}/src/fio) + file(MAKE_DIRECTORY ${source_dir}) ExternalProject_Add(fio_ext - DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/src/ UPDATE_COMMAND "" # this disables rebuild on each run GIT_REPOSITORY "https://github.com/axboe/fio.git" GIT_CONFIG advice.detachedHead=false GIT_SHALLOW 1 GIT_TAG "fio-3.15" - SOURCE_DIR ${CMAKE_BINARY_DIR}/src/fio + SOURCE_DIR ${source_dir} BUILD_IN_SOURCE 1 CONFIGURE_COMMAND /configure BUILD_COMMAND ${make_cmd} fio EXTFLAGS=-Wno-format-truncation ${FIO_EXTLIBS} @@ -25,5 +26,6 @@ function(build_fio) add_library(fio INTERFACE IMPORTED) add_dependencies(fio fio_ext) set_target_properties(fio PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR}/src/fio) + INTERFACE_INCLUDE_DIRECTORIES ${source_dir} + INTERFACE_COMPILE_OPTIONS "-include;${source_dir}/config-host.h;$<$:-std=gnu99>$<$:-std=gnu++17>") endfunction() diff --git a/src/test/fio/CMakeLists.txt b/src/test/fio/CMakeLists.txt index 5f2a51491ea6..60731a0c5ed1 100644 --- a/src/test/fio/CMakeLists.txt +++ b/src/test/fio/CMakeLists.txt @@ -10,30 +10,6 @@ target_link_libraries(fio_ceph_messenger fio) add_library(fio_librgw SHARED fio_librgw.cc) target_link_libraries(fio_librgw rgw fio) -# prevent fio from adding 'typedef int bool' and gettid() -if(HAVE_GETTID) - set(FIO_CFLAGS "-DCONFIG_HAVE_BOOL -DCONFIG_HAVE_GETTID") -else() - set(FIO_CFLAGS "-DCONFIG_HAVE_BOOL") -endif() - -# fio headers use typeof(), which requires c++11 extensions -set_target_properties(fio_ceph_objectstore PROPERTIES - CXX_EXTENSIONS ON - COMPILE_FLAGS "${FIO_CFLAGS}") -set_target_properties(fio_ceph_messenger PROPERTIES - CXX_EXTENSIONS ON - COMPILE_FLAGS "${FIO_CFLAGS}") -set_target_properties(fio_librgw PROPERTIES - CXX_EXTENSIONS ON - COMPILE_FLAGS "${FIO_CFLAGS}") - -if(WITH_FIO) - add_dependencies(fio_ceph_objectstore fio_ext) - add_dependencies(fio_ceph_messenger fio_ext) - add_dependencies(fio_librgw fio_ext) -endif() - target_link_libraries(fio_ceph_objectstore os global) install(TARGETS fio_ceph_objectstore DESTINATION lib) -- 2.47.3