@@ -21,70 +21,70 @@ jobs:
21
21
strategy :
22
22
fail-fast : false
23
23
matrix :
24
- os : [ubuntu-latest, macos-11, windows-latest]
25
- gcc_v : [10,11,12] # Version of GFortran we want to use.
24
+ os : [ubuntu-latest, macos-12, windows-latest]
25
+ toolchain :
26
+ - {compiler: gcc, version: 10}
27
+ - {compiler: gcc, version: 11}
28
+ - {compiler: gcc, version: 12}
29
+ - {compiler: gcc, version: 13}
30
+ exclude :
31
+ - os : macos-12
32
+ toolchain : {compiler: gcc, version: 13}
26
33
include :
27
- - os : ubuntu-latest
28
- os-arch : linux-x86_64
29
- release-flags : --flag '--static -g -fbacktrace -O3'
30
-
31
- - os : macos-11
32
- os-arch : macos-x86_64
33
- release-flags : --flag '-g -fbacktrace -O3'
34
-
35
- - os : windows-latest
36
- os-arch : windows-x86_64
37
- release-flags : --flag '--static -g -fbacktrace -O3'
38
- exe : .exe
39
-
40
- env :
41
- FC : gfortran
42
- GCC_V : ${{ matrix.gcc_v }}
34
+ - os : ubuntu-latest
35
+ os-arch : linux-x86_64
36
+ release-flags : --flag '--static -g -fbacktrace -O3'
37
+ - os : macos-12
38
+ os-arch : macos-x86_64
39
+ release-flags : --flag '-g -fbacktrace -O3'
40
+ - os : windows-latest
41
+ os-arch : windows-x86_64
42
+ release-flags : --flag '--static -g -fbacktrace -O3'
43
+ exe : .exe
43
44
44
45
steps :
45
46
- name : Checkout code
46
47
uses : actions/checkout@v4
47
48
48
- - name : Install GFortran macOS
49
- if : contains(matrix.os, 'macos')
50
- run : |
51
- ln -s /usr/local/bin/gfortran-${GCC_V} /usr/local/bin/gfortran
52
- which gfortran-${GCC_V}
53
- which gfortran
54
- # Backport gfortran shared libraries to version 9 folder. This is necessary because all macOS releases of fpm
55
- # have these paths hardcoded in the executable (no PIC?). As the gcc ABIs have not changed from 9 to 10, we
56
- # can just create symbolic links for now. This can be removed when an updated fpm release is built with gcc-10
57
- mkdir /usr/local/opt/gcc@9
58
- mkdir /usr/local/opt/gcc@9/lib
59
- mkdir /usr/local/opt/gcc@9/lib/gcc
60
- mkdir /usr/local/opt/gcc@9/lib/gcc/9
61
- mkdir /usr/local/lib/gcc/9
62
- ln -fs /usr/local/opt/gcc@${GCC_V}/lib/gcc/${GCC_V}/libquadmath.0.dylib /usr/local/opt/gcc@9/lib/gcc/9/libquadmath.0.dylib
63
- ln -fs /usr/local/opt/gcc@${GCC_V}/lib/gcc/${GCC_V}/libgfortran.5.dylib /usr/local/opt/gcc@9/lib/gcc/9/libgfortran.5.dylib
64
- ln -fs /usr/local/lib/gcc/${GCC_V}/libgcc_s.1.dylib /usr/local/lib/gcc/9/libgcc_s.1.dylib
65
-
66
- - name : Install GFortran Linux
67
- if : contains(matrix.os, 'ubuntu')
68
- run : |
69
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${GCC_V} 100 \
70
- --slave /usr/bin/gfortran gfortran /usr/bin/gfortran-${GCC_V} \
71
- --slave /usr/bin/gcov gcov /usr/bin/gcov-${GCC_V}
72
-
73
- - name : Install GFortran Windows
74
- if : contains(matrix.os, 'windows')
75
- run : |
76
- Invoke-WebRequest -Uri $Env:GCC_DOWNLOAD -OutFile mingw-w64.zip
77
- Expand-Archive mingw-w64.zip
78
- echo "$pwd\mingw-w64\mingw64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
79
- env :
80
- GCC_DOWNLOAD : " https://github.com/brechtsanders/winlibs_mingw/releases/download/10.4.0-10.0.0-msvcrt-r1/winlibs-x86_64-posix-seh-gcc-10.4.0-mingw-w64msvcrt-10.0.0-r1.zip"
49
+ - name : Setup Fortran compiler
50
+ uses :
fortran-lang/[email protected]
51
+ id : setup-fortran
52
+ with :
53
+ compiler : ${{ matrix.toolchain.compiler }}
54
+ version : ${{ matrix.toolchain.version }}
81
55
82
56
# Phase 1: Bootstrap fpm with existing version
83
57
- name : Install fpm
84
58
uses : fortran-lang/setup-fpm@v5
85
59
with :
86
60
fpm-version : ' v0.8.0'
87
61
62
+ # Backport gfortran shared libraries to version 9 folder. This is necessary because the macOS release of fpm
63
+ # 0.10.0 used for bootstrapping has these paths hardcoded in the executable.
64
+ - name : MacOS patch libgfortran
65
+ if : contains(matrix.os, 'macos') && !contains(matrix.toolchain.version, '10')
66
+ run : |
67
+ which gfortran-${{ matrix.toolchain.version }}
68
+ which gfortran
69
+ mkdir /usr/local/opt/gcc@10
70
+ mkdir /usr/local/opt/gcc@10/lib
71
+ mkdir /usr/local/opt/gcc@10/lib/gcc
72
+ mkdir /usr/local/opt/gcc@10/lib/gcc/10
73
+ mkdir /usr/local/lib/gcc/10
74
+ ln -fs /usr/local/opt/gcc@${{ matrix.toolchain.version }}/lib/gcc/${{ matrix.toolchain.version }}/libquadmath.0.dylib /usr/local/opt/gcc@10/lib/gcc/10/libquadmath.0.dylib
75
+ ln -fs /usr/local/opt/gcc@${{ matrix.toolchain.version }}/lib/gcc/${{ matrix.toolchain.version }}/libgfortran.5.dylib /usr/local/opt/gcc@10/lib/gcc/10/libgfortran.5.dylib
76
+ ln -fs /usr/local/lib/gcc/${{ matrix.toolchain.version }}/libgcc_s.1.dylib /usr/local/lib/gcc/10/libgcc_s.1.dylib
77
+
78
+ # gcc and g++ will point to clang/clang++: use versioned alias for fpm
79
+ - name : MacOS patch C and C++ compilers
80
+ if : contains(matrix.os, 'macos')
81
+ run : |
82
+ echo "CC=gcc-${{ matrix.toolchain.version }}" >> $GITHUB_ENV
83
+ echo "FPM_CC=gcc-${{ matrix.toolchain.version }}" >> $GITHUB_ENV
84
+ echo "CXX=g++-${{ matrix.toolchain.version }}" >> $GITHUB_ENV
85
+ echo "FPM_CXX=g++-${{ matrix.toolchain.version }}" >> $GITHUB_ENV
86
+ echo "FPM_LDFLAGS=-lstdc++" >> $GITHUB_ENV
87
+
88
88
- name : Remove fpm from path
89
89
shell : bash
90
90
run : |
@@ -139,11 +139,6 @@ jobs:
139
139
env :
140
140
REGEX : ' [0-9]\{1,4\}\.[0-9]\{1,4\}\.[0-9]\{1,4\}'
141
141
142
- - name : Build example packages
143
- shell : bash
144
- run : |
145
- ci/run_tests.sh "${{ env.FPM }}"
146
-
147
142
- name : Build Fortran fpm
148
143
shell : bash
149
144
run : |
@@ -173,7 +168,7 @@ jobs:
173
168
rm -v ${{ env.FPM }}
174
169
echo "FPM_RELEASE=${{ env.EXE }}" >> $GITHUB_ENV
175
170
env :
176
- EXE : fpm-${{ env.VERSION }}-${{ matrix.os-arch }}-gcc-${{ matrix.gcc_v }}${{ matrix.exe }}
171
+ EXE : fpm-${{ env.VERSION }}-${{ matrix.os-arch }}-gcc-${{ matrix.toolchain.version }}${{ matrix.exe }}
177
172
178
173
- name : Run release version
179
174
shell : bash
0 commit comments