name: CMake Build on: workflow_dispatch: inputs: install_prefix: description: 'CMake install prefix (relative to workspace)' default: 'install' required: true build_type: description: 'CMake build type' default: 'Release' required: true push: branches: - cmake - test_dev pull_request: branches: - cmake - test_dev jobs: build: runs-on: ubuntu-latest steps: # Step 1: Checkout repository (full history for git describe) - name: Checkout repository uses: actions/checkout@v3 with: fetch-depth: 0 # Step 2: Install dependencies (CMake, compiler, MPI, BLAS/LAPACK) - name: Setup dependencies run: | sudo apt update sudo apt install -y cmake build-essential mpich libmpich-dev libopenblas-dev liblapack-dev # Step 3: Set defaults for build variables - name: Set build variables run: | echo "BUILD_TYPE=${{ github.event.inputs.build_type || 'Release' }}" >> $GITHUB_ENV echo "INSTALL_PREFIX=${{ github.workspace }}/${{ github.event.inputs.install_prefix || 'install' }}" >> $GITHUB_ENV # Step 4: Configure CMake - name: Configure CMake run: cmake -S . -B build \ -DCMAKE_BUILD_TYPE=$BUILD_TYPE \ -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX \ -DCMAKE_Fortran_COMPILER=mpifort \ -DCMAKE_C_COMPILER=mpicc # Step 5: Build the project - name: Build run: cmake --build build -- -j$(nproc) # Step 6: Install into workspace - name: Install run: cmake --install build