Commit Graph

27 Commits

Author SHA1 Message Date
Isuru Fernando
72d27964b9 Flang: Identify as simulating MSVC on Windows
In `CMakeFortranCompilerId.F.in`, take the `_MSC_VER` out of the
Intel-specific block so it will trigger for other compilers like Flang.
In `Compiler/Clang.cmake`, switch off Fortran too.
2017-10-31 08:47:06 -04:00
Tin Huynh
2f3a07a981 Flang: Add support for flang Fortran compiler
flang is a Fortran compiler built on top of clang [1].  Because flang
shares a lot of commonalities with clang, the flang module piggybacks
off the clang module and overrides certain options.

Add flang to Fortran compiler auto find list.

Update flang preprocessor macros to differentiate from PGI.

Add Flang-FindBinUtils.

[1] https://github.com/flang-compiler/flang
2017-08-31 15:24:59 -04:00
Tom Clune
d47190ba46 NAG: Detect compiler version of NAG Fortran
Fixes: #16817
2017-05-05 11:08:37 -04:00
Chuck Atkins
0763a83655 Cray: Add macro tests to detect the Cray compiler wrappers 2015-12-07 11:09:15 -05:00
Brad King
bbf1757dfa Merge topic 'cray-fortran-version'
09f754f0 Cray: Implement Fortran compiler version detection (#15845)
2015-11-13 08:53:32 -05:00
Brad King
09f754f040 Cray: Implement Fortran compiler version detection (#15845)
We already recognize the Cray Fortran compiler id.  Extract the version
number using the same predefined macros we already use for Cray C and
C++ compilers.
2015-11-12 10:56:23 -05:00
Brad King
77be366c58 Intel: Recognize MSVC version for Intel Fortran 2016 (#15809) 2015-10-26 13:02:37 -04:00
Brad King
c6e1f46475 Fortran: Detect G95 compiler version
The __G95__ and __G95_MINOR__ preprocessor symbols encode the compiler
version as decimal digits.
2015-02-19 09:26:28 -05:00
Brad King
0033faac1d Fortran: Detect PGI compiler version
Port logic from the "Compiler/PGI-DetermineCompiler" module into
"CMakeFortranCompilerId.F.in".
2015-02-19 09:26:28 -05:00
Brad King
302d47b1fe Fortran: Detect XL and VisualAge compiler versions
Port logic from the "Compiler/XL-*-DetermineCompiler" and
"Compiler/VisualAge-*-DetermineCompiler" modules into
"CMakeFortranCompilerId.F.in".
2015-02-19 09:26:28 -05:00
Brad King
8c8b77a5de Fortran: Detect GNU compiler version
Port logic from the "Compiler/GNU-DetermineCompiler" module into
"CMakeFortranCompilerId.F.in".
2015-02-19 09:26:28 -05:00
Brad King
49562a77f7 Fortran: Detect PathScale compiler version
Port logic from the "Compiler/PathScale-DetermineCompiler" module into
"CMakeFortranCompilerId.F.in".
2015-02-19 09:26:27 -05:00
Brad King
aa77b631d9 Fortran: Detect SunPro compiler version
Port logic from "Compiler/SunPro-*DetermineCompiler" modules into
"CMakeFortranCompilerId.F.in".
2015-02-19 09:26:27 -05:00
Brad King
2e09c4230f Fortran: Detect Intel compiler version
Port logic from the "Compiler/Intel-DetermineCompiler" module into
"CMakeFortranCompilerId.F.in".
2015-02-19 09:26:27 -05:00
Brad King
e6ebc814df Fortran: Add infrastructure to detect compiler version (#15372)
Fortran does not offer syntax to compose a string literal at
preprocessing time from numeric compuations.  Instead encode each digit
of each component as a separate INFO string and compose them in CMake
code after extraction.  Support MAJOR, MINOR, PATCH, and TWEAK
components with up to 8 digits each.
2015-02-19 09:26:27 -05:00
Brad King
d14898b6dc Intel: Fix detection of MSVC version simulated by pre-11.0 Fortran
The Intel Fortran 10 64-bit compiler incorrectly defines _MSC_VER to its
own version (1020) instead of the underlying MSVC tools version.  Since
we expect the compiler to be used only with VS >= 7 tools, assume MSVC
version 13.0 if _MSC_VER is not greater than 1300.
2013-10-18 09:55:59 -04:00
Brad King
a85e17e660 Intel: When simulating MSVC, re-use Windows-MSVC (#14476)
Teach CMake(C|CXX|Fortran)CompilerId* to report the MSVC version
simulated by the Intel compiler, if any.  Refactor the Windows-Intel
platform information helper module to load Windows-MSVC instead of
duplicating the information.  Teach Windows-MSVC to understand when
it is loaded as the simulated Fortran compiler (its preprocessor is
simulated).
2013-10-18 09:55:59 -04:00
Rolf Eike Beer
3d2e6a0687 check for Haiku only with __HAIKU__ 2013-01-07 21:52:45 +01:00
Brad King
ac5b999fff Add Absoft Fortran compiler id and basic flags
Identification at preprocessing time depends on definition of __ABSOFT__
to be added in service pack V11.1.2 of the compiler.
2011-05-20 08:53:36 -04:00
Brad King
58c73c43f6 Detect Fortran target architecture on Windows
Commit 4430bccc (Change the way 32/64 bit compiles are detected with
MSVC and intel, 2009-11-19) added detection of the target processor to C
and CXX language builds with MS and Intel tools.  Do the same for Intel
Fortran for Windows (ifort).  Use /machine:<arch> to link executables.
2010-12-16 09:33:06 -05:00
Brad King
53e76c8f12 Teach CMake about Cray C, C++, and Fortran compilers
The Cray Fortran compiler needs "-em" to enable module output and also
"-J." to place the .mod files in the current working directory (instead
of next to the .o file).
2010-11-12 09:12:08 -05:00
Brad King
1e9f58e605 Recognize the PathScale C/C++/Fortran compilers 2010-01-13 12:12:39 -05:00
Brad King
83816cc6ec Add support for the g95 Fortran compiler
This commit teaches CMake about the g95 compiler from

  http://www.g95.org

We use 'G95' as the compiler id string, and add some basic flags.

See issue #9241.
2009-10-23 08:25:43 -04:00
Brad King
115ecc5750 Teach compiler id about VisualAge -> XL rebranding
IBM rebranded its VisualAge compiler to XL starting at version 8.0.  We
use the compiler id "XL" for newer versions and "VisualAge" for older
versions.  We now also recognize the "z/OS" compiler, which is distinct
from XL.
2009-08-07 10:13:07 -04:00
Brad King
69e366f49b ENH: Check _SGI_COMPILER_VERSION for compiler id
Some SGI compilers define _SGI_COMPILER_VERSION in addition to the old
_COMPILER_VERSION preprocessor symbol.  It is more distinctive, so we
should check it in case the old one is ever removed.
2009-07-14 15:17:21 -04:00
Brad King
eff381185a BUG: Avoid SGI preprocessor bug for Fortran Id
The SGI preprocessor /usr/lib/cpp produces bad output on this code:

  #if 1
  A
  #elif 1
  B
  #else
  C
  #endif

Both 'A' and 'C' appear in the output!  We work around the problem by
using '#elif 1' instead of '#else'.

This fixes detection of the SGI Fortran compiler id in -o32 mode.
2009-07-14 15:16:59 -04:00
Brad King
ef756b96e4 ENH: Identify Fortran compilers with fixed format
This enhances the Fortran compiler id detection by using a source that
can compile either as free or fixed format.  As long as the compiler
knows it should preprocess the source file (.F) the identification can
work.  Even free-format compilers may try fixed-format parsing if the
user specifies certain flags, so we must support both.
2009-06-25 08:45:19 -04:00