mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-21 14:40:48 +08:00
Tests: Update for the Fujitsu compiler
This commit is contained in:
@@ -7,7 +7,7 @@ if(NOT DEFINED CMAKE_Fortran_COMPILER)
|
|||||||
message(STATUS ${_desc})
|
message(STATUS ${_desc})
|
||||||
file(REMOVE_RECURSE ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/CheckFortran)
|
file(REMOVE_RECURSE ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/CheckFortran)
|
||||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/CheckFortran/CMakeLists.txt"
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/CheckFortran/CMakeLists.txt"
|
||||||
"cmake_minimum_required(VERSION 2.4)
|
"cmake_minimum_required(VERSION 2.8.12)
|
||||||
project(CheckFortran Fortran)
|
project(CheckFortran Fortran)
|
||||||
file(WRITE \"\${CMAKE_CURRENT_BINARY_DIR}/result.cmake\"
|
file(WRITE \"\${CMAKE_CURRENT_BINARY_DIR}/result.cmake\"
|
||||||
\"set(CMAKE_Fortran_COMPILER \\\"\${CMAKE_Fortran_COMPILER}\\\")\\n\"
|
\"set(CMAKE_Fortran_COMPILER \\\"\${CMAKE_Fortran_COMPILER}\\\")\\n\"
|
||||||
|
@@ -18,7 +18,7 @@ macro(run_test feature lang)
|
|||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
if(NOT CMAKE_C_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|IntelLLVM)$")
|
if(NOT CMAKE_C_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|IntelLLVM|Fujitsu)$")
|
||||||
get_property(c_features GLOBAL PROPERTY CMAKE_C_KNOWN_FEATURES)
|
get_property(c_features GLOBAL PROPERTY CMAKE_C_KNOWN_FEATURES)
|
||||||
list(FILTER c_features EXCLUDE REGEX "^c_std_[0-9][0-9]")
|
list(FILTER c_features EXCLUDE REGEX "^c_std_[0-9][0-9]")
|
||||||
foreach(feature ${c_features})
|
foreach(feature ${c_features})
|
||||||
@@ -26,7 +26,7 @@ if(NOT CMAKE_C_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|IntelLLVM)$")
|
|||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT CMAKE_CXX_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|IntelLLVM)$")
|
if(NOT CMAKE_CXX_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|IntelLLVM|Fujitsu)$")
|
||||||
get_property(cxx_features GLOBAL PROPERTY CMAKE_CXX_KNOWN_FEATURES)
|
get_property(cxx_features GLOBAL PROPERTY CMAKE_CXX_KNOWN_FEATURES)
|
||||||
list(FILTER cxx_features EXCLUDE REGEX "^cxx_std_[0-9][0-9]")
|
list(FILTER cxx_features EXCLUDE REGEX "^cxx_std_[0-9][0-9]")
|
||||||
foreach(feature ${cxx_features})
|
foreach(feature ${cxx_features})
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
cmake_minimum_required(VERSION 3.0)
|
cmake_minimum_required(VERSION 3.0)
|
||||||
get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||||
|
|
||||||
if(NOT _isMultiConfig AND NOT CMAKE_BUILD_TYPE)
|
if(NOT _isMultiConfig AND NOT CMAKE_BUILD_TYPE)
|
||||||
set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build" FORCE)
|
set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build" FORCE)
|
||||||
endif()
|
endif()
|
||||||
|
@@ -3,7 +3,8 @@
|
|||||||
# ifndef PCH_PCH_H_INCLUDED
|
# ifndef PCH_PCH_H_INCLUDED
|
||||||
# error "Expected PCH_PCH_H_INCLUDED."
|
# error "Expected PCH_PCH_H_INCLUDED."
|
||||||
# endif
|
# endif
|
||||||
#elif defined(__PGIC__) || defined(__ibmxl__) || defined(_CRAYC)
|
#elif defined(__PGIC__) || defined(__ibmxl__) || defined(_CRAYC) || \
|
||||||
|
defined(__FUJITSU)
|
||||||
// No PCH expected but these compilers define macros below.
|
// No PCH expected but these compilers define macros below.
|
||||||
#elif defined(__GNUC__) || defined(__clang__) || defined(_INTEL_COMPILER) || \
|
#elif defined(__GNUC__) || defined(__clang__) || defined(_INTEL_COMPILER) || \
|
||||||
defined(_MSC_VER)
|
defined(_MSC_VER)
|
||||||
|
@@ -46,7 +46,7 @@ function(test_fortran_c_interface_module)
|
|||||||
FortranCInterface_VERIFY()
|
FortranCInterface_VERIFY()
|
||||||
FortranCInterface_VERIFY(CXX)
|
FortranCInterface_VERIFY(CXX)
|
||||||
if(CMAKE_Fortran_COMPILER_SUPPORTS_F90)
|
if(CMAKE_Fortran_COMPILER_SUPPORTS_F90)
|
||||||
if(NOT CMAKE_Fortran_COMPILER_ID MATCHES "SunPro|PathScale|Absoft")
|
if(NOT CMAKE_Fortran_COMPILER_ID MATCHES "SunPro|PathScale|Absoft|Fujitsu")
|
||||||
set(module_expected 1)
|
set(module_expected 1)
|
||||||
endif()
|
endif()
|
||||||
if(FortranCInterface_MODULE_FOUND OR module_expected)
|
if(FortranCInterface_MODULE_FOUND OR module_expected)
|
||||||
|
@@ -117,15 +117,9 @@ if(CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
|
|||||||
target_compile_definitions(IntelIfDef PRIVATE SOME_DEF)
|
target_compile_definitions(IntelIfDef PRIVATE SOME_DEF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Skip these tests if compiler/version doesn't have preprocessing flags
|
# Skip these tests if compiler/version does enable and disable preprocessing
|
||||||
if((CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 4.4)
|
if(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_ON AND
|
||||||
OR (CMAKE_Fortran_COMPILER_ID STREQUAL "XL" AND CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 15.1.6))
|
CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_OFF)
|
||||||
set(test_pp_flags 0)
|
|
||||||
else()
|
|
||||||
set(test_pp_flags 1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(test_pp_flags)
|
|
||||||
# Test that we can always preprocess a target
|
# Test that we can always preprocess a target
|
||||||
add_executable(preprocess_target preprocess2.f)
|
add_executable(preprocess_target preprocess2.f)
|
||||||
set_property(TARGET preprocess_target PROPERTY Fortran_PREPROCESS ON)
|
set_property(TARGET preprocess_target PROPERTY Fortran_PREPROCESS ON)
|
||||||
@@ -145,17 +139,22 @@ set_property(SOURCE no_preprocess_source_lower.f PROPERTY Fortran_PREPROCESS OFF
|
|||||||
|
|
||||||
# Test that we can explicitly not preprocess a target or source.
|
# Test that we can explicitly not preprocess a target or source.
|
||||||
# This will not work on certain compilers due to either missing a
|
# This will not work on certain compilers due to either missing a
|
||||||
# "don't preprocess" flag, or due to choice of file extension.
|
# "don't preprocess" flag, or due to the flags being ignored for
|
||||||
if(test_pp_flags AND NOT CMAKE_Fortran_COMPILER_ID MATCHES "(Flang|NAG|PGI|NVHPC|SunPro|XL)")
|
# extensions like '.F' and '.fpp'.
|
||||||
|
if(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_OFF AND
|
||||||
|
NOT CMAKE_Fortran_COMPILER_ID MATCHES "(Flang|NAG|PGI|NVHPC|SunPro|XL)")
|
||||||
add_library(no_preprocess_target STATIC no_preprocess_target_upper.F)
|
add_library(no_preprocess_target STATIC no_preprocess_target_upper.F)
|
||||||
target_compile_options(no_preprocess_target PRIVATE -DINTEGER=nonsense)
|
target_compile_options(no_preprocess_target PRIVATE -DINTEGER=nonsense)
|
||||||
|
|
||||||
add_library(no_preprocess_source STATIC no_preprocess_source_upper.F)
|
add_library(no_preprocess_source STATIC no_preprocess_source_upper.F)
|
||||||
target_compile_options(no_preprocess_source PRIVATE -DINTEGER=nonsense)
|
target_compile_options(no_preprocess_source PRIVATE -DINTEGER=nonsense)
|
||||||
|
|
||||||
if(NOT CMAKE_Fortran_COMPILER_ID STREQUAL "Cray"
|
if(NOT CMAKE_Fortran_COMPILER_ID STREQUAL "Cray"
|
||||||
AND NOT "${CMAKE_Fortran_COMPILER_ID};${CMAKE_Fortran_SIMULATE_ID}" MATCHES "Intel(LLVM)?;MSVC")
|
AND NOT "${CMAKE_Fortran_COMPILER_ID};${CMAKE_Fortran_SIMULATE_ID}" MATCHES "Intel(LLVM)?;MSVC")
|
||||||
target_sources(no_preprocess_target PRIVATE no_preprocess_target_fpp.fpp)
|
target_sources(no_preprocess_target PRIVATE no_preprocess_target_fpp.fpp)
|
||||||
target_sources(no_preprocess_source PRIVATE no_preprocess_source_fpp.fpp)
|
target_sources(no_preprocess_source PRIVATE no_preprocess_source_fpp.fpp)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set_property(TARGET no_preprocess_target PROPERTY Fortran_PREPROCESS OFF)
|
set_property(TARGET no_preprocess_target PROPERTY Fortran_PREPROCESS OFF)
|
||||||
set_property(SOURCE no_preprocess_source_upper.F no_preprocess_source_fpp.fpp PROPERTY Fortran_PREPROCESS OFF)
|
set_property(SOURCE no_preprocess_source_upper.F no_preprocess_source_fpp.fpp PROPERTY Fortran_PREPROCESS OFF)
|
||||||
endif()
|
endif()
|
||||||
|
@@ -52,7 +52,7 @@ endmacro()
|
|||||||
# detailed features tables, not just meta-features
|
# detailed features tables, not just meta-features
|
||||||
|
|
||||||
if (CMAKE_C_COMPILE_FEATURES)
|
if (CMAKE_C_COMPILE_FEATURES)
|
||||||
if(NOT CMAKE_C_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|IntelLLVM)$")
|
if (NOT CMAKE_C_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|IntelLLVM|Fujitsu)$")
|
||||||
set(C_expected_features ${CMAKE_C_COMPILE_FEATURES})
|
set(C_expected_features ${CMAKE_C_COMPILE_FEATURES})
|
||||||
list(FILTER C_expected_features EXCLUDE REGEX "^c_std_[0-9][0-9]")
|
list(FILTER C_expected_features EXCLUDE REGEX "^c_std_[0-9][0-9]")
|
||||||
endif()
|
endif()
|
||||||
@@ -95,7 +95,7 @@ if (C_expected_features)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (CMAKE_CXX_COMPILE_FEATURES)
|
if (CMAKE_CXX_COMPILE_FEATURES)
|
||||||
if(NOT CMAKE_CXX_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|IntelLLVM)$")
|
if (NOT CMAKE_CXX_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|IntelLLVM|Fujitsu)$")
|
||||||
set(CXX_expected_features ${CMAKE_CXX_COMPILE_FEATURES})
|
set(CXX_expected_features ${CMAKE_CXX_COMPILE_FEATURES})
|
||||||
list(FILTER CXX_expected_features EXCLUDE REGEX "^cxx_std_[0-9][0-9]")
|
list(FILTER CXX_expected_features EXCLUDE REGEX "^cxx_std_[0-9][0-9]")
|
||||||
endif()
|
endif()
|
||||||
|
@@ -273,7 +273,7 @@ add_RunCMake_test(Graphviz)
|
|||||||
add_RunCMake_test(TargetPropertyGeneratorExpressions)
|
add_RunCMake_test(TargetPropertyGeneratorExpressions)
|
||||||
add_RunCMake_test(Languages)
|
add_RunCMake_test(Languages)
|
||||||
add_RunCMake_test(LinkStatic)
|
add_RunCMake_test(LinkStatic)
|
||||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang)$")
|
if(CMAKE_CXX_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|Fujitsu)$")
|
||||||
add_RunCMake_test(MetaCompileFeatures)
|
add_RunCMake_test(MetaCompileFeatures)
|
||||||
endif()
|
endif()
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
|
@@ -43,4 +43,9 @@ if(CMAKE_Fortran_COMPILER_ID MATCHES SunPro)
|
|||||||
target_link_libraries(hello PRIVATE sunquad)
|
target_link_libraries(hello PRIVATE sunquad)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
elseif(CMAKE_Fortran_COMPILER_ID MATCHES Fujitsu)
|
||||||
|
# Fujitsu Fortran doesn't automatically link its runtime libraries into
|
||||||
|
# SOs
|
||||||
|
target_link_libraries(world PRIVATE fj90i fj90f fjsrcinfo)
|
||||||
|
target_link_libraries(hello PRIVATE fj90i fj90f fjsrcinfo)
|
||||||
endif()
|
endif()
|
||||||
|
Reference in New Issue
Block a user