mirror of https://github.com/QMCPACK/qmcpack.git
Add C CXX compiler mismatch check.
This commit is contained in:
parent
8717a714c3
commit
c9ae2be701
|
@ -1,7 +1,7 @@
|
|||
######################################################################
|
||||
# CMake version and policies
|
||||
######################################################################
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.14.0)
|
||||
cmake_minimum_required(VERSION 3.14.0)
|
||||
|
||||
# CMP0074: CMake find_package will use <PackageName>_ROOT CMake variable
|
||||
# and environment variable in search path.
|
||||
|
@ -356,55 +356,50 @@ ELSE(CMAKE_TOOLCHAIN_FILE)
|
|||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
#------------------------------------
|
||||
# Identify the compiler -- This serves only to deal with case where only C or CXX is set, refactor?
|
||||
#------------------------------------
|
||||
IF ( CMAKE_C_COMPILER_WORKS OR CMAKE_C_COMPILER_WORKS )
|
||||
IF( (CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR ( CMAKE_C_COMPILER_ID MATCHES "GNU") )
|
||||
SET( COMPILER GNU )
|
||||
ELSEIF( (CMAKE_CXX_COMPILER_ID MATCHES "XL") OR ( CMAKE_C_COMPILER_ID MATCHES "XL") )
|
||||
SET( COMPILER IBM )
|
||||
ELSEIF( (CMAKE_CXX_COMPILER_ID MATCHES "IntelLLVM") OR (CMAKE_C_COMPILER_ID MATCHES "IntelLLVM") )
|
||||
SET( COMPILER Clang )
|
||||
ELSEIF( (CMAKE_CXX_COMPILER_ID MATCHES "Intel") OR (CMAKE_C_COMPILER_ID MATCHES "Intel") )
|
||||
SET( COMPILER Intel )
|
||||
ELSEIF( (CMAKE_CXX_COMPILER_ID MATCHES "PGI") OR (CMAKE_C_COMPILER_ID MATCHES "PGI") )
|
||||
SET( COMPILER PGI )
|
||||
ELSEIF( (CMAKE_CXX_COMPILER_ID MATCHES "NVHPC") OR (CMAKE_C_COMPILER_ID MATCHES "NVHPC") )
|
||||
SET( COMPILER PGI )
|
||||
ELSEIF( (CMAKE_CXX_COMPILER_ID MATCHES "Cray") OR (CMAKE_C_COMPILER_ID MATCHES "Cray") )
|
||||
SET( COMPILER Cray )
|
||||
ELSEIF( (CMAKE_CXX_COMPILER_ID MATCHES "Clang") OR (CMAKE_C_COMPILER_ID MATCHES "Clang") )
|
||||
SET( COMPILER Clang )
|
||||
ELSE()
|
||||
SET(USING_DEFAULT TRUE)
|
||||
MESSAGE("${CMAKE_C_COMPILER_ID}")
|
||||
MESSAGE(WARNING "Unknown C/C++ compiler, default flags will be used")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
MESSAGE(WARNING "No compiler identified")
|
||||
ENDIF()
|
||||
MESSAGE(STATUS "Compiler: ${COMPILER}")
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
set(COMPILER GNU)
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "XL")
|
||||
set(COMPILER IBM)
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "IntelLLVM")
|
||||
set(COMPILER Clang)
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
|
||||
set(COMPILER Intel)
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "PGI" OR CMAKE_CXX_COMPILER_ID MATCHES "NVHPC")
|
||||
set(COMPILER PGI)
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Cray")
|
||||
set(COMPILER Cray)
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
set(COMPILER Clang)
|
||||
else()
|
||||
message("${CMAKE_CXX_COMPILER_ID}")
|
||||
message(WARNING "Unknown C/C++ compiler ${CMAKE_CXX_COMPILER_ID}, default flags will be used")
|
||||
endif()
|
||||
message(STATUS "Compiler identified by QMCPACK as : ${COMPILER}")
|
||||
|
||||
#------------------------------------
|
||||
# Include compiler-specific cmake file
|
||||
#------------------------------------
|
||||
IF( ${COMPILER} MATCHES "IBM" )
|
||||
INCLUDE(${PROJECT_CMAKE}/IBMCompilers.cmake)
|
||||
ELSEIF( ${COMPILER} MATCHES "Intel" )
|
||||
INCLUDE(${PROJECT_CMAKE}/IntelCompilers.cmake)
|
||||
ELSEIF( ${COMPILER} MATCHES "GNU" )
|
||||
INCLUDE(${PROJECT_CMAKE}/GNUCompilers.cmake)
|
||||
ELSEIF( ${COMPILER} MATCHES "Clang" )
|
||||
INCLUDE(${PROJECT_CMAKE}/ClangCompilers.cmake)
|
||||
ELSEIF( ${COMPILER} MATCHES "PGI" )
|
||||
INCLUDE(${PROJECT_CMAKE}/PGICompilers.cmake)
|
||||
ELSE()
|
||||
MESSAGE(WARNING "No default file for compiler (${COMPILER})")
|
||||
ENDIF()
|
||||
if(COMPILER MATCHES "IBM")
|
||||
include(${PROJECT_CMAKE}/IBMCompilers.cmake)
|
||||
elseif(COMPILER MATCHES "Intel")
|
||||
include(${PROJECT_CMAKE}/IntelCompilers.cmake)
|
||||
elseif(COMPILER MATCHES "GNU")
|
||||
include(${PROJECT_CMAKE}/GNUCompilers.cmake)
|
||||
elseif(COMPILER MATCHES "Clang")
|
||||
include(${PROJECT_CMAKE}/ClangCompilers.cmake)
|
||||
elseif(COMPILER MATCHES "PGI")
|
||||
include(${PROJECT_CMAKE}/PGICompilers.cmake)
|
||||
else()
|
||||
message(WARNING "No default file for compiler (${COMPILER})")
|
||||
endif()
|
||||
|
||||
ENDIF(CMAKE_TOOLCHAIN_FILE)
|
||||
|
||||
if(NOT CMAKE_CXX_COMPILER_ID STREQUAL CMAKE_C_COMPILER_ID)
|
||||
message(FATAL_ERROR "Mixing C and C++ compilers from different vendors is not permitted. Current "
|
||||
"C compiler is ${CMAKE_C_COMPILER_ID} but C++ compiler is ${CMAKE_CXX_COMPILER_ID}.")
|
||||
endif()
|
||||
|
||||
###############################################
|
||||
# Set C++ minimum standard and run basic checks
|
||||
###############################################
|
||||
|
|
Loading…
Reference in New Issue