diff --git a/.github/workflows/MacOS.yml b/.github/workflows/MacOS.yml index 1e067913..bd85cdb5 100644 --- a/.github/workflows/MacOS.yml +++ b/.github/workflows/MacOS.yml @@ -44,22 +44,22 @@ jobs: cling-version: '1.2' llvm_enable_projects: "clang" llvm_targets_to_build: "host;NVPTX" - - name: osx13-x86-clang-clang-repl-19 - os: macos-13 + - name: osx15-x86-clang-clang-repl-19 + os: macos-15-intel compiler: clang clang-runtime: '19' cling: Off llvm_enable_projects: "clang" llvm_targets_to_build: "host" - - name: osx13-x86-clang-clang-repl-18 - os: macos-13 + - name: osx15-x86-clang-clang-repl-18 + os: macos-15-intel compiler: clang clang-runtime: '18' cling: Off llvm_enable_projects: "clang" llvm_targets_to_build: "host" - - name: osx13-x86-clang-clang18-cling - os: macos-13 + - name: osx15-x86-clang-clang18-cling + os: macos-15-intel compiler: clang clang-runtime: '18' cling: On @@ -125,28 +125,13 @@ jobs: echo "CC=gcc-${vers}" >> $GITHUB_ENV echo "CXX=g++-${vers}" >> $GITHUB_ENV else - export ARCHITECHURE=$(uname -m) - if [[ "$ARCHITECHURE" == "arm64" ]]; then - cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]') - if [[ "${cling_on}" == "ON" ]]; then - brew install llvm@15 - brew remove llvm@18 - brew cleanup - #FIXME: Do not believe setting all these environment variables are necessary - # They were set to avoid using Xcodes libc++ and to stop CppInterOp using llvm@18 in tests - echo 'LDFLAGS="-L/opt/homebrew/opt/llvm@15/lib/ -L/opt/homebrew/opt/llvm@15/c++/"' >> $GITHUB_ENV - echo 'CPPFLAGS="-I/opt/homebrew/opt/llvm@15/include"' >> $GITHUB_ENV - echo 'CPATH="/opt/homebrew/include/"' >> $GITHUB_ENV - echo 'LIBRARY_PATH="/opt/homebrew/lib/"' >> $GITHUB_ENV - echo "CC=$(brew --prefix llvm@15)/bin/clang" >> $GITHUB_ENV - echo "CXX=$(brew --prefix llvm@15)/bin/clang++" >> $GITHUB_ENV - else - echo "CC=$(brew --prefix llvm@18)/bin/clang" >> $GITHUB_ENV - echo "CXX=$(brew --prefix llvm@18)/bin/clang++" >> $GITHUB_ENV - fi + brew install llvm@15 + if [[ "$(uname -m)" == "x86_64" ]]; then + echo "CC=/usr/local/opt/llvm@15/bin/clang" >> $GITHUB_ENV + echo "CXX=/usr/local/opt/llvm@15/bin/clang++" >> $GITHUB_ENV else - echo "CC=$(brew --prefix llvm@15)/bin/clang" >> $GITHUB_ENV - echo "CXX=$(brew --prefix llvm@15)/bin/clang++" >> $GITHUB_ENV + echo "CC=/opt/homebrew/opt/llvm@15/bin/clang" >> $GITHUB_ENV + echo "CXX=/opt/homebrew/opt/llvm@15/bin/clang++" >> $GITHUB_ENV fi fi echo "SDKROOT=$(xcrun --sdk macosx --show-sdk-path)" >> $GITHUB_ENV @@ -284,20 +269,20 @@ jobs: cling: On cling-version: '1.2' cppyy: On - - name: osx13-x86-clang-clang-repl-19-cppyy - os: macos-13 + - name: osx15-x86-clang-clang-repl-19-cppyy + os: macos-15-intel compiler: clang clang-runtime: '19' cling: Off cppyy: On - - name: osx13-x86-clang-clang-repl-18-cppyy - os: macos-13 + - name: osx15-x86-clang-clang-repl-18-cppyy + os: macos-15-intel compiler: clang clang-runtime: '18' cling: Off cppyy: On - - name: osx13-x86-clang-clang18-cling-cppyy - os: macos-13 + - name: osx15-x86-clang-clang18-cling-cppyy + os: macos-15-intel compiler: clang clang-runtime: '18' cling: On @@ -366,31 +351,16 @@ jobs: echo "CC=gcc-${vers}" >> $GITHUB_ENV echo "CXX=g++-${vers}" >> $GITHUB_ENV else - echo "SDKROOT=$(xcrun --sdk macosx --show-sdk-path)" >> $GITHUB_ENV - export ARCHITECHURE=$(uname -m) - if [[ "$ARCHITECHURE" == "arm64" ]]; then - cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]') - if [[ "${cling_on}" == "ON" ]]; then - brew install llvm@15 - brew remove llvm@18 - brew cleanup - #FIXME: Do not believe setting all these environment variables are necessary - # They were set to avoid using Xcodes libc++ and to stop CppInterOp using llvm@18 in tests - echo 'LDFLAGS="-L/opt/homebrew/opt/llvm@15/lib/ -L/opt/homebrew/opt/llvm@15/c++/"' >> $GITHUB_ENV - echo 'CPPFLAGS="-I/opt/homebrew/opt/llvm@15/include"' >> $GITHUB_ENV - echo 'CPATH="/opt/homebrew/include/"' >> $GITHUB_ENV - echo 'LIBRARY_PATH="/opt/homebrew/lib/"' >> $GITHUB_ENV - echo "CC=$(brew --prefix llvm@15)/bin/clang" >> $GITHUB_ENV - echo "CXX=$(brew --prefix llvm@15)/bin/clang++" >> $GITHUB_ENV - else - echo "CC=$(brew --prefix llvm@18)/bin/clang" >> $GITHUB_ENV - echo "CXX=$(brew --prefix llvm@18)/bin/clang++" >> $GITHUB_ENV - fi + brew install llvm@15 + if [[ "$(uname -m)" == "x86_64" ]]; then + echo "CC=/usr/local/opt/llvm@15/bin/clang" >> $GITHUB_ENV + echo "CXX=/usr/local/opt/llvm@15/bin/clang++" >> $GITHUB_ENV else - echo "CC=$(brew --prefix llvm@15)/bin/clang" >> $GITHUB_ENV - echo "CXX=$(brew --prefix llvm@15)/bin/clang++" >> $GITHUB_ENV + echo "CC=/opt/homebrew/opt/llvm@15/bin/clang" >> $GITHUB_ENV + echo "CXX=/opt/homebrew/opt/llvm@15/bin/clang++" >> $GITHUB_ENV fi fi + echo "SDKROOT=$(xcrun --sdk macosx --show-sdk-path)" >> $GITHUB_ENV env: compiler: ${{ matrix.compiler }} diff --git a/.github/workflows/emscripten.yml b/.github/workflows/emscripten.yml index 7c1cea02..c80130e5 100644 --- a/.github/workflows/emscripten.yml +++ b/.github/workflows/emscripten.yml @@ -45,8 +45,8 @@ jobs: llvm_enable_projects: "clang;lld" llvm_targets_to_build: "WebAssembly" emsdk_ver: "3.1.73" - - name: osx13-x86-clang-clang-repl-19-emscripten - os: macos-13 + - name: osx15-x86-clang-clang-repl-19-emscripten + os: macos-15-intel compiler: clang clang-runtime: '19' cling: Off @@ -131,18 +131,6 @@ jobs: git clone --depth=1 https://github.com/emscripten-core/emsdk.git ./emsdk/emsdk install ${{ matrix.emsdk_ver }} - - name: Setup default Build Type on *nux - if: ${{ runner.os != 'windows' && steps.cache.outputs.cache-hit != 'true' }} - run: | - echo "BUILD_TYPE=Release" >> $GITHUB_ENV - echo "CODE_COVERAGE=0" >> $GITHUB_ENV - os="${{ matrix.os }}" - if [[ "${os}" == "macos"* ]]; then - echo "ncpus=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV - else - echo "ncpus=$(nproc --all)" >> $GITHUB_ENV - fi - - name: Setup default Build Type on Windows if: ${{ runner.os == 'windows' && steps.cache.outputs.cache-hit != 'true' }} run: | @@ -151,97 +139,12 @@ jobs: $env:ncpus=$([Environment]::ProcessorCount) echo "ncpus=$env:ncpus" >> $env:GITHUB_ENV - - name: Setup compiler on Linux - if: ${{ runner.os == 'Linux' && steps.cache.outputs.cache-hit != 'true' }} - run: | - # https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html - vers="${compiler#*-}" - os_codename="`cat /etc/os-release | grep UBUNTU_CODENAME | cut -d = -f 2`" - ##sudo apt update - if [[ "${{ matrix.compiler }}" == *"gcc"* ]]; then - sudo apt install -y gcc-${vers} g++-${vers} lld - echo "CC=gcc-${vers}" >> $GITHUB_ENV - echo "CXX=g++-${vers}" >> $GITHUB_ENV - else - if ! sudo apt install -y clang-${vers}; then - curl https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - echo "deb https://apt.llvm.org/${os_codename}/ llvm-toolchain-${os_codename}-${vers} main" | sudo tee -a /etc/apt/sources.list - sudo apt-get update - sudo apt-get install -y clang-${vers} - fi - echo "CC=clang-${vers}" >> $GITHUB_ENV - echo "CXX=clang++-${vers}" >> $GITHUB_ENV - fi - env: - compiler: ${{ matrix.compiler }} - - - name: Setup compiler on macOS - if: ${{ runner.os == 'macOS' && steps.cache.outputs.cache-hit != 'true' }} - run: | - vers="${compiler#*-}" - if [[ "${{ matrix.compiler }}" == *"gcc"* ]]; then - brew install "gcc@$vers" - echo "CC=gcc-${vers}" >> $GITHUB_ENV - echo "CXX=g++-${vers}" >> $GITHUB_ENV - else - export ARCHITECHURE=$(uname -m) - if [[ "$ARCHITECHURE" == "arm64" ]]; then - cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]') - if [[ "${cling_on}" == "ON" ]]; then - brew install llvm@15 - brew remove llvm@18 - brew cleanup - #FIXME: Do not believe setting all these environment variables are necessary - # They were set to avoid using Xcodes libc++ and to stop CppInterOp using llvm@18 in tests - echo 'LDFLAGS="-L/opt/homebrew/opt/llvm@15/lib/ -L/opt/homebrew/opt/llvm@15/c++/"' >> $GITHUB_ENV - echo 'CPPFLAGS="-I/opt/homebrew/opt/llvm@15/include"' >> $GITHUB_ENV - echo 'CPATH="/opt/homebrew/include/"' >> $GITHUB_ENV - echo 'LIBRARY_PATH="/opt/homebrew/lib/"' >> $GITHUB_ENV - echo "CC=$(brew --prefix llvm@15)/bin/clang" >> $GITHUB_ENV - echo "CXX=$(brew --prefix llvm@15)/bin/clang++" >> $GITHUB_ENV - else - echo "CC=$(brew --prefix llvm@18)/bin/clang" >> $GITHUB_ENV - echo "CXX=$(brew --prefix llvm@18)/bin/clang++" >> $GITHUB_ENV - fi - else - echo "CC=$(brew --prefix llvm@15)/bin/clang" >> $GITHUB_ENV - echo "CXX=$(brew --prefix llvm@15)/bin/clang++" >> $GITHUB_ENV - fi - fi - echo "SDKROOT=$(xcrun --sdk macosx --show-sdk-path)" >> $GITHUB_ENV - env: - compiler: ${{ matrix.compiler }} - - #Section slightly modified version of - #https://github.com/vgvassilev/clad/blob/40d8bec11bde47b14a281078183a4f6147abeac5/.github/workflows/ci.yml#L510C1-L534C10 - - name: Setup compiler on Windows - if: ${{ runner.os == 'windows' && steps.cache.outputs.cache-hit != 'true' }} - run: | - if ( "${{ matrix.compiler }}" -imatch "clang" ) - { - $ver="${{ matrix.compiler }}".split("-")[1] - choco install llvm --version=$ver --no-progress -my - clang --version - # - $env:CC="clang" - $env:CXX="clang++" - echo "CC=clang" >> $env:GITHUB_ENV - echo "CXX=clang++" >> $env:GITHUB_ENV - } - elseif ( "${{ matrix.compiler }}" -imatch "msvc" ) - { - # MSVC is builtin in container image - } - else - { - echo "Unsupported compiler - fix YAML file" - } - - name: Install deps on Windows if: ${{ runner.os == 'windows' && steps.cache.outputs.cache-hit != 'true' }} run: | - choco install findutils + choco install findutils ninja $env:PATH="C:\Program Files (x86)\GnuWin32\bin;$env:PATH" + $env:PATH="C:\Program Files (x86)\Ninja\bin;$env:PATH" - name: Install deps on MacOS if: ${{ runner.os == 'macOS' && steps.cache.outputs.cache-hit != 'true' }} @@ -250,17 +153,13 @@ jobs: export ARCHITECHURE=$(uname -m) if [[ "$ARCHITECHURE" != "x86_64" ]]; then brew remove unxip - else - brew remove ruby@3.0 fi # workaround for https://github.com/actions/setup-python/issues/577 for pkg in $(brew list | grep '^python@'); do brew unlink "$pkg" brew link --overwrite "$pkg" done - brew upgrade openssl >/dev/null 2>&1 brew install ninja - brew upgrade - name: Install deps on Linux if: ${{ runner.os == 'Linux' && steps.cache.outputs.cache-hit != 'true' }} @@ -281,7 +180,6 @@ jobs: git clone https://github.com/root-project/cling.git cd ./cling git checkout tags/v${{ matrix.cling-version }} - git apply -v ${{ github.workspace }}/CppInterOp/patches/llvm/cling1.2-LookupHelper.patch cd .. git clone --depth=1 -b cling-llvm${{ matrix.clang-runtime }} https://github.com/root-project/llvm-project.git else # repl @@ -289,6 +187,12 @@ jobs: fi cd llvm-project # Build + mkdir native_build + cd native_build + cmake -DLLVM_ENABLE_PROJECTS=clang -DLLVM_TARGETS_TO_BUILD=host -DCMAKE_BUILD_TYPE=Release ../llvm/ + cmake --build . --target llvm-tblgen clang-tblgen --parallel $(nproc --all) + export NATIVE_DIR=$PWD/bin/ + cd .. mkdir build if [[ "${cling_on}" == "ON" ]]; then cd build @@ -316,14 +220,13 @@ jobs: else # Apply patches llvm_vers=$(echo "${{ matrix.clang-runtime }}" | tr '[:lower:]' '[:upper:]') - if [[ "${llvm_vers}" == "19" ]]; then + if [[ "${llvm_vers}" == "19" || "${llvm_vers}" == "20" ]]; then git apply -v ${{ github.workspace }}/CppInterOp/patches/llvm/emscripten-clang${{ matrix.clang-runtime }}-*.patch echo "Apply emscripten-clang${{ matrix.clang-runtime }}-*.patch patches:" fi cd build emcmake cmake -DCMAKE_BUILD_TYPE=Release \ -DLLVM_HOST_TRIPLE=wasm32-unknown-emscripten \ - -DLLVM_ENABLE_ASSERTIONS=ON \ -DLLVM_TARGETS_TO_BUILD="${{ matrix.llvm_targets_to_build }}" \ -DLLVM_ENABLE_LIBEDIT=OFF \ -DLLVM_ENABLE_PROJECTS="${{ matrix.llvm_enable_projects }}" \ @@ -337,9 +240,16 @@ jobs: -DLLVM_INCLUDE_EXAMPLES=OFF \ -DLLVM_INCLUDE_TESTS=OFF \ -DLLVM_ENABLE_THREADS=OFF \ + -DLLVM_BUILD_TOOLS=OFF \ + -DLLVM_ENABLE_LIBPFM=OFF \ + -DCLANG_BUILD_TOOLS=OFF \ -G Ninja \ + -DLLVM_NATIVE_TOOL_DIR=$NATIVE_DIR \ + -DCMAKE_C_FLAGS_RELEASE="-Oz -g0 -DNDEBUG" \ + -DCMAKE_CXX_FLAGS_RELEASE="-Oz -g0 -DNDEBUG" \ + -DLLVM_ENABLE_LTO=Full \ ../llvm - emmake ninja clang clang-repl lld -j ${{ env.ncpus }} + emmake ninja libclang clangInterpreter clangStaticAnalyzerCore lldWasm fi cd ../ rm -rf $(find . -maxdepth 1 ! -name "build" ! -name "llvm" ! -name "clang" ! -name ".") @@ -489,8 +399,8 @@ jobs: cling: Off micromamba_shell_init: bash emsdk_ver: "3.1.73" - - name: osx13-x86-clang-clang-repl-19-emscripten_wasm - os: macos-13 + - name: osx15-x86-clang-clang-repl-19-emscripten_wasm + os: macos-15-intel compiler: clang clang-runtime: '19' cling: Off