diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7fe46226..685e609e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,6 +5,19 @@ on: branches: [ unstable ] pull_request: branches: [ unstable ] + workflow_call: + workflow_dispatch: + +env: + CMAKE_C_COMPILER_LAUNCHER: ccache + CMAKE_CXX_COMPILER_LAUNCHER: ccache + CCACHE_COMPILERCHECK: content + CCACHE_BASEDIR: ${{ github.workspace }} + CCACHE_DIR: ${{ github.workspace }}/.ccache + CCACHE_MAXSIZE: 500M + CCACHE_SLOPPINESS: pch_defines,time_macros,include_file_mtime,include_file_ctime + CCACHE_COMPRESS: "1" + CCACHE_COMPRESSLEVEL: "1" jobs: build: @@ -16,12 +29,19 @@ jobs: - {os: ubuntu-22.04, cc: gcc-12, cxx: g++-12} - {os: ubuntu-22.04, cc: clang-15, cxx: clang++-15} - {os: macos-12, cc: gcc-12, cxx: g++-12} - - {os: macos-12, cc: /usr/local/opt/llvm/bin/clang, cxx: /usr/local/opt/llvm/bin/clang++} + - {os: macos-12, cc: clang, cxx: clang++} runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 + + - uses: actions/cache/restore@v3 + with: + path: ${{ env.CCACHE_DIR }} + key: ccache-${{ matrix.os }}-${{ matrix.cc }}-${{ github.run_id }} + restore-keys: + ccache-${{ matrix.os }}-${{ matrix.cc }}- - name: Install ubuntu dependencies if: matrix.os == 'ubuntu-22.04' @@ -30,6 +50,7 @@ jobs: sudo apt-get install lsb-release wget software-properties-common && wget -O /tmp/llvm.sh https://apt.llvm.org/llvm.sh && sudo chmod +x /tmp/llvm.sh && sudo /tmp/llvm.sh 15 && sudo apt-get install + ccache clang-15 g++-12 gfortran @@ -63,13 +84,14 @@ jobs: - name: Install homebrew dependencies if: matrix.os == 'macos-12' run: | - brew install gcc@12 llvm boost fftw hdf5 open-mpi openblas + brew install ccache gcc@12 llvm boost fftw hdf5 open-mpi openblas pip3 install mako numpy scipy mpi4py pip3 install -r requirements.txt - name: add clang cxxflags if: ${{ contains(matrix.cxx, 'clang') }} - run: + run: | + echo "PATH=/usr/local/opt/llvm/bin:$PATH" >> $GITHUB_ENV echo "CXXFLAGS=-stdlib=libc++" >> $GITHUB_ENV - name: Build & Install TRIQS @@ -96,7 +118,18 @@ jobs: - name: Test tprf env: DYLD_FALLBACK_LIBRARY_PATH: /usr/local/opt/llvm/lib + OPENBLAS_NUM_THREADS: "1" run: | source $HOME/install/share/triqs/triqsvars.sh cd build ctest -j2 --output-on-failure + + - name: ccache statistics + if: always() + run: ccache -sv + + - uses: actions/cache/save@v3 + if: always() + with: + path: ${{ env.CCACHE_DIR }} + key: ccache-${{ matrix.os }}-${{ matrix.cc }}-${{ github.run_id }} diff --git a/CMakeLists.txt b/CMakeLists.txt index b9606e1d..b9787a79 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,9 @@ cmake_minimum_required(VERSION 3.20 FATAL_ERROR) cmake_policy(VERSION 3.20) +if(POLICY CMP0144) + cmake_policy(SET CMP0144 NEW) +endif() # ############ # Define Project diff --git a/Jenkinsfile b/Jenkinsfile index 2e86e097..e4fd3b33 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -24,7 +24,7 @@ properties([ def platforms = [:] /****************** linux builds (in docker) */ -/* Each platform must have a cooresponding Dockerfile.PLATFORM in triqs/packaging */ +/* Each platform must have a corresponding Dockerfile.PLATFORM in triqs/packaging */ def dockerPlatforms = ["ubuntu-clang", "ubuntu-gcc", "sanitize"] /* .each is currently broken in jenkins */ for (int i = 0; i < dockerPlatforms.size(); i++) {