Compiler support and recognition
Came up in #220.
At some point we might have to determine which compiler is used with fpm, therefore I tried to collect some information on the various Fortran compilers around. I only have first hand access to a fraction of them, so most of these information are second hand from HPC documentations or build systems.
Feel free to correct or add information to this table. Alternatively, we could move this table to the wiki.
| vendor | Fortran compiler | C compiler | Module output directory | Module include directory | OpenMP | Free for OSS |
|---|---|---|---|---|---|---|
| Gnu | gfortran |
gcc |
-J |
-I |
-fopenmp |
:heavy_check_mark: |
| Intel | ifort |
icc |
-module |
-I |
-qopenmp |
:heavy_check_mark: |
| Intel (Windows) | ifort |
icc |
/module:path |
/I |
/Qopenmp |
:heavy_check_mark: |
| Intel oneAPI | ifx |
icx |
-module |
-I |
-qopenmp |
:heavy_check_mark: |
| PGI | pgfortran |
pgcc |
-module |
-I |
-mp |
:heavy_check_mark: |
| NVIDIA | nvfortran |
nvc |
-module |
-I |
-mp |
:heavy_check_mark: |
| LLVM flang | flang |
clang |
-module |
-I |
-mp |
:heavy_check_mark: |
| LFortran | lfortran |
--- | ? | ? | ? | :heavy_check_mark: |
| Lahey/Futjitsu | lfc |
? | -M |
-I |
-openmp |
? |
| NAG | nagfor |
? | -mdir |
-I |
-openmp |
:x: |
| Cray | crayftn |
craycc |
-J |
-I |
-homp |
? |
| IBM | xlf90 |
? | -qmoddir |
-I |
-qsmp |
:heavy_check_mark: |
| Oracle/Sun | ? | ? | -moddir= |
-M |
-xopenmp |
? |
| Silverfrost FTN95 | ftn95 |
? | ? | /MOD_PATH |
? | ? |
| Elbrus | ? | lcc |
-J |
-I |
-fopenmp |
? |
| Hewlett Packard | ? | ? | ? | ? | ? | discontinued |
| Watcom | ? | ? | ? | ? | ? | discontinued |
| PathScale | ? | ? | -module |
-I |
-mp |
discontinued |
| G95 | ? | ? | -fmod= |
-I |
-fopenmp |
discontinued |
| Open64 | ? | ? | -module |
-I |
-mp |
discontinued |
| Unisys | ? | ? | ? | ? | ? | discontinued |
For now it might be sufficient to only support GCC, since we only guarantee that fpm works when compiled with GCC right now.
First class compiler support requires access to the compiler to allow testing in a CI environment, some of the commercial compilers have free versions for open source developers available.
Overview of compilers known by the meson build system can be found here, actual implementation is here.
Awesome, thanks @awvwgk this is super useful! I've edited to include Intel differences on Windows.
Thanks for putting this together. It will be invaluable as we try to support more compilers.
- I have asked NAG to have free access for use in maintaining NAG support for Meson build system, but never got a reply. I did get replies to other email topics with NAG.
- Intel (non-oneAPI) is also free for OSS on Windows
- IBM XL is generally available at no cost assuming you have an IBM Power system to run it on.
I found that Ubuntu Focal (ubuntu-20.04 image) has a flang package available.
This Ubuntu flang possibly came from Debian. It might be quite out of date i.e. syntax bugs that might make issues for modern Fortran packages.
@awvwgk This has to be the most comprehensive listing of Fortran compilers that I've ever seen. Bravo!
Yes I think this would be great for the WIki insetad of Issue. Also, PGI is now also discontinued, replaced by NVIDIA
Feel free to create a wiki page for it, the wiki should be still world-editable.
The wiki isn't world editable
That can be fixed. Try again.
Thanks, I put an updated version of this table at https://github.com/fortran-lang/fpm/wiki/Compiler-support