https://github.com/fortran-lang/setup-fortran
GitHub action to setup Fortran compiler and toolchain
https://github.com/fortran-lang/setup-fortran
Last synced: 9 months ago
JSON representation
GitHub action to setup Fortran compiler and toolchain
- Host: GitHub
- URL: https://github.com/fortran-lang/setup-fortran
- Owner: fortran-lang
- License: apache-2.0
- Created: 2021-08-19T11:50:57.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2025-03-20T15:32:19.000Z (9 months ago)
- Last Synced: 2025-03-29T21:05:29.406Z (9 months ago)
- Language: Shell
- Homepage: https://github.com/marketplace/actions/setup-fortran
- Size: 104 KB
- Stars: 84
- Watchers: 5
- Forks: 27
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Setup Fortran
[](https://github.com/fortran-lang/setup-fortran/actions/workflows/test.yml)
[](https://www.repostatus.org/#active)
[](https://github.com/fortran-lang/setup-fortran/tags/latest)
Set up a Fortran compiler on Ubuntu, macOS and Windows runners.
- [Usage](#usage)
- [Options](#options)
- [Outputs](#outputs)
- [Environment variables](#environment-variables)
- [Runner compatibility](#runner-compatibility)
- [License](#license)
## Usage
```yaml
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
toolchain:
- {compiler: gcc, version: 13}
- {compiler: intel, version: '2025.0'}
- {compiler: intel-classic, version: '2021.10'}
- {compiler: nvidia-hpc, version: '25.1'}
- {compiler: lfortran, version: '0.45.0'}
include:
- os: ubuntu-latest
toolchain: {compiler: gcc, version: 12}
exclude:
- os: macos-latest
toolchain: {compiler: intel, version: '2023.2'}
- os: macos-latest
toolchain: {compiler: nvidia-hpc, version: '23.11'}
- os: windows-latest
toolchain: {compiler: nvidia-hpc, version: '23.11'}
steps:
- uses: fortran-lang/setup-fortran@v1
id: setup-fortran
with:
compiler: ${{ matrix.toolchain.compiler }}
version: ${{ matrix.toolchain.version }}
- run: |
${{ env.FC }} ... # environment vars FC, CC, and CXX are set
${{ steps.setup-fortran.outputs.fc }} ... # outputs work too
```
## Options
- *compiler*: Compiler toolchain to setup, available options are
- *gcc* for `gfortran`
- *intel* for `ifx`
- *intel-classic* for `ifort`
- *lfortran* for `lfortran`
- *nvidia-hpc* for `nvfortran`
- *version*: Version of the compiler toolchain. See [runner compatibility](#runner-compatibility) charts below.
## Outputs
The action sets the following outputs:
- `fc`: Fortran compiler executable, e.g. `gfortran`
- `cc`: C compiler executable, e.g. `gcc`
- `cxx`: C++ compiler executable, e.g. `g++`
C/C++ compilers of the same toolchain/version are provided where available. If a standalone Fortran compiler is selected, the action will attempt to configure compatible C/C++ compilers (typically GCC, or MSVC on Windows), but this is not guaranteed — use at your own risk.
## Environment variables
The same values are also set as environment variables:
- `FC`
- `CC`
- `CXX`
Corresponding FPM environment variables are also set:
- `FPM_FC`
- `FPM_CC`
- `FPM_CXX`
These are made available to subsequent workflow steps via the [`GITHUB_ENV` environment file mechanism](https://docs.github.com/en/actions/learn-github-actions/environment-variables#passing-values-between-steps-and-jobs-in-a-workflow).
## Runner compatibility
Toolchain support varies across GitHub-hosted runner images.
| runner | gcc 12 | gcc 13 | gcc 14 | intel 2021.1 | intel 2021.1.2 | intel 2021.2 | intel 2021.4 | intel 2022.0 | intel 2022.1 | intel 2022.2 | intel 2022.2.1 | intel 2023.0 | intel 2023.1 | intel 2023.2 | intel 2024.0 | intel 2024.1 | intel 2025.0 | intel-classic 2021.1 | intel-classic 2021.1.2 | intel-classic 2021.2 | intel-classic 2021.3 | intel-classic 2021.4 | intel-classic 2021.5 | intel-classic 2021.6 | intel-classic 2021.7 | intel-classic 2021.7.1 | intel-classic 2021.8 | intel-classic 2021.9 | intel-classic 2021.10 | intel-classic 2021.11 | intel-classic 2021.12 | lfortran 0.41.0 | lfortran 0.42.0 | lfortran 0.43.0 | lfortran 0.44.0 | lfortran 0.45.0 | nvidia-hpc 20.11 | nvidia-hpc 21.11 | nvidia-hpc 22.11 | nvidia-hpc 23.3 | nvidia-hpc 23.5 | nvidia-hpc 23.7 | nvidia-hpc 23.9 | nvidia-hpc 23.11 | nvidia-hpc 24.1 | nvidia-hpc 24.3 | nvidia-hpc 24.5 | nvidia-hpc 25.1 |
|:-------------|:----------------|:----------------|:----------------|:----------------------|:------------------------|:----------------------|:----------------------|:----------------------|:----------------------|:----------------------|:------------------------|:----------------------|:----------------------|:----------------------|:----------------------|:----------------------|:----------------------|:------------------------------|:--------------------------------|:------------------------------|:------------------------------|:------------------------------|:------------------------------|:------------------------------|:------------------------------|:--------------------------------|:------------------------------|:------------------------------|:-------------------------------|:-------------------------------|:-------------------------------|:-------------------------|:-------------------------|:-------------------------|:-------------------------|:-------------------------|:--------------------------|:--------------------------|:--------------------------|:-------------------------|:-------------------------|:-------------------------|:-------------------------|:--------------------------|:-------------------------|:-------------------------|:-------------------------|:-------------------------|
| macos-13 | ✓ | ✓ | ✓ | | | | | | | | | | | | | | | ✓ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ | ✓ | | | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | | | | | | | | |
| macos-14 | ✓ | ✓ | ✓ | | | | | | | | | | | | | | | ✓ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ | ✓ | | | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | | | | | | | | |
| ubuntu-22.04 | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ubuntu-24.04 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | | | | | | ✓ | ✓ |
| windows-2019 | ✓ | ✓ | | | | | | | ✓ | ✓ | | | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | | | ✓ | ✓ | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | | | | | | | | |
| windows-2022 | ✓ | ✓ | | | | | | | ✓ | ✓ | | | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | | | ✓ | ✓ | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | | | | | | | | |
**Note:** Intel's `ifx` compiler is not supported on macOS, so the `intel` option redirects to `intel-classic` (`ifort`).
**Note:** LFortran is currently only discoverable by name with `bash` on Windows, see [here for context](https://github.com/fortran-lang/setup-fortran/pull/57#issuecomment-2021605094).
## License
Licensed under the Apache License, Version 2.0 (the “License”);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an *“as is” basis*,
*without warranties or conditions of any kind*, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Unless you explicitly state otherwise, any contribution intentionally
submitted for inclusion in this project by you, as defined in the
Apache-2.0 license, shall be licensed as above, without any additional
terms or conditions.