From f210228ae636a95b3cbe3a1928a9c8a92edd4558 Mon Sep 17 00:00:00 2001 From: Simon Gene Gottlieb Date: Wed, 23 Oct 2024 11:33:48 +0200 Subject: [PATCH] feat: using cpm.dependencies --- CMakeLists.txt | 26 ++-------- cpm.dependencies | 71 +++++++++++++++++++++++++++ fmindex_collection-config.cmake | 8 --- src/fmindex-collection/CMakeLists.txt | 4 +- 4 files changed, 75 insertions(+), 34 deletions(-) create mode 100644 cpm.dependencies diff --git a/CMakeLists.txt b/CMakeLists.txt index 57b0ff28..965873d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,15 +3,7 @@ # SPDX-License-Identifier: CC0-1.0 cmake_minimum_required (VERSION 3.25) - -# check if this is the main project -if (NOT DEFINED PROJECT_NAME) - set(ROOT_PROJECT TRUE) -else () - set(ROOT_PROJECT FALSE) -endif () - -project(fmindex-collection LANGUAGES CXX +project(fmindex-collection LANGUAGES CXX C DESCRIPTION "fmindex-collection -- Datastructures and Algorithms for (Bi-)FMIndices and Approximate Pattern Matching") option(FMC_USE_SDSL "Activate occ tables that use SDSL as a backend" ${PROJECT_IS_TOP_LEVEL}) @@ -24,26 +16,14 @@ endif() find_package(OpenMP QUIET) include(cmake/CPM.cmake) +CPMAddPackage("gh:SGSSGene/cpm.dependencies@1.0.0") +CPMLoadDependenciesFile("${CMAKE_CURRENT_SOURCE_DIR}/cpm.dependencies") include(fmindex_collection-config.cmake) if (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM") target_compile_options(libsais PRIVATE -fp-model=strict -fno-strict-aliasing) endif() if (PROJECT_IS_TOP_LEVEL) - CPMAddPackage("gh:fmtlib/fmt#cc2ba8f9ede4e5ae3262f43f3e4d07a22a9acdfc@11.0.2.1") - CPMAddPackage("gh:catchorg/Catch@3.6.0") - CPMAddPackage("gh:SGSSGene/nanobench@4.3.11-2") - set(BUILD_DOC OFF) - set(BUILD_SANDBOX OFF) - set(SKIP_PERFORMANCE_COMPARISON ON) - CPMAddPackage("gh:USCiLab/cereal@1.3.2") - CPMAddPackage("gh:boost-ext/reflect@1.2.2") - if (reflect_ADDED) - add_library(reflect INTERFACE) - target_include_directories(reflect SYSTEM INTERFACE ${reflect_SOURCE_DIR}) - add_library(reflect::reflect ALIAS reflect) - endif() - enable_testing() add_subdirectory(src/test_fmindex-collection) add_subdirectory(src/test_search_schemes) diff --git a/cpm.dependencies b/cpm.dependencies new file mode 100644 index 00000000..d0d82981 --- /dev/null +++ b/cpm.dependencies @@ -0,0 +1,71 @@ +{ + "format_version": "1", + "packages": [ + { + "name": "libsais", + "version": "2.8.5", + "github_repository": "IlyaGrebnov/libsais", + "options": [ + "LIBSAIS_USE_OPENMP ${OpenMP_C_FOUND}", + "LIBSAIS_BUILD_SHARED_LIB OFF" + ] + }, + { + "if": "FMC_USE_SDSL", + "name": "sdsl-lite", + "version": "3.0.3", + "github_repository": "xxsds/sdsl-lite", + "download_only": true, + "cmake_commands": [ + "add_library(sdsl-lite INTERFACE)", + "target_include_directories(sdsl-lite INTERFACE SYSTEM ${CPM_CURRENT_SOURCE_DIR}/include)", + "add_library(sdsl-lite::sdsl-lite ALIAS sdsl-lite)" + ], + "git_tag_ignore": [ + "[Cc]++.*" + ] + }, + { + "if": "PROJECT_IS_TOP_LEVEL", + "name": "fmt", + "version": "11.0.2", + "github_repository": "fmtlib/fmt", + "git_tag": "{VERSION}" + }, + { + "if": "PROJECT_IS_TOP_LEVEL", + "name": "Catch2", + "version": "3.7.1", + "github_repository": "catchorg/Catch2" + }, + { + "if": "PROJECT_IS_TOP_LEVEL", + "name": "nanobench", + "version": "4.3.11", + "github_repository": "martinus/nanobench" + }, + { + "if": "PROJECT_IS_TOP_LEVEL", + "name": "cereal", + "version": "1.3.2", + "github_repository": "USCiLab/cereal", + "options": [ + "BUILD_DOC OFF", + "BUILD_SANDBOX OFF", + "SKIP_PERFORMANCE_COMPARISON ON" + ] + }, + { + "if": "PROJECT_IS_TOP_LEVEL", + "name": "reflect", + "version": "1.2.4", + "github_repository": "boost-ext/reflect", + "cmake_commands": [ + "add_library(reflect INTERFACE)", + "target_include_directories(reflect SYSTEM INTERFACE ${CPM_CURRENT_SOURCE_DIR})", + "target_compile_options(reflect INTERFACE -std=c++20)", + "add_library(reflect::reflect ALIAS reflect)" + ] + } + ] +} diff --git a/fmindex_collection-config.cmake b/fmindex_collection-config.cmake index 9c28c460..ba3aba9e 100644 --- a/fmindex_collection-config.cmake +++ b/fmindex_collection-config.cmake @@ -6,13 +6,5 @@ if (TARGET fmindex-collection::fmindex-collection) return() endif() -set(LIBSAIS_USE_OPENMP ${OpenMP_C_FOUND}) -set(LIBSAIS_BUILD_SHARED_LIB OFF) -CPMAddPackage("gh:IlyaGrebnov/libsais@2.8.5") - -if (FMC_USE_SDSL) - CPMAddPackage("gh:SGSSGene/sdsl-lite@3.0.3-2") -endif() - add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/src/search_schemes ${CMAKE_CURRENT_BINARY_DIR}/search_schemes) add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/src/fmindex-collection ${CMAKE_CURRENT_BINARY_DIR}/fmindex-collection) diff --git a/src/fmindex-collection/CMakeLists.txt b/src/fmindex-collection/CMakeLists.txt index b6970d0c..0fc39ade 100644 --- a/src/fmindex-collection/CMakeLists.txt +++ b/src/fmindex-collection/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-FileCopyrightText: 2006-2023, Knut Reinert & Freie Universität Berlin # SPDX-FileCopyrightText: 2016-2023, Knut Reinert & MPI für molekulare Genetik # SPDX-License-Identifier: CC0-1.0 -cmake_minimum_required (VERSION 3.20) +cmake_minimum_required (VERSION 3.25) project(fmindex-collection) @@ -10,8 +10,6 @@ add_library(${PROJECT_NAME} INTERFACE) target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_20) add_library(fmindex-collection::fmindex-collection ALIAS ${PROJECT_NAME}) -option(FMC_USE_SDSL "Activate occ tables that use SDSL as a backend" ${ROOT_PROJECT}) - target_include_directories(${PROJECT_NAME} INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}