Detect Fortran target architecture on Windows
Commit 4430bccc
(Change the way 32/64 bit compiles are detected with
MSVC and intel, 2009-11-19) added detection of the target processor to C
and CXX language builds with MS and Intel tools. Do the same for Intel
Fortran for Windows (ifort). Use /machine:<arch> to link executables.
This commit is contained in:
parent
3fb088e521
commit
58c73c43f6
|
@ -215,6 +215,10 @@ ENDIF(NOT CMAKE_Fortran_COMPILER_ID_RUN)
|
||||||
|
|
||||||
INCLUDE(CMakeFindBinUtils)
|
INCLUDE(CMakeFindBinUtils)
|
||||||
|
|
||||||
|
IF(MSVC_Fortran_ARCHITECTURE_ID)
|
||||||
|
SET(SET_MSVC_Fortran_ARCHITECTURE_ID
|
||||||
|
"SET(MSVC_Fortran_ARCHITECTURE_ID ${MSVC_Fortran_ARCHITECTURE_ID})")
|
||||||
|
ENDIF()
|
||||||
# configure variables set in this file for fast reload later on
|
# configure variables set in this file for fast reload later on
|
||||||
CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CMakeFortranCompiler.cmake.in
|
CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CMakeFortranCompiler.cmake.in
|
||||||
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeFortranCompiler.cmake
|
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeFortranCompiler.cmake
|
||||||
|
|
|
@ -2,6 +2,7 @@ SET(CMAKE_Fortran_COMPILER "@CMAKE_Fortran_COMPILER@")
|
||||||
SET(CMAKE_Fortran_COMPILER_ARG1 "@CMAKE_Fortran_COMPILER_ARG1@")
|
SET(CMAKE_Fortran_COMPILER_ARG1 "@CMAKE_Fortran_COMPILER_ARG1@")
|
||||||
SET(CMAKE_Fortran_COMPILER_ID "@CMAKE_Fortran_COMPILER_ID@")
|
SET(CMAKE_Fortran_COMPILER_ID "@CMAKE_Fortran_COMPILER_ID@")
|
||||||
SET(CMAKE_Fortran_PLATFORM_ID "@CMAKE_Fortran_PLATFORM_ID@")
|
SET(CMAKE_Fortran_PLATFORM_ID "@CMAKE_Fortran_PLATFORM_ID@")
|
||||||
|
@SET_MSVC_Fortran_ARCHITECTURE_ID@
|
||||||
SET(CMAKE_AR "@CMAKE_AR@")
|
SET(CMAKE_AR "@CMAKE_AR@")
|
||||||
SET(CMAKE_RANLIB "@CMAKE_RANLIB@")
|
SET(CMAKE_RANLIB "@CMAKE_RANLIB@")
|
||||||
SET(CMAKE_COMPILER_IS_GNUG77 @CMAKE_COMPILER_IS_GNUG77@)
|
SET(CMAKE_COMPILER_IS_GNUG77 @CMAKE_COMPILER_IS_GNUG77@)
|
||||||
|
|
|
@ -108,5 +108,14 @@
|
||||||
! SGI preprocessor which produces both the __sgi and else blocks.
|
! SGI preprocessor which produces both the __sgi and else blocks.
|
||||||
# endif
|
# endif
|
||||||
PRINT *, 'INFO:platform[]'
|
PRINT *, 'INFO:platform[]'
|
||||||
|
#endif
|
||||||
|
#if defined(_WIN32) && (defined(__INTEL_COMPILER) || defined(__ICC))
|
||||||
|
# if defined(_M_IA64)
|
||||||
|
PRINT *, 'INFO:arch[IA64]'
|
||||||
|
# elif defined(_M_X64) || defined(_M_AMD64)
|
||||||
|
PRINT *, 'INFO:arch[x64]'
|
||||||
|
# elif defined(_M_IX86)
|
||||||
|
PRINT *, 'INFO:arch[X86]'
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
END
|
END
|
||||||
|
|
|
@ -63,7 +63,10 @@ SET (CMAKE_Fortran_STANDARD_LIBRARIES_INIT "user32.lib")
|
||||||
|
|
||||||
# executable linker flags
|
# executable linker flags
|
||||||
SET (CMAKE_LINK_DEF_FILE_FLAG "/DEF:")
|
SET (CMAKE_LINK_DEF_FILE_FLAG "/DEF:")
|
||||||
SET (CMAKE_EXE_LINKER_FLAGS_INIT " /INCREMENTAL:YES")
|
IF(NOT _MACHINE_ARCH_FLAG)
|
||||||
|
SET(_MACHINE_ARCH_FLAG ${MSVC_Fortran_ARCHITECTURE_ID})
|
||||||
|
ENDIF(NOT _MACHINE_ARCH_FLAG)
|
||||||
|
SET (CMAKE_EXE_LINKER_FLAGS_INIT " /INCREMENTAL:YES /machine:${_MACHINE_ARCH_FLAG}")
|
||||||
IF (CMAKE_COMPILER_SUPPORTS_PDBTYPE)
|
IF (CMAKE_COMPILER_SUPPORTS_PDBTYPE)
|
||||||
SET (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "/debug /pdbtype:sept")
|
SET (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "/debug /pdbtype:sept")
|
||||||
SET (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "/debug /pdbtype:sept")
|
SET (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "/debug /pdbtype:sept")
|
||||||
|
|
Loading…
Reference in New Issue