root/software/read_test/cmake/liburing.cmake @ f12339cf
| f12339cf | david.sorber | #
|
|
# hwloc: https://github.com/axboe/liburing
|
|||
#
|
|||
SET(LIBURING_PREFIX ${CMAKE_BINARY_DIR}/liburing)
|
|||
# BIG NOTE: the "EXTERNAL_SOURCE_DIR" variable is used below to point to
|
|||
# the "external" directory. It must be set appropriately before this cmake file
|
|||
# is included or it will default to CMAKE_SOURCE_DIR.
|
|||
IF(NOT DEFINED EXTERNAL_SOURCE_DIR)
|
|||
SET(EXTERNAL_SOURCE_DIR ${CMAKE_SOURCE_DIR})
|
|||
ENDIF()
|
|||
IF(NOT DEFINED COMPILE_FLAGS)
|
|||
SET(COMPILE_FLAGS "-O3 -flto -march=haswell -mtune=generic")
|
|||
MESSAGE(STATUS "SETTING COMPILE_FLAGS")
|
|||
ENDIF()
|
|||
# Get number of for use in the BUILD_COMMAND below
|
|||
INCLUDE(ProcessorCount)
|
|||
ProcessorCount(N)
|
|||
SET(liburing_static_lib ${LIBURING_PREFIX}/lib/liburing.a)
|
|||
ExternalProject_Add(liburing_local
|
|||
PREFIX ${LIBURING_PREFIX}
|
|||
DOWNLOAD_COMMAND "" # fake this out since we already have the source
|
|||
SOURCE_DIR ${EXTERNAL_SOURCE_DIR}/external/liburing
|
|||
BINARY_DIR ${LIBURING_PREFIX}/src/liburing-build
|
|||
INSTALL_DIR ${LIBURING_PREFIX}
|
|||
# Bit of a hack... copy source into the build directory and build there
|
|||
# since autotools does not support out of tree builds. Also compile the
|
|||
# static lib with -fPIC so it can be linked in the shared objects.
|
|||
#CONFIGURE_COMMAND sh -c "rsync -r ${EXTERNAL_SOURCE_DIR}/external/liburing/ ${LIBURING_PREFIX}/src/liburing-build && cd ${LIBURING_PREFIX}/src/liburing-build && autoreconf -f -i && AR=gcc-ar RANLIB=gcc-ranlib CFLAGS=\"-fPIC ${COMPILE_FLAGS}\" CXXFLAGS=\"-fPIC ${COMPILE_FLAGS}\" ${LIBURING_PREFIX}/src/hwloc-build/configure --with-pic --prefix=${LIBURING_PREFIX} --enable-shared=no --enable-static=yes --disable-opencl --disable-libxml2 --disable-cairo --disable-io"
|
|||
CONFIGURE_COMMAND sh -c "rsync -r ${EXTERNAL_SOURCE_DIR}/external/liburing/ ${LIBURING_PREFIX}/src/liburing-build && cd ${LIBURING_PREFIX}/src/liburing-build && ${LIBURING_PREFIX}/src/liburing-build/configure --prefix=${LIBURING_PREFIX} "
|
|||
BUILD_COMMAND make -j${N}
|
|||
INSTALL_COMMAND make install # install to directory ${CMAKE_BINARY_DIR}
|
|||
BUILD_BYPRODUCTS ${liburing_static_lib}
|
|||
)
|
|||
INCLUDE_DIRECTORIES(${LIBURING_PREFIX}/src/liburing-build/include)
|
|||
SET_SOURCE_FILES_PROPERTIES(
|
|||
${liburing_static_lib} PROPERTIES
|
|||
EXTERNAL_OBJECT TRUE # Identifies this as an object file (static lib)
|
|||
GENERATED TRUE # Avoids need for file to exist at configure-time
|
|||
)
|