|
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,35 +67,32 @@ 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 | 97 | make -f Makefile.manual FYPPFLAGS="-DMAXRANK=4" -j
|
92 | 98 | make -f Makefile.manual test
|
|
0 commit comments