diff --git a/.github/workflows/code-checks.yaml b/.github/workflows/code-checks.yaml index 7b7b28a8..5a9338bf 100644 --- a/.github/workflows/code-checks.yaml +++ b/.github/workflows/code-checks.yaml @@ -6,7 +6,7 @@ jobs: check-includes-are-relative: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - shell : bash run: | cd include diff --git a/.github/workflows/jekyll-gh-pages.yml b/.github/workflows/jekyll-gh-pages.yml index e31d81c5..d2eaa1ea 100644 --- a/.github/workflows/jekyll-gh-pages.yml +++ b/.github/workflows/jekyll-gh-pages.yml @@ -24,6 +24,7 @@ concurrency: jobs: # Build job build: + if: github.repository == 'getml/reflect-cpp' runs-on: ubuntu-latest steps: - name: Checkout @@ -40,6 +41,7 @@ jobs: # Deployment job deploy: + if: github.repository == 'getml/reflect-cpp' environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} diff --git a/.github/workflows/linux-clang-14.yaml b/.github/workflows/linux-clang-14.yaml deleted file mode 100644 index 657719c3..00000000 --- a/.github/workflows/linux-clang-14.yaml +++ /dev/null @@ -1,71 +0,0 @@ -name: linux-clang-14 - -on: [ pull_request ] - -env: - VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" - -jobs: - linux-clang-14: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - submodules: recursive - fetch-depth: 0 - - name: Export GitHub Actions cache environment variables - uses: actions/github-script@v7 - with: - script: | - core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - - name: Run vcpkg - uses: lukka/run-vcpkg@v11 - - uses: KyleMayes/install-llvm-action@v1 - with: - version: "14" - - name: link clang lib - run: | - sudo mkdir -p /usr/lib/llvm-14/lib - sudo ln -s clang /usr/lib/llvm-14/lib/clang - working-directory: ${{ env.LLVM_PATH }}/lib - - name: Compile - env: - CC: clang - CXX: clang++ - run: | - clang --version - cmake -S . -B build -DREFLECTCPP_BUILD_TESTS=ON -DREFLECTCPP_BUILD_BENCHMARKS=ON -DREFLECTCPP_BSON=ON -DREFLECTCPP_CBOR=ON -DREFLECTCPP_FLEXBUFFERS=ON -DREFLECTCPP_MSGPACK=ON -DREFLECTCPP_TOML=ON -DREFLECTCPP_XML=ON -DREFLECTCPP_YAML=ON -DCMAKE_BUILD_TYPE=Release - cmake --build build -j 4 - - name: Run tests - run: | - ./build/tests/bson/reflect-cpp-bson-tests - ./build/tests/cbor/reflect-cpp-cbor-tests - ./build/tests/flexbuffers/reflect-cpp-flexbuffers-tests - ./build/tests/generic/reflect-cpp-generic-tests - ./build/tests/json/reflect-cpp-json-tests - ./build/tests/json_c_arrays_and_inheritance/reflect-cpp-json-c-arrays-and-inheritance-tests - ./build/tests/msgpack/reflect-cpp-msgpack-tests - ./build/tests/toml/reflect-cpp-toml-tests - ./build/tests/xml/reflect-cpp-xml-tests - ./build/tests/yaml/reflect-cpp-yaml-tests - - name: Run benchmarks - run: | - echo '# Benchmarks' >> $GITHUB_STEP_SUMMARY - echo '## Benchmarks across different formats' >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=canada_read >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=canada_write >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=licenses_read >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=licenses_write >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=person_read >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=person_write >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - echo '## Benchmarks for JSON' >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/json/reflect-cpp-json-benchmarks --benchmark_filter=person_read >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/json/reflect-cpp-json-benchmarks --benchmark_filter=canada >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/json/reflect-cpp-json-benchmarks --benchmark_filter=licenses >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - diff --git a/.github/workflows/linux-clang-16.yaml b/.github/workflows/linux-clang-16.yaml deleted file mode 100644 index e01ab758..00000000 --- a/.github/workflows/linux-clang-16.yaml +++ /dev/null @@ -1,71 +0,0 @@ -name: linux-clang-16 - -on: [ pull_request ] - -env: - VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" - -jobs: - linux-clang-16: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - submodules: recursive - fetch-depth: 0 - - name: Export GitHub Actions cache environment variables - uses: actions/github-script@v7 - with: - script: | - core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - - name: Run vcpkg - uses: lukka/run-vcpkg@v11 - - uses: KyleMayes/install-llvm-action@v1 - with: - version: "16" - - name: link clang lib - run: | - sudo mkdir -p /usr/lib/llvm-16/lib - sudo ln -s clang /usr/lib/llvm-16/lib/clang - working-directory: ${{ env.LLVM_PATH }}/lib - - name: Compile - env: - CC: clang - CXX: clang++ - run: | - clang --version - cmake -S . -B build -DREFLECTCPP_BUILD_TESTS=ON -DREFLECTCPP_BUILD_BENCHMARKS=ON -DREFLECTCPP_BSON=ON -DREFLECTCPP_CBOR=ON -DREFLECTCPP_FLEXBUFFERS=ON -DREFLECTCPP_MSGPACK=ON -DREFLECTCPP_TOML=ON -DREFLECTCPP_XML=ON -DREFLECTCPP_YAML=ON -DCMAKE_BUILD_TYPE=Release - cmake --build build -j 4 - - name: Run tests - run: | - ./build/tests/bson/reflect-cpp-bson-tests - ./build/tests/cbor/reflect-cpp-cbor-tests - ./build/tests/flexbuffers/reflect-cpp-flexbuffers-tests - ./build/tests/generic/reflect-cpp-generic-tests - ./build/tests/json/reflect-cpp-json-tests - ./build/tests/json_c_arrays_and_inheritance/reflect-cpp-json-c-arrays-and-inheritance-tests - ./build/tests/msgpack/reflect-cpp-msgpack-tests - ./build/tests/toml/reflect-cpp-toml-tests - ./build/tests/xml/reflect-cpp-xml-tests - ./build/tests/yaml/reflect-cpp-yaml-tests - - name: Run benchmarks - run: | - echo '# Benchmarks' >> $GITHUB_STEP_SUMMARY - echo '## Benchmarks across different formats' >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=canada_read >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=canada_write >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=licenses_read >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=licenses_write >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=person_read >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=person_write >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - echo '## Benchmarks for JSON' >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/json/reflect-cpp-json-benchmarks --benchmark_filter=person_read >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/json/reflect-cpp-json-benchmarks --benchmark_filter=canada >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/json/reflect-cpp-json-benchmarks --benchmark_filter=licenses >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - diff --git a/.github/workflows/linux-gcc.yaml b/.github/workflows/linux.yaml similarity index 53% rename from .github/workflows/linux-gcc.yaml rename to .github/workflows/linux.yaml index 49577e60..6ec6ccbc 100644 --- a/.github/workflows/linux-gcc.yaml +++ b/.github/workflows/linux.yaml @@ -1,16 +1,32 @@ -name: linux-gcc +name: linux -on: [ pull_request ] +on: [ pull_request, workflow_dispatch ] env: VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" jobs: - linux-gcc: - runs-on: ubuntu-latest + linux: + strategy: + fail-fast: false + matrix: + include: + - compiler: llvm + compiler-version: 16 + - compiler: llvm + compiler-version: 18 + - compiler: gcc + compiler-version: 11 + additional-dep: "g++-11" + - compiler: gcc + compiler-version: 12 + - compiler: gcc + compiler-version: 14 + name: "${{ github.job }} (${{ matrix.compiler }}-${{ matrix.compiler-version }})" + runs-on: ubuntu-24.04 steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 @@ -20,29 +36,34 @@ jobs: script: | core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + - name: Setup ccache + uses: hendrikmuhs/ccache-action@v1 + with: + key: "${{ github.job }}-${{ matrix.compiler }}-${{ matrix.compiler-version }}" + max-size: "2G" - name: Run vcpkg uses: lukka/run-vcpkg@v11 - - name: install dependencies + - name: Install dependencies run: | sudo apt update - sudo apt install -y g++ - - name: Compile + sudo apt install -y ninja-build ${{ matrix.additional-dep }} + - name: Compile run: | - g++ --version - cmake -S . -B build -DREFLECTCPP_BUILD_TESTS=ON -DREFLECTCPP_BUILD_BENCHMARKS=ON -DREFLECTCPP_BSON=ON -DREFLECTCPP_CBOR=ON -DREFLECTCPP_FLEXBUFFERS=ON -DREFLECTCPP_MSGPACK=ON -DREFLECTCPP_TOML=ON -DREFLECTCPP_XML=ON -DREFLECTCPP_YAML=ON -DCMAKE_BUILD_TYPE=Release - cmake --build build -j 4 - - name: Run tests + if [[ "${{ matrix.compiler }}" == "llvm" ]]; then + export CC=clang-${{ matrix.compiler-version }} + export CXX=clang++-${{ matrix.compiler-version }} + elif [[ "${{ matrix.compiler }}" == "gcc" ]]; then + export CC=gcc-${{ matrix.compiler-version }} + export CXX=g++-${{ matrix.compiler-version }} + fi + sudo ln -s $(which ccache) /usr/local/bin/$CC + sudo ln -s $(which ccache) /usr/local/bin/$CXX + $CXX --version + cmake -S . -B build -G Ninja -DREFLECTCPP_BUILD_TESTS=ON -DREFLECTCPP_BUILD_BENCHMARKS=ON -DREFLECTCPP_BSON=ON -DREFLECTCPP_CBOR=ON -DREFLECTCPP_FLEXBUFFERS=ON -DREFLECTCPP_MSGPACK=ON -DREFLECTCPP_TOML=ON -DREFLECTCPP_XML=ON -DREFLECTCPP_YAML=ON -DCMAKE_BUILD_TYPE=Release + cmake --build build + - name: Run tests run: | - ./build/tests/bson/reflect-cpp-bson-tests - ./build/tests/cbor/reflect-cpp-cbor-tests - ./build/tests/flexbuffers/reflect-cpp-flexbuffers-tests - ./build/tests/generic/reflect-cpp-generic-tests - ./build/tests/json/reflect-cpp-json-tests - ./build/tests/json_c_arrays_and_inheritance/reflect-cpp-json-c-arrays-and-inheritance-tests - ./build/tests/msgpack/reflect-cpp-msgpack-tests - ./build/tests/toml/reflect-cpp-toml-tests - ./build/tests/xml/reflect-cpp-xml-tests - ./build/tests/yaml/reflect-cpp-yaml-tests + ctest --test-dir build --output-on-failure - name: Run benchmarks run: | echo '# Benchmarks' >> $GITHUB_STEP_SUMMARY @@ -61,5 +82,3 @@ jobs: ./build/benchmarks/json/reflect-cpp-json-benchmarks --benchmark_filter=canada >> $GITHUB_STEP_SUMMARY ./build/benchmarks/json/reflect-cpp-json-benchmarks --benchmark_filter=licenses >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY - - diff --git a/.github/workflows/macos-clang-arm.yaml b/.github/workflows/macos-clang-arm.yaml deleted file mode 100644 index 1be165ad..00000000 --- a/.github/workflows/macos-clang-arm.yaml +++ /dev/null @@ -1,65 +0,0 @@ -name: macos-clang-arm - -on: [ pull_request ] - -env: - VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" - -jobs: - macos-clang-arm: - runs-on: macos-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - submodules: recursive - fetch-depth: 0 - - name: Export GitHub Actions cache environment variables - uses: actions/github-script@v7 - with: - script: | - core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - - name: Run vcpkg - uses: lukka/run-vcpkg@v11 - - name: Install ninja - run: brew install ninja - - name: Compile - env: - CC: clang - CXX: clang++ - VCPKG_FORCE_SYSTEM_BINARIES: arm - run: | - clang --version - cmake -S . -B build -DREFLECTCPP_BUILD_TESTS=ON -DREFLECTCPP_BUILD_BENCHMARKS=ON -DREFLECTCPP_BSON=ON -DREFLECTCPP_CBOR=ON -DREFLECTCPP_FLEXBUFFERS=ON -DREFLECTCPP_MSGPACK=ON -DREFLECTCPP_TOML=ON -DREFLECTCPP_XML=ON -DREFLECTCPP_YAML=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_MAKE_PROGRAM=make - cmake --build build -j 4 - - name: Run tests - run: | - ./build/tests/bson/reflect-cpp-bson-tests - ./build/tests/cbor/reflect-cpp-cbor-tests - ./build/tests/flexbuffers/reflect-cpp-flexbuffers-tests - ./build/tests/generic/reflect-cpp-generic-tests - ./build/tests/json/reflect-cpp-json-tests - ./build/tests/json_c_arrays_and_inheritance/reflect-cpp-json-c-arrays-and-inheritance-tests - ./build/tests/msgpack/reflect-cpp-msgpack-tests - ./build/tests/toml/reflect-cpp-toml-tests - ./build/tests/xml/reflect-cpp-xml-tests - ./build/tests/yaml/reflect-cpp-yaml-tests - - name: Run benchmarks - run: | - echo '# Benchmarks' >> $GITHUB_STEP_SUMMARY - echo '## Benchmarks across different formats' >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=canada_read >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=canada_write >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=licenses_read >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=licenses_write >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=person_read >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/all/reflect-cpp-all-format-benchmarks --benchmark_filter=person_write >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - echo '## Benchmarks for JSON' >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/json/reflect-cpp-json-benchmarks --benchmark_filter=person_read >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/json/reflect-cpp-json-benchmarks --benchmark_filter=canada >> $GITHUB_STEP_SUMMARY - ./build/benchmarks/json/reflect-cpp-json-benchmarks --benchmark_filter=licenses >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/macos-clang-x64.yaml b/.github/workflows/macos-clang.yaml similarity index 75% rename from .github/workflows/macos-clang-x64.yaml rename to .github/workflows/macos-clang.yaml index bec49903..60b82af3 100644 --- a/.github/workflows/macos-clang-x64.yaml +++ b/.github/workflows/macos-clang.yaml @@ -1,16 +1,20 @@ -name: macos-clang-x64 +name: macos-clang -on: [ pull_request ] +on: [ pull_request, workflow_dispatch ] env: VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" jobs: - macos-clang-x64: - runs-on: macos-13 + macos-clang: + strategy: + fail-fast: false + matrix: + os: ["macos-latest", "macos-13"] + runs-on: ${{ matrix.os }} steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 @@ -20,28 +24,32 @@ jobs: script: | core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + - name: Setup ccache + uses: hendrikmuhs/ccache-action@v1 + with: + key: "${{ github.job }}-${{ matrix.os }}" + max-size: "2G" + create-symlink: true - name: Run vcpkg uses: lukka/run-vcpkg@v11 - - name: Compile + - name: Install ninja + run: brew install ninja + if: matrix.os == 'macos-latest' + - name: Compile env: CC: clang CXX: clang++ run: | - clang --version - cmake -S . -B build -DREFLECTCPP_BUILD_TESTS=ON -DREFLECTCPP_BUILD_BENCHMARKS=ON -DREFLECTCPP_BSON=ON -DREFLECTCPP_CBOR=ON -DREFLECTCPP_FLEXBUFFERS=ON -DREFLECTCPP_MSGPACK=ON -DREFLECTCPP_TOML=ON -DREFLECTCPP_XML=ON -DREFLECTCPP_YAML=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_MAKE_PROGRAM=make + if [[ "${{ matrix.os == 'macos-latest' }}" == "true" ]]; then + export VCPKG_FORCE_SYSTEM_BINARIES=arm + export CMAKE_GENERATOR=Ninja + fi + $CXX --version + cmake -S . -B build -DREFLECTCPP_BUILD_TESTS=ON -DREFLECTCPP_BUILD_BENCHMARKS=ON -DREFLECTCPP_BSON=ON -DREFLECTCPP_CBOR=ON -DREFLECTCPP_FLEXBUFFERS=ON -DREFLECTCPP_MSGPACK=ON -DREFLECTCPP_TOML=ON -DREFLECTCPP_XML=ON -DREFLECTCPP_YAML=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ cmake --build build -j 4 - - name: Run tests + - name: Run tests run: | - ./build/tests/bson/reflect-cpp-bson-tests - ./build/tests/cbor/reflect-cpp-cbor-tests - ./build/tests/flexbuffers/reflect-cpp-flexbuffers-tests - ./build/tests/generic/reflect-cpp-generic-tests - ./build/tests/json/reflect-cpp-json-tests - ./build/tests/json_c_arrays_and_inheritance/reflect-cpp-json-c-arrays-and-inheritance-tests - ./build/tests/msgpack/reflect-cpp-msgpack-tests - ./build/tests/toml/reflect-cpp-toml-tests - ./build/tests/xml/reflect-cpp-xml-tests - ./build/tests/yaml/reflect-cpp-yaml-tests + ctest --test-dir build --output-on-failure - name: Run benchmarks run: | echo '# Benchmarks' >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/windows-msvc.yaml b/.github/workflows/windows-msvc.yaml index 697dd1b5..73cdb4e5 100644 --- a/.github/workflows/windows-msvc.yaml +++ b/.github/workflows/windows-msvc.yaml @@ -1,6 +1,6 @@ name: windows-msvc -on: [ pull_request ] +on: [ pull_request, workflow_dispatch ] env: VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" @@ -10,7 +10,7 @@ jobs: runs-on: windows-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 @@ -22,22 +22,13 @@ jobs: core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - uses: ilammy/msvc-dev-cmd@v1 - uses: lukka/run-vcpkg@v11 - - name: Compile + - name: Compile run: | cmake -S . -B build -DREFLECTCPP_BUILD_TESTS=ON -DREFLECTCPP_BUILD_BENCHMARKS=ON -DREFLECTCPP_BSON=ON -DREFLECTCPP_CBOR=ON -DREFLECTCPP_FLEXBUFFERS=ON -DREFLECTCPP_MSGPACK=ON -DREFLECTCPP_XML=ON -DREFLECTCPP_TOML=ON -DREFLECTCPP_YAML=ON -DCMAKE_BUILD_TYPE=Release cmake --build build --config Release -j4 - - name: Run tests + - name: Run tests run: | - .\build\tests\json\Release\reflect-cpp-json-tests.exe - .\build\tests\json_c_arrays_and_inheritance\Release\reflect-cpp-json-c-arrays-and-inheritance-tests.exe - .\build\tests\bson\Release\reflect-cpp-bson-tests.exe - .\build\tests\cbor\Release\reflect-cpp-cbor-tests.exe - .\build\tests\flexbuffers\Release\reflect-cpp-flexbuffers-tests.exe - .\build\tests\generic\Release\reflect-cpp-generic-tests.exe - .\build\tests\msgpack\Release\reflect-cpp-msgpack-tests.exe - .\build\tests\toml\Release\reflect-cpp-toml-tests.exe - .\build\tests\xml\Release\reflect-cpp-xml-tests.exe - .\build\tests\yaml\Release\reflect-cpp-yaml-tests.exe + ctest --test-dir build --output-on-failure - name: Run benchmarks run: | echo '# Benchmarks' >> $env:GITHUB_STEP_SUMMARY diff --git a/.gitignore b/.gitignore index 0b9d6619..be3124d7 100644 --- a/.gitignore +++ b/.gitignore @@ -53,6 +53,7 @@ *.yaml !vcpkg.json +!.github/**/*.yml !.github/**/*.yaml !benchmarks/**/*.json diff --git a/CMakeLists.txt b/CMakeLists.txt index df697146..f20811d9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -168,11 +168,9 @@ target_sources(reflectcpp PRIVATE ${REFLECT_CPP_SOURCES}) target_precompile_headers(reflectcpp PRIVATE [["rfl.hpp"]] ) if (REFLECTCPP_BUILD_TESTS) - if (MSVC) - set(REFLECT_CPP_GTEST_LIB "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/gtest${CMAKE_STATIC_LIBRARY_SUFFIX}") - else () - set(REFLECT_CPP_GTEST_LIB "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/libgtest${CMAKE_STATIC_LIBRARY_SUFFIX}") - endif () + enable_testing() + find_package(GTest CONFIG REQUIRED) + set(REFLECT_CPP_GTEST_LIB reflectcpp GTest::gtest_main) add_subdirectory(tests) endif () diff --git a/tests/bson/CMakeLists.txt b/tests/bson/CMakeLists.txt index be52ec9b..6129f76d 100644 --- a/tests/bson/CMakeLists.txt +++ b/tests/bson/CMakeLists.txt @@ -5,7 +5,6 @@ file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS "*.cpp") add_executable( reflect-cpp-bson-tests ${SOURCES} - "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/src/gtest_main.cc" ) target_precompile_headers(reflect-cpp-bson-tests PRIVATE [["rfl.hpp"]] ) @@ -14,6 +13,8 @@ target_include_directories(reflect-cpp-bson-tests SYSTEM PRIVATE "${VCPKG_INSTAL target_link_libraries( reflect-cpp-bson-tests PRIVATE - reflectcpp "${REFLECT_CPP_GTEST_LIB}" ) + +find_package(GTest) +gtest_discover_tests(reflect-cpp-bson-tests) diff --git a/tests/cbor/CMakeLists.txt b/tests/cbor/CMakeLists.txt index d66a309f..1268d405 100644 --- a/tests/cbor/CMakeLists.txt +++ b/tests/cbor/CMakeLists.txt @@ -5,7 +5,6 @@ file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS "*.cpp") add_executable( reflect-cpp-cbor-tests ${SOURCES} - "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/src/gtest_main.cc" ) target_precompile_headers(reflect-cpp-cbor-tests PRIVATE [["rfl.hpp"]] ) @@ -15,6 +14,8 @@ target_include_directories(reflect-cpp-cbor-tests SYSTEM PRIVATE "${VCPKG_INSTAL target_link_libraries( reflect-cpp-cbor-tests PRIVATE - reflectcpp "${REFLECT_CPP_GTEST_LIB}" ) + +find_package(GTest) +gtest_discover_tests(reflect-cpp-cbor-tests) diff --git a/tests/flexbuffers/CMakeLists.txt b/tests/flexbuffers/CMakeLists.txt index 24fd903d..6e5cc200 100644 --- a/tests/flexbuffers/CMakeLists.txt +++ b/tests/flexbuffers/CMakeLists.txt @@ -5,7 +5,6 @@ file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS "*.cpp") add_executable( reflect-cpp-flexbuffers-tests ${SOURCES} - "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/src/gtest_main.cc" ) target_precompile_headers(reflect-cpp-flexbuffers-tests PRIVATE [["rfl.hpp"]] ) @@ -14,6 +13,8 @@ target_include_directories(reflect-cpp-flexbuffers-tests SYSTEM PRIVATE "${VCPKG target_link_libraries( reflect-cpp-flexbuffers-tests PRIVATE - reflectcpp "${REFLECT_CPP_GTEST_LIB}" ) + +find_package(GTest) +gtest_discover_tests(reflect-cpp-flexbuffers-tests) diff --git a/tests/generic/CMakeLists.txt b/tests/generic/CMakeLists.txt index 7c7ac4b4..0e3b03a7 100644 --- a/tests/generic/CMakeLists.txt +++ b/tests/generic/CMakeLists.txt @@ -5,7 +5,6 @@ file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS "*.cpp") add_executable( reflect-cpp-generic-tests ${SOURCES} - "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/src/gtest_main.cc" ) target_include_directories(reflect-cpp-generic-tests SYSTEM PRIVATE "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include") @@ -13,6 +12,8 @@ target_include_directories(reflect-cpp-generic-tests SYSTEM PRIVATE "${VCPKG_INS target_link_libraries( reflect-cpp-generic-tests PRIVATE - reflectcpp "${REFLECT_CPP_GTEST_LIB}" ) + +find_package(GTest) +gtest_discover_tests(reflect-cpp-generic-tests) diff --git a/tests/json/CMakeLists.txt b/tests/json/CMakeLists.txt index 12dd65c8..ac468c3c 100644 --- a/tests/json/CMakeLists.txt +++ b/tests/json/CMakeLists.txt @@ -5,7 +5,6 @@ file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS "*.cpp") add_executable( reflect-cpp-json-tests ${SOURCES} - "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/src/gtest_main.cc" ) target_precompile_headers(reflect-cpp-json-tests PRIVATE [["rfl.hpp"]] ) @@ -13,7 +12,9 @@ target_include_directories(reflect-cpp-json-tests SYSTEM PRIVATE "${VCPKG_INSTAL target_link_libraries( reflect-cpp-json-tests - PRIVATE - reflectcpp + PRIVATE "${REFLECT_CPP_GTEST_LIB}" ) + +find_package(GTest) +gtest_discover_tests(reflect-cpp-json-tests) diff --git a/tests/json_c_arrays_and_inheritance/CMakeLists.txt b/tests/json_c_arrays_and_inheritance/CMakeLists.txt index a0ed7d98..cb411bcd 100644 --- a/tests/json_c_arrays_and_inheritance/CMakeLists.txt +++ b/tests/json_c_arrays_and_inheritance/CMakeLists.txt @@ -5,7 +5,6 @@ file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS "*.cpp") add_executable( reflect-cpp-json-c-arrays-and-inheritance-tests ${SOURCES} - "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/src/gtest_main.cc" ) target_precompile_headers(reflect-cpp-json-c-arrays-and-inheritance-tests PRIVATE [["rfl.hpp"]] ) @@ -17,6 +16,8 @@ target_include_directories(reflect-cpp-json-c-arrays-and-inheritance-tests SYSTE target_link_libraries( reflect-cpp-json-c-arrays-and-inheritance-tests PRIVATE - reflectcpp "${REFLECT_CPP_GTEST_LIB}" ) + +find_package(GTest) +gtest_discover_tests(reflect-cpp-json-c-arrays-and-inheritance-tests) diff --git a/tests/msgpack/CMakeLists.txt b/tests/msgpack/CMakeLists.txt index fcc47ad3..26a77a07 100644 --- a/tests/msgpack/CMakeLists.txt +++ b/tests/msgpack/CMakeLists.txt @@ -5,7 +5,6 @@ file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS "*.cpp") add_executable( reflect-cpp-msgpack-tests ${SOURCES} - "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/src/gtest_main.cc" ) target_precompile_headers(reflect-cpp-msgpack-tests PRIVATE [["rfl.hpp"]] ) @@ -14,6 +13,8 @@ target_include_directories(reflect-cpp-msgpack-tests SYSTEM PRIVATE "${VCPKG_INS target_link_libraries( reflect-cpp-msgpack-tests PRIVATE - reflectcpp "${REFLECT_CPP_GTEST_LIB}" ) + +find_package(GTest) +gtest_discover_tests(reflect-cpp-msgpack-tests) diff --git a/tests/toml/CMakeLists.txt b/tests/toml/CMakeLists.txt index c7e5816b..1e138f47 100644 --- a/tests/toml/CMakeLists.txt +++ b/tests/toml/CMakeLists.txt @@ -5,7 +5,6 @@ file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS "*.cpp") add_executable( reflect-cpp-toml-tests ${SOURCES} - "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/src/gtest_main.cc" ) target_precompile_headers(reflect-cpp-toml-tests PRIVATE [["rfl.hpp"]] ) @@ -14,6 +13,8 @@ target_include_directories(reflect-cpp-toml-tests SYSTEM PRIVATE "${VCPKG_INSTAL target_link_libraries( reflect-cpp-toml-tests PRIVATE - reflectcpp "${REFLECT_CPP_GTEST_LIB}" ) + +find_package(GTest) +gtest_discover_tests(reflect-cpp-toml-tests) diff --git a/tests/xml/CMakeLists.txt b/tests/xml/CMakeLists.txt index 745ceebd..8999f1e3 100644 --- a/tests/xml/CMakeLists.txt +++ b/tests/xml/CMakeLists.txt @@ -5,7 +5,6 @@ file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS "*.cpp") add_executable( reflect-cpp-xml-tests ${SOURCES} - "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/src/gtest_main.cc" ) target_precompile_headers(reflect-cpp-xml-tests PRIVATE [["rfl.hpp"]] ) @@ -14,6 +13,8 @@ target_include_directories(reflect-cpp-xml-tests SYSTEM PRIVATE "${VCPKG_INSTALL target_link_libraries( reflect-cpp-xml-tests PRIVATE - reflectcpp "${REFLECT_CPP_GTEST_LIB}" ) + +find_package(GTest) +gtest_discover_tests(reflect-cpp-xml-tests) diff --git a/tests/yaml/CMakeLists.txt b/tests/yaml/CMakeLists.txt index f25673f0..a514a479 100644 --- a/tests/yaml/CMakeLists.txt +++ b/tests/yaml/CMakeLists.txt @@ -5,7 +5,6 @@ file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS "*.cpp") add_executable( reflect-cpp-yaml-tests ${SOURCES} - "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/src/gtest_main.cc" ) target_precompile_headers(reflect-cpp-yaml-tests PRIVATE [["rfl.hpp"]] ) @@ -14,6 +13,8 @@ target_include_directories(reflect-cpp-yaml-tests SYSTEM PRIVATE "${VCPKG_INSTAL target_link_libraries( reflect-cpp-yaml-tests PRIVATE - reflectcpp "${REFLECT_CPP_GTEST_LIB}" ) + +find_package(GTest) +gtest_discover_tests(reflect-cpp-yaml-tests)