Commit be7a9eab authored by Marc Vef's avatar Marc Vef
Browse files

Refactoring CMake files for metadata db

parent 14a08713
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -33,19 +33,19 @@ find_library(PARALLAX_LIBRARY
        NAMES parallax
        )

find_library(LOG_LIBRARY
find_library(PARALLAX_LOG_LIBRARY
	NAMES log
	)

set(PARALLAX_INCLUDE_DIRS ${PARALLAX_INCLUDE_DIR})
set(PARALLAX_LIBRARIES ${PARALLAX_LIBRARY})
set(PARALLAX_LIBRARIES ${LOG_LIBRARY})
set(PARALLAX_LIBRARIES ${PARALLAX_LOG_LIBRARY})

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Parallax DEFAULT_MSG PARALLAX_LIBRARY LOG_LIBRARY PARALLAX_INCLUDE_DIR)
find_package_handle_standard_args(Parallax DEFAULT_MSG PARALLAX_LIBRARY PARALLAX_LOG_LIBRARY PARALLAX_INCLUDE_DIR)

mark_as_advanced(
        PARALLAX_LIBRARY
	PARALLAX_INCLUDE_DIR
	LOG_LIBRARY
	PARALLAX_LOG_LIBRARY
)
+0 −2
Original line number Diff line number Diff line
@@ -126,8 +126,6 @@ find_package(Abt REQUIRED)
find_package(Margo REQUIRED)
find_package(Syscall_intercept REQUIRED)
find_package(Threads REQUIRED)
# parallax
find_package(yaml REQUIRED)
# some compilers need extra flags for std::filesystem, such as -lstdc++fs, this
# produces a std::filesystem imported target that takes care of all these
# details transparently
+3 −2
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ pkg_install() {
        -DBUILD_SHARED_LIBS:BOOL=OFF \
        -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
        -DCMAKE_BUILD_TYPE="Release" \
        -DCMAKE_CXX_FLAGS_RELEASE="-Wno-error=unused-result" \
        ..
    make -j"${CORES}"
    make install
+114 −103
Original line number Diff line number Diff line
@@ -26,7 +26,45 @@
# SPDX-License-Identifier: GPL-3.0-or-later                                    #
################################################################################


# Define metadata module library first
add_library(metadata_module STATIC)
target_sources(metadata_module
    PUBLIC
    ${INCLUDE_DIR}/daemon/backend/metadata/metadata_module.hpp
    PRIVATE
    ${CMAKE_CURRENT_LIST_DIR}/metadata_module.cpp
    )
target_link_libraries(metadata_module
    PUBLIC
    spdlog
    )

# Define metadata_db and its common dependencies and sources
add_library(metadata_db STATIC)
set(DB_COMMON_SOURCES
    PUBLIC
    ${INCLUDE_DIR}/daemon/backend/metadata/db.hpp
    ${INCLUDE_DIR}/daemon/backend/exceptions.hpp
    ${INCLUDE_DIR}/daemon/backend/metadata/metadata_backend.hpp
    PRIVATE
    ${INCLUDE_DIR}/daemon/backend/metadata/merge.hpp
    ${CMAKE_CURRENT_LIST_DIR}/merge.cpp
    ${CMAKE_CURRENT_LIST_DIR}/db.cpp
    )
# lib links for all DBs. Extended below for specific DB
set(DB_LINK_LIBRARIES
    PRIVATE
    # Required by RocksDB
    metadata_module
    -ldl
    metadata
    spdlog
    path_util
    )

# When RocksDB is used
if (GKFS_ENABLE_ROCKSDB)
    # If it exists, RocksDB has been build with liburing support.
    # If check succeeds, we need to link with liburing with the daemon
    set(CMAKE_REQUIRED_FLAGS "-luring")
@@ -38,24 +76,12 @@ check_cxx_source_compiles("
          return 0;
        }
        " HAS_LIBURING)
set(liburing "")
    if (HAS_LIBURING)
    set(LIBURING "-luring")
endif()

set(DB_DEFAULT_SOURCES 
    PUBLIC
    ${INCLUDE_DIR}/daemon/backend/metadata/db.hpp
    ${INCLUDE_DIR}/daemon/backend/exceptions.hpp
    ${INCLUDE_DIR}/daemon/backend/metadata/metadata_backend.hpp
    PRIVATE
    ${INCLUDE_DIR}/daemon/backend/metadata/merge.hpp
    ${CMAKE_CURRENT_LIST_DIR}/merge.cpp
    ${CMAKE_CURRENT_LIST_DIR}/db.cpp
        set(DB_LINK_LIBRARIES
            ${DB_LINK_LIBRARIES}
            -luring
            )


if (GKFS_ENABLE_ROCKSDB)
    endif ()
    # Rocksdb dependencies
    find_package(LZ4 REQUIRED)
    find_package(JeMalloc) # required if rocksdb has been build with jemalloc
@@ -68,8 +94,6 @@ if (GKFS_ENABLE_ROCKSDB)
        # rocksdb libs
        ${LZ4_LIBRARIES}
        )


    if (${JeMalloc_FOUND})
        target_link_libraries(RocksDB
            INTERFACE
@@ -81,7 +105,6 @@ if (GKFS_ENABLE_ROCKSDB)
        PROPERTIES
        INTERFACE_INCLUDE_DIRECTORIES ${ROCKSDB_INCLUDE_DIRS}
        )

    set(DB_ROCKSDB_SOURCES
        PUBLIC
        ${INCLUDE_DIR}/daemon/backend/metadata/rocksdb_backend.hpp
@@ -92,10 +115,15 @@ if (GKFS_ENABLE_ROCKSDB)
        PUBLIC
        GKFS_ENABLE_ROCKSDB
        )
      
    set(DB_LINK_LIBRARIES
        ${DB_LINK_LIBRARIES}
        RocksDB
        )
endif ()

# When Parallax is used
if (GKFS_ENABLE_PARALLAX)
    find_package(yaml REQUIRED)
    find_package(Parallax REQUIRED)
    set(DB_PARALLAX_SOURCES
        PUBLIC
@@ -108,39 +136,22 @@ if (GKFS_ENABLE_PARALLAX)
        GKFS_ENABLE_PARALLAX
        )
    add_library(Parallax INTERFACE IMPORTED GLOBAL)
endif()

target_sources(metadata_db 
${DB_DEFAULT_SOURCES} ${DB_PARALLAX_SOURCES} ${DB_ROCKSDB_SOURCES})

add_library(metadata_module
  STATIC
    target_link_libraries(Parallax
        INTERFACE
        ${PARALLAX_LIBRARY}
        ${PARALLAX_LOG_LIBRARY}
        yaml
        )

target_sources(metadata_module
  PUBLIC
    ${INCLUDE_DIR}/daemon/backend/metadata/metadata_module.hpp
  PRIVATE
    ${CMAKE_CURRENT_LIST_DIR}/metadata_module.cpp
    set_target_properties(Parallax
        PROPERTIES
        INTERFACE_INCLUDE_DIRECTORIES ${PARALLAX_INCLUDE_DIRS}
        )

target_link_libraries(metadata_module
  PUBLIC
    spdlog
    set(DB_LINK_LIBRARIES
        ${DB_LINK_LIBRARIES}
        Parallax
        )
endif ()



target_link_libraries(metadata_db
    ${PARALLAX_LIBRARY}
    ${LOG_LIBRARY}
    yaml   
     # Required by RocksDB
    metadata_module
    -ldl
    metadata
    RocksDB
    spdlog
    path_util
    ${LIBURING}
    )
target_sources(metadata_db
    ${DB_COMMON_SOURCES} ${DB_PARALLAX_SOURCES} ${DB_ROCKSDB_SOURCES})
target_link_libraries(metadata_db ${DB_LINK_LIBRARIES})
 No newline at end of file