Use work-around from bug 4772 for C++ and Fortran
The commit "fix for bug 4772" added a work-around to CMakeCInformation for platform config files that put compiler information in the system file (like SunOS flags for GCC). This commit adds the same work-around for CXX and Fortran. It is necessary to support enabling these languages separately from C in other subdirectories. The commit "Avoid (Unix|Windows)Paths.cmake multiple include" added include blockers that prevent the files from multiple inclusion, so it is safe to include the system information files from every language. See issue #4772 and issue #9656.
This commit is contained in:
parent
d8f6d3a274
commit
d0c03f804f
|
@ -58,13 +58,12 @@ IF (NOT _INCLUDED_FILE)
|
||||||
INCLUDE(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME}
|
INCLUDE(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME}
|
||||||
OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
|
OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
|
||||||
ENDIF (NOT _INCLUDED_FILE)
|
ENDIF (NOT _INCLUDED_FILE)
|
||||||
# some systems include the compiler information in the system file
|
# We specify the compiler information in the system file for some
|
||||||
# and if this is the enable_language command then it may not have been
|
# platforms, but this language may not have been enabled when the file
|
||||||
# included at this point, or needs to be included again so that the
|
# was first included. Include it again to get the language info.
|
||||||
# language_INIT variables are set correctly
|
# Remove this when all compiler info is removed from system files.
|
||||||
IF (NOT _INCLUDED_FILE)
|
IF (NOT _INCLUDED_FILE)
|
||||||
INCLUDE(Platform/${CMAKE_SYSTEM_NAME}
|
INCLUDE(Platform/${CMAKE_SYSTEM_NAME} OPTIONAL)
|
||||||
OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
|
|
||||||
ENDIF (NOT _INCLUDED_FILE)
|
ENDIF (NOT _INCLUDED_FILE)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,15 @@ IF(CMAKE_CXX_COMPILER_ID)
|
||||||
INCLUDE(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_CXX_COMPILER_ID}-CXX OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
|
INCLUDE(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_CXX_COMPILER_ID}-CXX OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
|
||||||
ENDIF(CMAKE_CXX_COMPILER_ID)
|
ENDIF(CMAKE_CXX_COMPILER_ID)
|
||||||
IF (NOT _INCLUDED_FILE)
|
IF (NOT _INCLUDED_FILE)
|
||||||
INCLUDE(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL)
|
INCLUDE(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL
|
||||||
|
RESULT_VARIABLE _INCLUDED_FILE)
|
||||||
|
ENDIF (NOT _INCLUDED_FILE)
|
||||||
|
# We specify the compiler information in the system file for some
|
||||||
|
# platforms, but this language may not have been enabled when the file
|
||||||
|
# was first included. Include it again to get the language info.
|
||||||
|
# Remove this when all compiler info is removed from system files.
|
||||||
|
IF (NOT _INCLUDED_FILE)
|
||||||
|
INCLUDE(Platform/${CMAKE_SYSTEM_NAME} OPTIONAL)
|
||||||
ENDIF (NOT _INCLUDED_FILE)
|
ENDIF (NOT _INCLUDED_FILE)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -28,13 +28,20 @@ IF(CMAKE_COMPILER_IS_GNUG77)
|
||||||
SET(CMAKE_BASE_NAME g77)
|
SET(CMAKE_BASE_NAME g77)
|
||||||
ENDIF(CMAKE_COMPILER_IS_GNUG77)
|
ENDIF(CMAKE_COMPILER_IS_GNUG77)
|
||||||
IF(CMAKE_Fortran_COMPILER_ID)
|
IF(CMAKE_Fortran_COMPILER_ID)
|
||||||
IF(EXISTS ${CMAKE_ROOT}/Modules/Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_Fortran_COMPILER_ID}-Fortran.cmake)
|
INCLUDE(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_Fortran_COMPILER_ID}-Fortran OPTIONAL RESULT_VARIABLE _INCLUDED_FILE)
|
||||||
SET(CMAKE_BASE_NAME ${CMAKE_Fortran_COMPILER_ID}-Fortran)
|
|
||||||
ENDIF(EXISTS ${CMAKE_ROOT}/Modules/Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_Fortran_COMPILER_ID}-Fortran.cmake)
|
|
||||||
ENDIF(CMAKE_Fortran_COMPILER_ID)
|
ENDIF(CMAKE_Fortran_COMPILER_ID)
|
||||||
SET(CMAKE_SYSTEM_AND_Fortran_COMPILER_INFO_FILE
|
IF (NOT _INCLUDED_FILE)
|
||||||
${CMAKE_ROOT}/Modules/Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME}.cmake)
|
INCLUDE(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL
|
||||||
INCLUDE(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL)
|
RESULT_VARIABLE _INCLUDED_FILE)
|
||||||
|
ENDIF (NOT _INCLUDED_FILE)
|
||||||
|
# We specify the compiler information in the system file for some
|
||||||
|
# platforms, but this language may not have been enabled when the file
|
||||||
|
# was first included. Include it again to get the language info.
|
||||||
|
# Remove this when all compiler info is removed from system files.
|
||||||
|
IF (NOT _INCLUDED_FILE)
|
||||||
|
INCLUDE(Platform/${CMAKE_SYSTEM_NAME} OPTIONAL)
|
||||||
|
ENDIF (NOT _INCLUDED_FILE)
|
||||||
|
|
||||||
|
|
||||||
# This should be included before the _INIT variables are
|
# This should be included before the _INIT variables are
|
||||||
# used to initialize the cache. Since the rule variables
|
# used to initialize the cache. Since the rule variables
|
||||||
|
|
Loading…
Reference in New Issue