|
21 | 21 | matrix: |
22 | 22 | os: [ubuntu-latest, macos-latest] |
23 | 23 | gcc_v: [9, 10, 11] # Version of GFortran we want to use. |
| 24 | + build: [cmake] |
| 25 | + include: |
| 26 | + - os: ubuntu-latest |
| 27 | + gcc_v: 10 |
| 28 | + build: cmake-inline |
| 29 | + - os: ubuntu-latest |
| 30 | + gcc_v: 10 |
| 31 | + build: make |
24 | 32 | env: |
25 | 33 | FC: gfortran-${{ matrix.gcc_v }} |
26 | 34 | GCC_V: ${{ matrix.gcc_v }} |
| 35 | + BUILD_DIR: ${{ matrix.build == 'cmake' && 'build' || '.' }} |
27 | 36 |
|
28 | 37 | steps: |
29 | 38 | - name: Checkout code |
@@ -58,39 +67,38 @@ jobs: |
58 | 67 | brew link gcc@${GCC_V} |
59 | 68 |
|
60 | 69 | - name: Configure with CMake |
| 70 | + if: ${{ contains(matrix.build, 'cmake') }} |
61 | 71 | run: >- |
62 | 72 | cmake -Wdev |
63 | 73 | -DCMAKE_BUILD_TYPE=Release |
64 | 74 | -DCMAKE_MAXIMUM_RANK:String=4 |
65 | 75 | -DCMAKE_INSTALL_PREFIX=$PWD/_dist |
66 | | - -S . -B build |
| 76 | + -S . -B ${{ env.BUILD_DIR }} |
67 | 77 |
|
68 | 78 | - name: Build and compile |
69 | | - run: cmake --build build --parallel |
| 79 | + if: ${{ contains(matrix.build, 'cmake') }} |
| 80 | + run: cmake --build ${{ env.BUILD_DIR }} --parallel |
70 | 81 |
|
71 | 82 | - name: catch build fail |
72 | | - run: cmake --build build --verbose --parallel 1 |
73 | | - if: failure() |
| 83 | + run: cmake --build ${{ env.BUILD_DIR }} --verbose --parallel 1 |
| 84 | + if: ${{ failure() && contains(matrix.build, 'cmake') }} |
74 | 85 |
|
75 | 86 | - name: test |
76 | | - run: ctest --test-dir build --parallel --output-on-failure |
| 87 | + if: ${{ contains(matrix.build, 'cmake') }} |
| 88 | + run: ctest --test-dir ${{ env.BUILD_DIR }} --parallel --output-on-failure |
77 | 89 |
|
78 | 90 | - name: Install project |
79 | | - run: cmake --install build |
80 | | - |
81 | | - - name: Test in-tree builds |
82 | | - if: contains( matrix.gcc_v, '10') # Only test one compiler on each platform |
83 | | - run: | |
84 | | - cmake -DCMAKE_MAXIMUM_RANK=4 . |
85 | | - cmake --build . |
86 | | - cmake --build . --target test |
| 91 | + if: ${{ contains(matrix.build, 'cmake') }} |
| 92 | + run: cmake --install ${{ env.BUILD_DIR }} |
87 | 93 |
|
88 | 94 | - name: Test manual makefiles |
89 | | - if: contains(matrix.os, 'ubuntu') && contains(matrix.gcc_v, '10') |
| 95 | + if: ${{ matrix.build == 'make' }} |
90 | 96 | run: | |
91 | | - make -f Makefile.manual FYPPFLAGS="-DMAXRANK=4" -j |
| 97 | + make -f Makefile.manual -j |
92 | 98 | make -f Makefile.manual test |
93 | 99 | make -f Makefile.manual clean |
| 100 | + env: |
| 101 | + FYPPFLAGS: "-DMAXRANK=4" |
94 | 102 |
|
95 | 103 | intel-build: |
96 | 104 | runs-on: ${{ matrix.os }} |
|
0 commit comments