Pārlūkot izejas kodu

Merge topic 'flang'

d8e03e9b FindOpenMP: Add Flang flag.
2f3a07a9 Flang: Add support for flang Fortran compiler

Acked-by: Kitware Robot <[email protected]>
Merge-request: !1141
Brad King 8 gadi atpakaļ
vecāks
revīzija
900f75868c

+ 6 - 0
Help/release/dev/flang.rst

@@ -0,0 +1,6 @@
+flang
+-----
+
+* The `flang`_ Fortran compiler is now supported, with compiler id ``Flang``.
+
+.. _`flang`: https://github.com/flang-compiler/flang

+ 1 - 0
Help/variable/CMAKE_LANG_COMPILER_ID.rst

@@ -27,6 +27,7 @@ include:
   NVIDIA = NVIDIA CUDA Compiler (nvidia.com)
   OpenWatcom = Open Watcom (openwatcom.org)
   PGI = The Portland Group (pgroup.com)
+  Flang = Flang Fortran Compiler
   PathScale = PathScale (pathscale.com)
   SDCC = Small Device C Compiler (sdcc.sourceforge.net)
   SunPro = Oracle Solaris Studio (oracle.com)

+ 4 - 2
Modules/CMakeDetermineFortranCompiler.cmake

@@ -52,6 +52,7 @@ else()
       #  frt: Fujitsu F77 compiler
       #  pathf90/pathf95/pathf2003: PathScale Fortran compiler
       #  pgf77/pgf90/pgf95/pgfortran: Portland Group F77/F90/F95 compilers
+      #  flang: Flang Fortran compiler
       #  xlf/xlf90/xlf95: IBM (AIX) F77/F90/F95 compilers
       #  lf95: Lahey-Fujitsu F95 compiler
       #  fl32: Microsoft Fortran 77 "PowerStation" compiler
@@ -68,7 +69,7 @@ else()
       set(CMAKE_Fortran_COMPILER_LIST
         ftn
         ifort ifc af95 af90 efc f95 pathf2003 pathf95 pgf95 pgfortran lf95 xlf95
-        fort gfortran gfortran-4 g95 f90 pathf90 pgf90 xlf90 epcf90 fort77
+        fort flang gfortran gfortran-4 g95 f90 pathf90 pgf90 xlf90 epcf90 fort77
         frt pgf77 xlf fl32 af77 g77 f77 nag
         )
 
@@ -77,10 +78,11 @@ else()
       set(_Fortran_COMPILER_NAMES_Intel     ifort ifc efc)
       set(_Fortran_COMPILER_NAMES_Absoft    af95 af90 af77)
       set(_Fortran_COMPILER_NAMES_PGI       pgf95 pgfortran pgf90 pgf77)
+      set(_Fortran_COMPILER_NAMES_Flang     flang)
       set(_Fortran_COMPILER_NAMES_PathScale pathf2003 pathf95 pathf90)
       set(_Fortran_COMPILER_NAMES_XL        xlf)
       set(_Fortran_COMPILER_NAMES_VisualAge xlf95 xlf90 xlf)
-      set(_Fortran_COMPILER_NAMES_NAG nagfor)
+      set(_Fortran_COMPILER_NAMES_NAG       nagfor)
     endif()
 
     _cmake_find_compiler(Fortran)

+ 7 - 0
Modules/CMakeFortranCompilerId.F.in

@@ -90,6 +90,13 @@
 # if defined(__PGIC_PATCHLEVEL__)
 #  define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
 # endif
+#elif defined(__FLANG)
+        PRINT *, 'INFO:compiler[Flang]'
+# define COMPILER_VERSION_MAJOR DEC(__FLANG_MAJOR__)
+# define COMPILER_VERSION_MINOR DEC(__FLANG_MINOR__)
+# if defined(__FLANG_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__FLANG_PATCHLEVEL__)
+# endif
 #elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
         PRINT *, 'INFO:compiler[MIPSpro]'
 #       if 0

+ 1 - 0
Modules/Compiler/Flang-FindBinUtils.cmake

@@ -0,0 +1 @@
+include(Compiler/Clang-FindBinUtils)

+ 12 - 0
Modules/Compiler/Flang-Fortran.cmake

@@ -0,0 +1,12 @@
+include(Compiler/Clang)
+__compiler_clang(Fortran)
+
+set(CMAKE_Fortran_PREPROCESS_SOURCE
+    "<CMAKE_Fortran_COMPILER> -cpp <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> -o <PREPROCESSED_SOURCE>")
+
+set(CMAKE_Fortran_FORMAT_FIXED_FLAG "-ffixed-form")
+set(CMAKE_Fortran_FORMAT_FREE_FLAG "-ffree-form")
+
+string(APPEND CMAKE_Fortran_FLAGS_DEBUG_INIT " -fbounds-check")
+
+set(CMAKE_Fortran_MODDIR_FLAG "-J")

+ 1 - 0
Modules/FindOpenMP.cmake

@@ -95,6 +95,7 @@ function(_OPENMP_FLAG_CANDIDATES LANG)
     set(OMP_FLAG_NAG "-openmp")
     set(OMP_FLAG_Absoft "-openmp")
     set(OMP_FLAG_PGI "-mp")
+    set(OMP_FLAG_Flang "-fopenmp")
     set(OMP_FLAG_SunPro "-xopenmp")
     set(OMP_FLAG_XL "-qsmp=omp")
     # Cray compiles with OpenMP automatically