@@ -114,6 +114,12 @@ jobs:
114114 compiler : msvc
115115 clang-runtime : ' 18'
116116
117+ - name : win2022-msvc-runtime18-debug
118+ os : windows-2022
119+ compiler : clang
120+ clang-runtime : ' 18'
121+ debug_build : true
122+
117123 - name : ubu22-clang15-runtime16-debug
118124 os : ubuntu-22.04
119125 compiler : clang-15
@@ -493,12 +499,26 @@ jobs:
493499 uses : actions/setup-python@v5
494500 with :
495501 python-version : 3.11
496- - name : Save PR Info
497- if : ${{ matrix.coverage == true }}
502+ - name : Save PR Info on Unix systems
503+ if : ${{ runner.os != 'windows' }}
498504 run : |
499505 mkdir -p ./pr
500506 echo ${{ github.event.number }} > ./pr/NR
501507 echo ${{ github.repository }} > ./pr/REPO
508+ export LLVM_HASH=$(git ls-remote https://github.com/llvm/llvm-project.git refs/heads/release/${{ matrix.clang-runtime}}.x | tr '\t' '-')
509+ echo "LLVM_HASH=$LLVM_HASH" >> $GITHUB_ENV
510+
511+ - name : Save PR Info on Windows systems
512+ if : ${{ runner.os == 'windows' }}
513+ run : |
514+ #can be found
515+ mkdir ./pr
516+ echo "${{ github.event.number }}" > ./pr/NR
517+ echo ${{ github.repository }} > ./pr/REPO
518+ $env:LLVM_HASH_TEMP = (git ls-remote https://github.com/llvm/llvm-project.git refs/heads/release/${{ matrix.clang-runtime}}.x )
519+ $env:LLVM_HASH = $env:LLVM_HASH_TEMP -replace "\t","-"
520+ echo "LLVM_HASH=$env:LLVM_HASH" >> $GITHUB_ENV
521+
502522 - uses : actions/upload-artifact@v4
503523 if : ${{ matrix.coverage == true }}
504524 with :
@@ -511,17 +531,32 @@ jobs:
511531 run : |
512532 echo "BUILD_TYPE=Release" >> $GITHUB_ENV
513533 echo "CLAD_CODE_COVERAGE=0" >> $GITHUB_ENV
534+ if [[ "${os}" == "macos"* ]]; then
535+ echo "ncpus=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV
536+ else
537+ echo "ncpus=$(nproc --all)" >> $GITHUB_ENV
538+ fi
539+
514540 - name : Setup default Build Type on *nux (build_debug & asserts)
515541 if : ${{ (matrix.debug_build == true) && (runner.os != 'windows') }}
516542 run : |
517543 echo "BUILD_TYPE=Debug" >> $GITHUB_ENV
544+ if [[ "${os}" == "macos"* ]]; then
545+ echo "ncpus=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV
546+ else
547+ echo "ncpus=$(nproc --all)" >> $GITHUB_ENV
548+ fi
549+
518550 - name : Setup default Build Type on Windows
519551 if : runner.os == 'windows'
520552 run : |
521553 $env:BUILD_TYPE="Release"
522554 $env:CLAD_CODE_COVERAGE="0"
523555 echo "BUILD_TYPE=Release" >> $env:GITHUB_ENV
524556 echo "CLAD_CODE_COVERAGE=0" >> $env:GITHUB_ENV
557+ $env:ncpus=$([Environment]::ProcessorCount)
558+ echo "ncpus=$env:ncpus" >> $env:GITHUB_ENV
559+
525560 - name : Download Coverity Build Tool - Linux
526561 if : ${{ (matrix.coverity == true) && (runner.os == 'Linux') }}
527562 run : |
@@ -594,10 +629,10 @@ jobs:
594629 echo "PATH_TO_LLVM_BUILD=$env:PATH_TO_LLVM_BUILD" >> $env:GITHUB_ENV
595630 clang --version
596631 #
597- $env:CC="clang"
598- $env:CXX="clang++ "
599- echo "CC=clang" >> $env:GITHUB_ENV
600- echo "CXX=clang++ " >> $env:GITHUB_ENV
632+ $env:CC="clang-cl "
633+ $env:CXX="clang-cl "
634+ echo "CC=clang-cl " >> $env:GITHUB_ENV
635+ echo "CXX=clang-cl " >> $env:GITHUB_ENV
601636 }
602637 elseif ( "${{ matrix.compiler }}" -imatch "msvc" )
603638 {
@@ -609,7 +644,7 @@ jobs:
609644 }
610645
611646 - name : Setup LLVM/Clang on macOS
612- if : runner.os == 'macOS'
647+ if : ${{ runner.os == 'macOS' && (matrix.debug_build != true) }}
613648 run : |
614649 #brew update
615650 brew install --ignore-dependencies llvm
@@ -665,14 +700,23 @@ jobs:
665700 # We need PATH_TO_LLVM_BUILD later
666701 echo "PATH_TO_LLVM_BUILD=$PATH_TO_LLVM_BUILD" >> $GITHUB_ENV
667702
703+ - name : Install deps on Windows
704+ if : ${{ runner.os == 'windows' && steps.cache.outputs.cache-hit != 'true' && matrix.debug_build == true }}
705+ run : |
706+ choco install ninja findutils
707+ choco upgrade cmake
708+ $env:PATH="C:\Program Files (x86)\GnuWin32\bin;$env:PATH"
709+ $env:PATH="C:\Program Files (x86)\Ninja\bin;$env:PATH"
710+
668711 - name : Restore Cache LLVM/Clang runtime build directory (debug_build==true)
669- if : ${{ (matrix.debug_build == true) && (runner.os != 'windows') }}
712+ if : ${{ (matrix.debug_build == true) }}
670713 uses : actions/cache/restore@v4
671714 id : cache
672715 with :
673716 path : |
674717 llvm-project
675- key : ${{ matrix.os }}-clang-${{ matrix.clang-runtime }}.x-${{ env.BUILD_TYPE }}
718+ key : ${{ env.LLVM_HASH }}-${{ matrix.os }}-${{ matrix.compiler }}-clang-${{ matrix.clang-runtime }}.x
719+
676720 - name : Build LLVM/Cling on Unix if the cache is invalid (debug_build==true)
677721 if : ${{ (matrix.debug_build == true) && (runner.os != 'windows') && (steps.cache.outputs.cache-hit != 'true') }}
678722 run : |
@@ -682,7 +726,6 @@ jobs:
682726 # Build
683727 mkdir build
684728 cd build
685- export CPU_COUNT="$(nproc --all)"
686729 cmake \
687730 -DLLVM_ENABLE_PROJECTS="clang" \
688731 -DLLVM_TARGETS_TO_BUILD="host;NVPTX" \
@@ -698,15 +741,43 @@ jobs:
698741 -DLLVM_INCLUDE_TESTS=OFF \
699742 -DLLVM_INCLUDE_DOCS=OFF \
700743 ../llvm
701- cmake --build . --target clang FileCheck llvm-config clang-repl --parallel ${CPU_COUNT }
744+ cmake --build . --target clang FileCheck llvm-config clang-repl --parallel ${{ env.ncpus } }
702745 cd ../../
746+
747+
748+ - name : Build LLVM/Cling on Windows systems if the cache is invalid
749+ if : ${{ (matrix.debug_build == true) && runner.os == 'windows' && steps.cache.outputs.cache-hit != 'true' }}
750+ run : |
751+ git clone --depth=1 -b llvm-export-api-18.0 https://github.com/fsfod/llvm-project.git
752+ cd llvm-project
753+ cmake -S ./llvm/ -B build -G Ninja `
754+ -DCMAKE_ASM_MASM_FLAGS="-m64" `
755+ -DLLVM_ENABLE_PROJECTS="clang" `
756+ -DLLVM_ENABLE_PLUGINS=On `
757+ -DLLVM_TARGETS_TO_BUILD="host" `
758+ -DCMAKE_BUILD_TYPE=RelWithDebInfo `
759+ -DCMAKE_CXX_COMPILER=clang-cl `
760+ -DCMAKE_C_COMPILER=clang-cl `
761+ -DCMAKE_ASM_MASM_COMPILER=llvm-ml `
762+ -DLLVM_BUILD_LLVM_DYLIB_VIS=On `
763+ -DLLVM_LINK_LLVM_DYLIB=On `
764+ -DCLANG_LINK_CLANG_DYLIB=On
765+ cmake --build build --config RelWithDebInfo --parallel ${{ env.ncpus }}
766+ rm -r -force $(find.exe . -maxdepth 1 ! -name "build" ! -name "llvm" ! -name "clang" ! -name ".")
767+ cd .\llvm\
768+ rm -r -force $(find.exe . -maxdepth 1 ! -name "include" ! -name "lib" ! -name "cmake" ! -name ".")
769+ cd ..\clang\
770+ rm -r -force $(find.exe . -maxdepth 1 ! -name "include" ! -name "lib" ! -name "cmake" ! -name ".")
771+ cd ..\..
772+
703773 - name : Save Cache LLVM/Clang runtime build directory (debug_build==true)
704774 uses : actions/cache/save@v4
705- if : ${{ (matrix.debug_build == true) && (runner.os != 'windows') && ( steps.cache.outputs.cache-hit != 'true') }}
775+ if : ${{ (matrix.debug_build == true) && (steps.cache.outputs.cache-hit != 'true') }}
706776 with :
707777 path : |
708778 llvm-project
709779 key : ${{ steps.cache.outputs.cache-primary-key }}
780+
710781 - name : Set LLVM/Cling build path on Unix (debug_build==true)
711782 if : ${{ (matrix.debug_build == true) && (runner.os != 'windows') }}
712783 run : |
@@ -738,8 +809,9 @@ jobs:
738809 pip3 install lit # LLVM lit is not part of the llvm releases...
739810 # We need PATH_TO_LLVM_BUILD later
740811 echo "PATH_TO_LLVM_BUILD=$PATH_TO_LLVM_BUILD" >> $GITHUB_ENV
812+
741813 - name : Setup LLVM/Clang on Windows
742- if : ${{ runner.os == 'windows' }}
814+ if : ${{ runner.os == 'windows' && (matrix.debug_build != true) }}
743815 run : |
744816 C:\Miniconda\condabin\conda.bat install -y -c conda-forge "clangdev=${{ matrix.clang-runtime }}"
745817 $env:PATH_TO_LLVM_BUILD="$env:CONDA\Library"
@@ -820,7 +892,7 @@ jobs:
820892 if : ${{ matrix.coverity == false && runner.os == 'windows' }}
821893 run : |
822894 mkdir obj
823- cd obj
895+ cd obj
824896 if ( "$env:BUILD_TYPE" -eq "" )
825897 {
826898 $env:BUILD_TYPE="RelWithDebInfo"
@@ -829,10 +901,25 @@ jobs:
829901 {
830902 $env:CLAD_CODE_COVERAGE="0"
831903 }
832- ((Get-Content -path C:/Miniconda/Library/lib/cmake/llvm/LLVMConfig.cmake -Raw) -replace 'LLVM_ENABLE_DIA_SDK ON','LLVM_ENABLE_DIA_SDK OFF') | Set-Content -Path C:/Miniconda/Library/lib/cmake/llvm/LLVMConfig.cmake
833- $lit = @(which lit)
834- cmake -DClang_DIR="$env:PATH_TO_LLVM_BUILD" -DLLVM_DIR="$env:PATH_TO_LLVM_BUILD" -DCMAKE_BUILD_TYPE="$env:BUILD_TYPE" -DCLAD_CODE_COVERAGE="$env:CLAD_CODE_COVERAGE" -DCLAD_BUILD_STATIC_ONLY="ON" -DLLVM_EXTERNAL_LIT="$lit" "$env:GITHUB_WORKSPACE" ${{ matrix.extra_cmake_options }}
835- cmake --build . --config Release
904+ if ( "${{ matrix.debug_build }}" -imatch "true" )
905+ {
906+ ((Get-Content -path $env:GITHUB_WORKSPACE/llvm-project/build/lib/cmake/llvm/LLVMConfig.cmake -Raw) -replace 'LLVM_ENABLE_DIA_SDK ON','LLVM_ENABLE_DIA_SDK OFF') | Set-Content -Path $env:GITHUB_WORKSPACE/llvm-project/build/lib/cmake/llvm/LLVMConfig.cmake
907+ $env:PATH_TO_LLVM_BUILD="$env:GITHUB_WORKSPACE\llvm-project\build"
908+ echo "PATH_TO_LLVM_BUILD=$env:PATH_TO_LLVM_BUILD"
909+ echo "PATH_TO_LLVM_BUILD=$env:PATH_TO_LLVM_BUILD" >> $env:GITHUB_ENV
910+ $lit = @(which lit)
911+ cmake -G Ninja -DCMAKE_BUILD_TYPE="$env:BUILD_TYPE" -DClang_DIR="$env:PATH_TO_LLVM_BUILD" -DLLVM_DIR="$env:PATH_TO_LLVM_BUILD" -DLLVM_BUILD_LLVM_DYLIB_VIS=On -DLLVM_LINK_LLVM_DYLIB=On -DCLANG_LINK_CLANG_DYLIB=On -DCLAD_CODE_COVERAGE="$env:CLAD_CODE_COVERAGE" -DCLAD_BUILD_STATIC_ONLY="ON" -DLLVM_EXTERNAL_LIT="$lit" "$env:GITHUB_WORKSPACE" ${{ matrix.extra_cmake_options }}
912+ cmake --build . --config "$env:BUILD_TYPE" --parallel ${{ env.ncpus }}
913+ }
914+ else
915+ {
916+ ((Get-Content -path C:/Miniconda/Library/lib/cmake/llvm/LLVMConfig.cmake -Raw) -replace 'LLVM_ENABLE_DIA_SDK ON','LLVM_ENABLE_DIA_SDK OFF') | Set-Content -Path C:/Miniconda/Library/lib/cmake/llvm/LLVMConfig.cmake
917+ $lit = @(which lit)
918+ cmake -DClang_DIR="$env:PATH_TO_LLVM_BUILD" -DLLVM_DIR="$env:PATH_TO_LLVM_BUILD" -DCMAKE_BUILD_TYPE="$env:BUILD_TYPE" -DCLAD_CODE_COVERAGE="$env:CLAD_CODE_COVERAGE" -DCLAD_BUILD_STATIC_ONLY="ON" -DLLVM_EXTERNAL_LIT="$lit" "$env:GITHUB_WORKSPACE" ${{ matrix.extra_cmake_options }}
919+ cmake --build . --config Release --parallel ${{ env.ncpus }}
920+ }
921+
922+
836923 - name : Build Clad for Coverity Scan
837924 if : ${{ matrix.coverity == true }}
838925 run : |
0 commit comments