Verified Commit edab12e5 authored by Alberto Miranda's avatar Alberto Miranda ♨️
Browse files

Add support for CMake Presets

Makes project configuration simpler.

Reference: https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html
parent 7fe3ab07
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -86,4 +86,8 @@ playground
.hidden_playground/
test/build/
build/
builds/
.run/

# Allow users to provide their own CMake presets
CMakeUserPresets.json
+6 −42
Original line number Diff line number Diff line
@@ -55,23 +55,8 @@ gkfs:
    - sed -i 's/constexpr auto use_mtime = false;/constexpr auto use_mtime = true;/g' "${CI_PROJECT_DIR}/include/config.hpp"
    - sed -i 's/constexpr auto use_link_cnt = false;/constexpr auto use_link_cnt = true;/g' "${CI_PROJECT_DIR}/include/config.hpp"
    - sed -i 's/constexpr auto use_blocks = false;/constexpr auto use_blocks = true;/g' "${CI_PROJECT_DIR}/include/config.hpp"
    - mkdir -p ${BUILD_PATH} && cd ${BUILD_PATH}
    - cmake
      -Wdev
      -Wdeprecate
      -DCMAKE_BUILD_TYPE=Debug
      -DGKFS_ENABLE_CODE_COVERAGE:BOOL=ON
      -DGKFS_BUILD_TESTS:BOOL=ON
      -DGKFS_INSTALL_TESTS:BOOL=ON
      -DCMAKE_INSTALL_PREFIX=${INSTALL_PATH}
      -DGKFS_USE_GUIDED_DISTRIBUTION:BOOL=ON
      -DGKFS_ENABLE_PARALLAX:BOOL=ON
      -DGKFS_ENABLE_ROCKSDB:BOOL=ON
      -DGKFS_CHUNK_STATS:BOOL=ON
      -DGKFS_ENABLE_PROMETHEUS:BOOL=ON
      -DGKFS_RENAME_SUPPORT:BOOL=ON
      ${CI_PROJECT_DIR}
    - make -j$(nproc) install
    - cmake --preset ci-coverage
    - cmake --build ${BUILD_PATH} -j $(nproc) --target install
    # reduce artifacts size
    - ${CI_SCRIPTS_DIR}/trim_build_artifacts.sh ${BUILD_PATH}
  artifacts:
@@ -86,21 +71,8 @@ gkfwd:
  interruptible: true
  needs: []
  script:
    - mkdir -p ${BUILD_PATH} && cd ${BUILD_PATH}
    - cmake
      -Wdev
      -Wdeprecate
      -DCMAKE_BUILD_TYPE=Debug
      -DGKFS_ENABLE_CODE_COVERAGE:BOOL=ON
      -DGKFS_BUILD_TESTS:BOOL=ON
      -DGKFS_INSTALL_TESTS:BOOL=ON
      -DGKFS_ENABLE_FORWARDING:BOOL=ON
      -DGKFS_ENABLE_AGIOS:BOOL=ON
      -DGKFS_ENABLE_PARALLAX:BOOL=OFF
      -DGKFS_ENABLE_ROCKSDB:BOOL=ON
      -DCMAKE_INSTALL_PREFIX=${INSTALL_PATH}
      ${CI_PROJECT_DIR}
    - make -j$(nproc) install
    - cmake --preset ci-forwarding-debug
    - cmake --build ${BUILD_PATH} -j $(nproc) --target install
    # reduce artifacts size
    - ${CI_SCRIPTS_DIR}/trim_build_artifacts.sh ${BUILD_PATH}
  artifacts:
@@ -270,16 +242,8 @@ documentation:
      when: always

  script:
    - mkdir -p ${BUILD_PATH} && cd ${BUILD_PATH}
    - cmake
      -Wdev
      -Wdeprecate
      -DCMAKE_BUILD_TYPE=Debug
      -DGKFS_BUILD_DOCUMENTATION:BOOL=ON
      -DCMAKE_PREFIX_PATH=${DEPS_INSTALL_PATH}
      -DCMAKE_INSTALL_PREFIX=${INSTALL_PATH}
      ${CI_PROJECT_DIR}
    - make docs
    - cmake --preset ci-docs
    - cmake --build ${BUILD_PATH} --target docs
  artifacts:
    paths:
      - ${BUILD_PATH}/docs

CMakePresets.json

0 → 100644
+199 −0
Original line number Diff line number Diff line
{
  "version": 3,
  "cmakeMinimumRequired": {
    "major": 3,
    "minor": 19,
    "patch": 0
  },
  "configurePresets": [
    {
      "name": "default",
      "displayName": "default",
      "description": "Sets prefix, build, and install directories as well as common options",
      "hidden": true,
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/builds/${presetName}",
      "cacheVariables": {
        "GKFS_ENABLE_ROCKSDB": true,
        "GKFS_ENABLE_PARALLAX": false,
        "GKFS_BUILD_TESTS": true,
        "GKFS_INSTALL_TESTS": true,
        "ENABLE_CLIENT_LOG": true,
        "CLIENT_LOG_MESSAGE_SIZE": "512",
        "SYMLINK_SUPPORT": false
      },
      "warnings": {
        "dev": true,
        "deprecated": true
      }
    },
    {
      "name": "forwarding",
      "inherits": "default",
      "hidden": true,
      "cacheVariables": {
        "GKFS_ENABLE_FORWARDING": true
      }
    },
    {
      "name": "release",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release",
        "CMAKE_CXX_FLAGS": "-DNDEBUG -O3"
      }
    },
    {
      "name": "debug",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_CXX_FLAGS": "-Wall -Wextra -fdiagnostics-color=always --pedantic -Wno-unused-parameter -Wno-missing-field-initializers -DGKFS_DEBUG_BUILD -DHERMES_DEBUG_BUILD"
      }
    },
    {
      "name": "coverage",
      "hidden": true,
      "inherits": "debug",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Coverage",
        "CMAKE_CXX_FLAGS_COVERAGE": "-Og -g --coverage -fkeep-static-functions",
        "CMAKE_C_FLAGS_COVERAGE": "-Og -g --coverage -fkeep-static-functions",
        "CMAKE_EXE_LINKER_FLAGS_COVERAGE": "--coverage",
        "CMAKE_SHARED_LINKER_FLAGS_COVERAGE": "--coverage",
        "CMAKE_MAP_IMPORTED_CONFIG_COVERAGE": "Coverage;RelWithDebInfo;Release;Debug;",
        "GKFS_GENERATE_COVERAGE_REPORTS": true
      }
    },
    {
      "name": "docs",
      "inherits": "debug",
      "cacheVariables": {
        "GKFS_BUILD_DOCUMENTATION": true
      }
    },
    {
      "name": "ci",
      "hidden": true,
      "binaryDir": "${sourceDir}/gkfs/build",
      "cacheVariables": {
        "CMAKE_INSTALL_PREFIX": "${sourceDir}/gkfs/install",
        "GKFS_USE_GUIDED_DISTRIBUTION": true,
        "GKFS_ENABLE_PARALLAX": true,
        "GKFS_CHUNK_STATS": true,
        "GKFS_ENABLE_PROMETHEUS": true,
        "GKFS_RENAME_SUPPORT": true
      }
    },
    {
      "name": "default-debug",
      "displayName": "Default gekkofs (debug)",
      "inherits": [
        "default",
        "debug"
      ]
    },
    {
      "name": "default-coverage",
      "displayName": "Default gekkofs (coverage)",
      "inherits": [
        "default",
        "coverage"
      ]
    },
    {
      "name": "default-release",
      "displayName": "Default gekkofs (release)",
      "inherits": [
        "default",
        "release"
      ]
    },
    {
      "name": "forwarding-debug",
      "displayName": "Forwarding gekkofs (debug)",
      "inherits": [
        "forwarding",
        "debug"
      ]
    },
    {
      "name": "forwarding-coverage",
      "displayName": "Forwarding gekkofs (coverage)",
      "inherits": [
        "forwarding",
        "coverage"
      ]
    },
    {
      "name": "forwarding-release",
      "displayName": "Forwarding gekkofs (release)",
      "inherits": [
        "forwarding",
        "release"
      ]
    },
    {
      "name": "ci-debug",
      "displayName": "Default gekkofs (debug, CI flags)",
      "inherits": [
        "ci",
        "default",
        "debug"
      ]
    },
    {
      "name": "ci-coverage",
      "displayName": "Default gekkofs (coverage, CI flags)",
      "inherits": [
        "ci",
        "default",
        "coverage"
      ]
    },
    {
      "name": "ci-docs",
      "displayName": "Documentation (CI flags)",
      "inherits": "ci-debug",
      "cacheVariables": {
        "GKFS_BUILD_DOCUMENTATION": true
      }
    },
    {
      "name": "ci-release",
      "displayName": "Default gekkofs (release, CI flags)",
      "inherits": [
        "ci",
        "default",
        "release"
      ]
    },
    {
      "name": "ci-forwarding-debug",
      "displayName": "Forwarding gekkofs (debug, CI flags)",
      "inherits": [
        "ci",
        "forwarding",
        "debug"
      ]
    },
    {
      "name": "ci-forwarding-coverage",
      "displayName": "Forwarding gekkofs (coverage, CI flags)",
      "inherits": [
        "ci",
        "forwarding",
        "coverage"
      ]
    },
    {
      "name": "ci-forwarding-release",
      "displayName": "Forwarding gekkofs (release, CI flags)",
      "inherits": [
        "ci",
        "forwarding",
        "release"
      ]
    }
  ]
}