diff options
author | Brad King <brad.king@kitware.com> | 2021-02-18 12:29:03 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2021-02-18 12:36:32 (GMT) |
commit | c9244f369a149be83fe0807d857d3dde3f7f54aa (patch) | |
tree | 005d4554e03e85c2c597f0a4833df28be658bfd6 /Modules/Compiler | |
parent | 056d4bf528f3296f0b937fb127b972e8a91ffa06 (diff) | |
download | CMake-c9244f369a149be83fe0807d857d3dde3f7f54aa.zip CMake-c9244f369a149be83fe0807d857d3dde3f7f54aa.tar.gz CMake-c9244f369a149be83fe0807d857d3dde3f7f54aa.tar.bz2 |
IntelLLVM: Make explicit Fortran preprocessing under Ninja more robust
Tell the Fortran compiler to write preprocessor output directly to a
file, as we do for the GNU compiler. The previous "redirect stdout"
approach could break during ABI detection with some `mpif90` wrappers
that add version information to stdout when called with `-v`.
Issue: #21828
Diffstat (limited to 'Modules/Compiler')
-rw-r--r-- | Modules/Compiler/IntelLLVM-Fortran.cmake | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/Modules/Compiler/IntelLLVM-Fortran.cmake b/Modules/Compiler/IntelLLVM-Fortran.cmake index 3dfa099..710803f 100644 --- a/Modules/Compiler/IntelLLVM-Fortran.cmake +++ b/Modules/Compiler/IntelLLVM-Fortran.cmake @@ -13,7 +13,15 @@ set(CMAKE_Fortran_COMPILE_WITH_DEFINES 1) set(CMAKE_Fortran_CREATE_PREPROCESSED_SOURCE "<CMAKE_Fortran_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>") set(CMAKE_Fortran_CREATE_ASSEMBLY_SOURCE "<CMAKE_Fortran_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>") -set(CMAKE_Fortran_PREPROCESS_SOURCE - "<CMAKE_Fortran_COMPILER> -fpp <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>") +if(CMAKE_HOST_WIN32) + # MSVC-like + set(CMAKE_Fortran_PREPROCESS_SOURCE + "<CMAKE_Fortran_COMPILER> -fpp <DEFINES> <INCLUDES> <FLAGS> -P <SOURCE> -Fi<PREPROCESSED_SOURCE>") +else() + # GNU-like + set(CMAKE_Fortran_PREPROCESS_SOURCE + "<CMAKE_Fortran_COMPILER> -fpp <DEFINES> <INCLUDES> <FLAGS> -P <SOURCE> -o <PREPROCESSED_SOURCE>") +endif() + set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_ON "-fpp") set(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_OFF "-nofpp") |