improve constexpr_switch #28
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Install | |
| on: | |
| push: | |
| branches: | |
| - master | |
| - main | |
| pull_request: | |
| branches: | |
| - master | |
| - main | |
| permissions: read-all | |
| jobs: | |
| header-only-ubuntu: | |
| name: Header-only / Ubuntu | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - name: Build and install header-only package | |
| run: | | |
| cmake -S . -B build-install \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DCMAKE_INSTALL_PREFIX="${RUNNER_TEMP}/configured-install" \ | |
| -DMAGIC_ENUM_OPT_BUILD_EXAMPLES=OFF \ | |
| -DMAGIC_ENUM_OPT_BUILD_TESTS=OFF \ | |
| -DMAGIC_ENUM_OPT_VERIFY_INTERFACE_HEADER_SETS=ON | |
| cmake --build build-install \ | |
| --target magic_enum_verify_interface_header_sets \ | |
| --parallel | |
| cmake --install build-install --prefix "${RUNNER_TEMP}/magic_enum" | |
| - name: Test installed CMake package | |
| run: | | |
| cmake -S . -B build-installed-cmake \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DCMAKE_PREFIX_PATH="${RUNNER_TEMP}/magic_enum" \ | |
| -DMAGIC_ENUM_OPT_TEST_INSTALLED_VERSION=ON | |
| cmake --build build-installed-cmake --parallel | |
| ctest --test-dir build-installed-cmake --output-on-failure --no-tests=error | |
| - name: Test installed pkg-config package | |
| run: | | |
| cmake -S . -B build-installed-pkgconfig \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DCMAKE_PREFIX_PATH="${RUNNER_TEMP}/magic_enum" \ | |
| -DMAGIC_ENUM_OPT_TEST_INSTALLED_VERSION_PKGCONFIG=ON | |
| cmake --build build-installed-pkgconfig --parallel | |
| ctest --test-dir build-installed-pkgconfig --output-on-failure --no-tests=error | |
| module-macos-gcc: | |
| name: Module / macOS / GCC 16 / fmt::fmt / C++20 | |
| runs-on: macos-15 | |
| env: | |
| CC: gcc-16 | |
| CXX: g++-16 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - name: Checkout fmt | |
| uses: actions/checkout@v7 | |
| with: | |
| repository: fmtlib/fmt | |
| path: fmt-src | |
| - name: Install GCC 16 and Ninja | |
| env: | |
| CC: clang | |
| CXX: clang++ | |
| run: | | |
| brew install gcc@16 ninja | |
| echo "$(brew --prefix gcc@16)/bin" >> "${GITHUB_PATH}" | |
| - name: Install fmt | |
| run: | | |
| python3 -m pip install cmake==4.4.0 --break-system-packages | |
| cmake -S fmt-src -B build-fmt -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DCMAKE_CXX_COMPILER="${CXX}" \ | |
| -DCMAKE_CXX_STANDARD=20 \ | |
| -DCMAKE_CXX_STANDARD_REQUIRED=ON \ | |
| -DCMAKE_CXX_SCAN_FOR_MODULES=OFF \ | |
| -DCMAKE_INSTALL_PREFIX="${RUNNER_TEMP}/fmt" \ | |
| -DBUILD_SHARED_LIBS=OFF \ | |
| -DFMT_DOC=OFF \ | |
| -DFMT_MODULE=OFF \ | |
| -DFMT_TEST=OFF | |
| cmake --build build-fmt --parallel | |
| cmake --install build-fmt | |
| - name: Build and test installed module package | |
| run: | | |
| fmt_prefix="${RUNNER_TEMP}/fmt" | |
| cmake -S . -B build-module -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DCMAKE_CXX_STANDARD=20 \ | |
| -DCMAKE_CXX_STANDARD_REQUIRED=ON \ | |
| -DCMAKE_CXX_EXTENSIONS=OFF \ | |
| -DCMAKE_PREFIX_PATH="${fmt_prefix}" \ | |
| -DMAGIC_ENUM_USE_MODULES=ON \ | |
| -DMAGIC_ENUM_MODULE_WITH_FMT=ON \ | |
| -DMAGIC_ENUM_OPT_BUILD_TESTS=ON \ | |
| -DMAGIC_ENUM_OPT_BUILD_EXAMPLES=ON | |
| cmake --build build-module \ | |
| --parallel \ | |
| --target \ | |
| magic_enum_module \ | |
| example_module_usage \ | |
| test_module-cpp20 \ | |
| test_module_aliases-cpp20 \ | |
| test_module_wchar_t-cpp20 | |
| cmake --build build-module \ | |
| --target magic_enum_verify_interface_header_sets \ | |
| --parallel | |
| ctest --test-dir build-module \ | |
| --output-on-failure \ | |
| --no-tests=error \ | |
| -R '^(test_module(_aliases|_wchar_t)?-cpp20|installed-module-consumer)$' | |
| module-windows-msvc: | |
| name: Module / Windows / VS 2026 / C++20 | |
| runs-on: windows-2025-vs2026 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: ilammy/msvc-dev-cmd@v1 | |
| - name: Install pinned CMake | |
| shell: pwsh | |
| run: python -m pip install cmake==4.3.4 | |
| - name: Build and test installed module package | |
| shell: pwsh | |
| run: | | |
| cmake -S . -B build-module -G Ninja ` | |
| -DCMAKE_BUILD_TYPE=Release ` | |
| -DCMAKE_CXX_STANDARD=20 ` | |
| -DCMAKE_CXX_STANDARD_REQUIRED=ON ` | |
| -DCMAKE_CXX_EXTENSIONS=OFF ` | |
| -DMAGIC_ENUM_USE_MODULES=ON ` | |
| -DMAGIC_ENUM_OPT_BUILD_TESTS=ON ` | |
| -DMAGIC_ENUM_OPT_BUILD_EXAMPLES=ON | |
| cmake --build build-module --parallel --target ` | |
| magic_enum_module ` | |
| example_module_usage ` | |
| test_module-cpp20 ` | |
| test_module_aliases-cpp20 ` | |
| test_module_wchar_t-cpp20 | |
| cmake --build build-module --parallel --target magic_enum_verify_interface_header_sets | |
| ctest --test-dir build-module --output-on-failure --no-tests=error -R '^(test_module(_aliases|_wchar_t)?-cpp20|installed-module-consumer)$' |