mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-04 13:19:51 -05:00
Merge topic 'xlf-ninja'
19f267c75e XL: Add support for Ninja and XL Fortran
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4075
This commit is contained in:
@@ -182,6 +182,10 @@ function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src)
|
||||
message(STATUS "The ${lang} compiler identification is unknown")
|
||||
endif()
|
||||
|
||||
if(lang STREQUAL "Fortran" AND CMAKE_${lang}_COMPILER_ID STREQUAL "XL")
|
||||
set(CMAKE_${lang}_XL_CPP "${CMAKE_${lang}_COMPILER_ID_CPP}" PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
set(CMAKE_${lang}_COMPILER_ID "${CMAKE_${lang}_COMPILER_ID}" PARENT_SCOPE)
|
||||
set(CMAKE_${lang}_PLATFORM_ID "${CMAKE_${lang}_PLATFORM_ID}" PARENT_SCOPE)
|
||||
set(CMAKE_${lang}_COMPILER_ARCHITECTURE_ID "${CMAKE_${lang}_COMPILER_ARCHITECTURE_ID}" PARENT_SCOPE)
|
||||
@@ -542,6 +546,12 @@ Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS}
|
||||
ERROR_VARIABLE CMAKE_${lang}_COMPILER_ID_OUTPUT
|
||||
RESULT_VARIABLE CMAKE_${lang}_COMPILER_ID_RESULT
|
||||
)
|
||||
if("${CMAKE_${lang}_COMPILER_ID_OUTPUT}" MATCHES "exec: [^\n]*\\((/[^,\n]*/cpp),CMakeFortranCompilerId.F")
|
||||
set(_cpp "${CMAKE_MATCH_1}")
|
||||
if(EXISTS "${_cpp}")
|
||||
set(CMAKE_${lang}_COMPILER_ID_CPP "${_cpp}" PARENT_SCOPE)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Check the result of compilation.
|
||||
|
||||
@@ -271,6 +271,11 @@ include(CMakeFindBinUtils)
|
||||
include(Compiler/${CMAKE_Fortran_COMPILER_ID}-FindBinUtils OPTIONAL)
|
||||
unset(_CMAKE_PROCESSING_LANGUAGE)
|
||||
|
||||
if(CMAKE_Fortran_XL_CPP)
|
||||
set(_SET_CMAKE_Fortran_XL_CPP
|
||||
"set(CMAKE_Fortran_XL_CPP \"${CMAKE_Fortran_XL_CPP}\")")
|
||||
endif()
|
||||
|
||||
if(CMAKE_Fortran_COMPILER_ARCHITECTURE_ID)
|
||||
set(_SET_CMAKE_Fortran_COMPILER_ARCHITECTURE_ID
|
||||
"set(CMAKE_Fortran_COMPILER_ARCHITECTURE_ID ${CMAKE_Fortran_COMPILER_ARCHITECTURE_ID})")
|
||||
|
||||
@@ -6,6 +6,7 @@ set(CMAKE_Fortran_COMPILER_WRAPPER "@CMAKE_Fortran_COMPILER_WRAPPER@")
|
||||
set(CMAKE_Fortran_PLATFORM_ID "@CMAKE_Fortran_PLATFORM_ID@")
|
||||
set(CMAKE_Fortran_SIMULATE_ID "@CMAKE_Fortran_SIMULATE_ID@")
|
||||
set(CMAKE_Fortran_SIMULATE_VERSION "@CMAKE_Fortran_SIMULATE_VERSION@")
|
||||
@_SET_CMAKE_Fortran_XL_CPP@
|
||||
@_SET_CMAKE_Fortran_COMPILER_ARCHITECTURE_ID@
|
||||
@SET_MSVC_Fortran_ARCHITECTURE_ID@
|
||||
set(CMAKE_AR "@CMAKE_AR@")
|
||||
|
||||
@@ -18,3 +18,7 @@ string(APPEND CMAKE_Fortran_FLAGS_INIT " -qthreaded -qhalt=e")
|
||||
# xlf: 1501-214 (W) command option E reserved for future use - ignored
|
||||
set(CMAKE_Fortran_CREATE_PREPROCESSED_SOURCE)
|
||||
set(CMAKE_Fortran_CREATE_ASSEMBLY_SOURCE)
|
||||
|
||||
set(CMAKE_Fortran_PREPROCESS_SOURCE
|
||||
"<CMAKE_Fortran_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -qpreprocess -qnoobject -qsuppress=1517-020 -tF -B \"${CMAKE_CURRENT_LIST_DIR}/XL-Fortran/\" -WF,--cpp,\"${CMAKE_Fortran_XL_CPP}\",--out,<PREPROCESSED_SOURCE> <SOURCE>"
|
||||
)
|
||||
|
||||
Executable
+29
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Source file.
|
||||
src="$(printf %q "$1")"
|
||||
shift
|
||||
|
||||
# Output file the compiler expects.
|
||||
out="$(printf %q "$1")"
|
||||
shift
|
||||
|
||||
# Create the file the compiler expects. It will check syntax.
|
||||
>"$out"
|
||||
|
||||
cpp='cpp'
|
||||
opts=''
|
||||
while test "$#" != 0; do
|
||||
case "$1" in
|
||||
# Extract the option for the path to cpp.
|
||||
--cpp) shift; cpp="$(printf %q "$1")" ;;
|
||||
# Extract the option for our own output file.
|
||||
--out) shift; out="$(printf %q "$1")" ;;
|
||||
# Collect the rest of the command line.
|
||||
*) opts="$opts $(printf %q "$1")" ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# Execute the real preprocessor tool.
|
||||
eval "exec $cpp $src $out $opts"
|
||||
Reference in New Issue
Block a user