diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 95c0b5d..d5c330e 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -25,27 +25,31 @@ jobs: - { name: "Ubuntu Latest gcc", os: ubuntu-latest, - cc: "gcc", - cxx: "g++", - flags: "-Wall -Werror -Wextra -Wpedantic -Wcast-align -Wnon-virtual-dtor -Woverloaded-virtual -Wunused" + cmake-preset: gcc-release } - { name: "Ubuntu Latest clang", os: ubuntu-latest, - cc: "clang", - cxx: "clang++", - flags: "-Wall -Werror -Wextra -Wpedantic -Wcast-align -Wnon-virtual-dtor -Woverloaded-virtual -Wunused" + cmake-preset: clang-release } - { name: "Windows Latest MSVC", os: windows-latest, - cc: "cl", - cxx: "cl", - flags: "/EHsc /W4 /WX" + cmake-preset: msvc-release } steps: - - uses: actions/checkout@v3 + - name: Install ninja (Windows) + if: matrix.config.os == 'windows-latest' + run: choco install ninja + - name: Install ninja (Linux) + if: matrix.config.os == 'ubuntu-latest' + run: sudo apt install ninja-build + - uses: actions/checkout@v4 + + - uses: rui314/setup-mold@v1 + - uses: hendrikmuhs/ccache-action@v1.2 + - uses: ilammy/msvc-dev-cmd@v1 - name: Configure CMake run: cmake -B ${{github.workspace}}/build -DENABLE_TESTS=ON -DCMAKE_CXX_FLAGS="${{ matrix.config.flags }}" diff --git a/CMakeLists.txt b/CMakeLists.txt index 282cd1c..376d2eb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,20 +1,19 @@ cmake_minimum_required(VERSION 3.18) -project(figcone_shoal VERSION 1.0.0 DESCRIPTION "shoal parser for figcone library") -include(GNUInstallDirs) +project(figcone_shoal VERSION 1.1.0 DESCRIPTION "shoal parser for figcone library") include(external/seal_lake) -set(INSTALL_FIGCONE_TREE ON) +SealLake_IsInstallEnabled(INSTALL_FIGCONE_TREE ON) SealLake_Import( - figcone_tree 2.0.0 + figcone_tree 2.1.0 GIT_REPOSITORY https://github.com/kamchatka-volcano/figcone_tree.git - GIT_TAG v2.0.0 + GIT_TAG v2.1.0 ) SealLake_Bundle( NAME figcone_shoal_sfun GIT_REPOSITORY https://github.com/kamchatka-volcano/sfun.git - GIT_TAG v5.0.0 + GIT_TAG v5.1.0 TEXT_REPLACEMENTS "namespace sfun" "namespace figcone::shoal::sfun" SFUN_ FIGCONE_SHOAL_SFUN @@ -44,7 +43,7 @@ SealLake_ObjectLibrary( LIBRARIES Microsoft.figcone_shoal_gsl::figcone_shoal_gsl figcone_shoal_sfun::figcone_shoal_sfun INTERFACE_LIBRARIES figcone::figcone_tree DEPENDENCIES - figcone_tree 2.0.0 + figcone_tree 2.1.0 ) -SealLake_OptionalBuildSteps(tests) \ No newline at end of file +SealLake_OptionalSubProjects(tests) \ No newline at end of file diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 0000000..7b37b20 --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,123 @@ +{ + "version": 6, + "configurePresets": [ + { + "name": "base-linux", + "hidden": true, + "displayName": "linux base preset", + "generator": "Ninja", + "binaryDir": "build-${presetName}", + "cacheVariables": { + "CMAKE_EXE_LINKER_FLAGS": "-fuse-ld=mold", + "CMAKE_CXX_COMPILER_LAUNCHER": "ccache", + "CPM_SOURCE_CACHE": "cpm_cache" + } + }, + { + "name": "clang-base", + "hidden": true, + "displayName": "clang base preset", + "inherits": "base-linux", + "cacheVariables": { + "CMAKE_CXX_COMPILER": "clang++", + "CMAKE_C_COMPILER": "clang", + "CMAKE_CXX_FLAGS": "-Wall -Wextra -Wpedantic -Werror -Wcast-align -Wnon-virtual-dtor -Woverloaded-virtual -Wunused" + } + }, + { + "name": "clang-debug", + "displayName": "clang (Debug)", + "inherits": "clang-base", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + } + }, + { + "name": "clang-release", + "displayName": "clang (Release)", + "inherits": "clang-base", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release" + } + }, + { + "name": "gcc-base", + "hidden": true, + "displayName": "gcc base preset", + "inherits": "base-linux", + "cacheVariables": { + "CMAKE_CXX_COMPILER": "g++", + "CMAKE_C_COMPILER": "gcc", + "CMAKE_CXX_FLAGS": "-Wall -Wextra -Wpedantic -Werror -Wcast-align -Wnon-virtual-dtor -Woverloaded-virtual -Wunused" + } + }, + { + "name": "gcc-debug", + "displayName": "gcc (Debug)", + "inherits": "gcc-base", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + } + }, + { + "name": "gcc-release", + "displayName": "gcc (Release)", + "inherits": "gcc-base", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release" + } + }, + { + "name": "base-windows", + "displayName": "windows base preset", + "hidden": true, + "generator": "Ninja", + "binaryDir": "build-${presetName}", + "architecture": { + "value": "x64", + "strategy": "external" + }, + "cacheVariables": { + "CPM_SOURCE_CACHE": "cpm_cache", + "CMAKE_CXX_COMPILER_LAUNCHER": "ccache" + }, + "vendor": { + "microsoft.com/VisualStudioSettings/CMake/1.0": { + "hostOS": [ + "Windows" + ] + }, + "jetbrains.com/clion": { + "toolchain": "Visual Studio" + } + } + }, + { + "name": "msvc-base", + "hidden": true, + "displayName": "msvc base preset", + "inherits": "base-windows", + "cacheVariables": { + "CMAKE_CXX_COMPILER": "cl.exe", + "CMAKE_C_COMPILER": "cl.exe", + "CMAKE_CXX_FLAGS": "/EHsc /W4 /WX /wd4267" + } + }, + { + "name": "msvc-debug", + "displayName": "msvc (Debug)", + "inherits": "msvc-base", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + } + }, + { + "name": "msvc-release", + "displayName": "msvc (Release)", + "inherits": "msvc-base", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release" + } + } + ] +} \ No newline at end of file diff --git a/external/seal_lake b/external/seal_lake index a2a0479..3a5449a 100644 --- a/external/seal_lake +++ b/external/seal_lake @@ -2,7 +2,7 @@ include(FetchContent) Set(FETCHCONTENT_QUIET FALSE) FetchContent_Declare(seal_lake GIT_REPOSITORY "https://github.com/kamchatka-volcano/seal_lake.git" - GIT_TAG "origin/master" + GIT_TAG v0.2.0 ) FetchContent_MakeAvailable(seal_lake) include(${seal_lake_SOURCE_DIR}/seal_lake.cmake) \ No newline at end of file