]> git.proxmox.com Git - ceph.git/blob - ceph/cmake/modules/BuildFIO.cmake
481f3edf09d228a20a2317df4cf809e5f0526de5
[ceph.git] / ceph / cmake / modules / BuildFIO.cmake
1 function(build_fio)
2 # we use an external project and copy the sources to bin directory to ensure
3 # that object files are built outside of the source tree.
4 include(ExternalProject)
5 if(ALLOCATOR)
6 set(FIO_EXTLIBS EXTLIBS=-l${ALLOCATOR})
7 endif()
8
9 include(FindMake)
10 find_make("MAKE_EXECUTABLE" "make_cmd")
11
12 set(source_dir ${CMAKE_BINARY_DIR}/src/fio)
13 file(MAKE_DIRECTORY ${source_dir})
14 ExternalProject_Add(fio_ext
15 UPDATE_COMMAND "" # this disables rebuild on each run
16 GIT_REPOSITORY "https://github.com/ceph/fio.git"
17 GIT_CONFIG advice.detachedHead=false
18 GIT_SHALLOW 1
19 GIT_TAG "fio-3.27-cxx"
20 SOURCE_DIR ${source_dir}
21 BUILD_IN_SOURCE 1
22 CONFIGURE_COMMAND <SOURCE_DIR>/configure
23 BUILD_COMMAND ${make_cmd} fio EXTFLAGS=-Wno-format-truncation ${FIO_EXTLIBS}
24 INSTALL_COMMAND cp <BINARY_DIR>/fio ${CMAKE_BINARY_DIR}/bin
25 LOG_CONFIGURE ON
26 LOG_BUILD ON
27 LOG_INSTALL ON
28 LOG_MERGED_STDOUTERR ON
29 LOG_OUTPUT_ON_FAILURE ON)
30
31 add_library(fio INTERFACE IMPORTED)
32 add_dependencies(fio fio_ext)
33 set_target_properties(fio PROPERTIES
34 INTERFACE_INCLUDE_DIRECTORIES ${source_dir}
35 INTERFACE_COMPILE_OPTIONS "-include;${source_dir}/config-host.h;$<$<COMPILE_LANGUAGE:C>:-std=gnu99>$<$<COMPILE_LANGUAGE:CXX>:-std=gnu++17>")
36 endfunction()