build and test LLVM version 16

Add LLVM-16 to the Nix builds and CI matrix. Also add the option to explicitly
select an LLVM version so the CircleCI build can still work as before.

We should support at least LLVM-17 currently, but there appears to be a
significant performance regression in compiling the generated code for large
variants that I'm going to debug separately. The long term goal is to support
and test all versions 15 and up.

Test plan:
- CI
This commit is contained in:
Jake Hillion 2024-08-16 18:40:03 +01:00
parent fe9b4b232a
commit 63a8b62d79
5 changed files with 12 additions and 6 deletions

View File

@ -101,7 +101,7 @@ jobs:
- run: - run:
name: Build name: Build
command: | command: |
/tmp/cmake/build/bin/cmake -G Ninja -B build/ -DWITH_FLAKY_TESTS=Off -DCODE_COVERAGE=On -DWARNINGS_AS_ERRORS=<< parameters.warnings_as_errors >> /tmp/cmake/build/bin/cmake -G Ninja -B build/ -DLLVM_REQUESTED_VERSION=15 -DWITH_FLAKY_TESTS=Off -DCODE_COVERAGE=On -DWARNINGS_AS_ERRORS=<< parameters.warnings_as_errors >>
ninja -C build/ ninja -C build/
# Testing rubbish: # Testing rubbish:
cp test/ci.oid.toml build/testing.oid.toml cp test/ci.oid.toml build/testing.oid.toml

View File

@ -18,7 +18,7 @@ jobs:
runs-on: 16-core-ubuntu runs-on: 16-core-ubuntu
strategy: strategy:
matrix: matrix:
llvm_version: [15] llvm_version: [15, 16]
steps: steps:
- uses: actions/checkout@v4.1.7 - uses: actions/checkout@v4.1.7
- uses: cachix/install-nix-action@v27 - uses: cachix/install-nix-action@v27

View File

@ -14,7 +14,7 @@ jobs:
steps: steps:
- uses: dorny/test-reporter@v1 - uses: dorny/test-reporter@v1
with: with:
artifact: test-results-15 artifact: test-results-16
name: CTest Tests name: CTest Tests
path: results.xml path: results.xml
reporter: jest-junit reporter: jest-junit

View File

@ -218,11 +218,16 @@ find_package(Boost REQUIRED COMPONENTS
) )
message(STATUS "Linking Boost libraries: ${Boost_LIBRARIES}") message(STATUS "Linking Boost libraries: ${Boost_LIBRARIES}")
### LLVM and Clang - Preferring Clang 15 ### LLVM and Clang
find_package(LLVM 15 REQUIRED CONFIG) find_package(LLVM ${LLVM_REQUESTED_VERSION} REQUIRED CONFIG)
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
if((${LLVM_VERSION_MAJOR} VERSION_LESS 15) OR (${LLVM_VERSION_MAJOR} VERSION_GREATER 16))
message(SEND_ERROR "Object Introspection currently requires an LLVM version between 15 and 16!")
endif()
find_package(Clang REQUIRED CONFIG) find_package(Clang REQUIRED CONFIG)
message(STATUS "Found Clang ${LLVM_PACKAGE_VERSION}") message(STATUS "Found Clang ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using ClangConfig.cmake in: ${Clang_DIR}") message(STATUS "Using ClangConfig.cmake in: ${Clang_DIR}")

View File

@ -99,9 +99,10 @@
in in
{ {
packages = rec { packages = rec {
default = oid-llvm15; default = oid-llvm16;
oid-llvm15 = mkOidPackage pkgs.llvmPackages_15; oid-llvm15 = mkOidPackage pkgs.llvmPackages_15;
oid-llvm16 = mkOidPackage pkgs.llvmPackages_16;
}; };
apps.default = { apps.default = {