Check the Fortran compiler base on the build type (32 or 64 bit build), and set corresponding VC environment.
This commit was SVN r22568.
Этот коммит содержится в:
родитель
924bc10ceb
Коммит
fe39e3a993
@ -81,6 +81,10 @@ ELSE(CMAKE_CL_64)
|
|||||||
SET(COMPILER_TYPE "win32")
|
SET(COMPILER_TYPE "win32")
|
||||||
ENDIF(CMAKE_CL_64)
|
ENDIF(CMAKE_CL_64)
|
||||||
|
|
||||||
|
#store current environment variables
|
||||||
|
SET(PATH_OLD "$ENV{PATH}")
|
||||||
|
SET(LIB_OLD "$ENV{LIB}")
|
||||||
|
SET(INCLUDE_OLD "$ENV{INCLUDE}")
|
||||||
|
|
||||||
INCLUDE(ompi_configure)
|
INCLUDE(ompi_configure)
|
||||||
|
|
||||||
@ -92,6 +96,11 @@ ADD_SUBDIRECTORY(opal)
|
|||||||
ADD_SUBDIRECTORY(ompi)
|
ADD_SUBDIRECTORY(ompi)
|
||||||
ADD_SUBDIRECTORY(orte)
|
ADD_SUBDIRECTORY(orte)
|
||||||
|
|
||||||
|
#restore environment variables
|
||||||
|
SET(ENV{PATH} "${PATH_OLD}")
|
||||||
|
SET(ENV{LIB} "${LIB_OLD}")
|
||||||
|
SET(ENV{INCLUDE} "${INCLUDE_OLD}")
|
||||||
|
|
||||||
INCLUDE(InstallRequiredSystemLibraries)
|
INCLUDE(InstallRequiredSystemLibraries)
|
||||||
|
|
||||||
# CPACK settings
|
# CPACK settings
|
||||||
|
@ -118,9 +118,10 @@ MACRO(OMPI_F77_FIND_EXT_SYMBOL_CONVENTION)
|
|||||||
SET(SYMBOL_CONVENTION_CHECK_DONE TRUE CACHE INTERNAL "Symbol convention check done.")
|
SET(SYMBOL_CONVENTION_CHECK_DONE TRUE CACHE INTERNAL "Symbol convention check done.")
|
||||||
|
|
||||||
IF(NOT TEST_OK)
|
IF(NOT TEST_OK)
|
||||||
MESSAGE(FATAL_ERROR "C and Fortran 77 compilers are not link compatible. Can not continue.")
|
|
||||||
MESSAGE(STATUS "*** Probably you have to setup the library path of the Fortran compiler.")
|
|
||||||
UNSET(SYMBOL_CONVENTION_CHECK_DONE CACHE)
|
UNSET(SYMBOL_CONVENTION_CHECK_DONE CACHE)
|
||||||
|
MESSAGE(STATUS "${MY_OUTPUT}")
|
||||||
|
MESSAGE(STATUS "*** Probably you have to setup the library path of the Fortran compiler.")
|
||||||
|
MESSAGE(FATAL_ERROR "C and Fortran 77 compilers are not link compatible. Can not continue.")
|
||||||
ENDIF(NOT TEST_OK)
|
ENDIF(NOT TEST_OK)
|
||||||
|
|
||||||
ENDIF(NOT SYMBOL_CONVENTION_CHECK_DONE)
|
ENDIF(NOT SYMBOL_CONVENTION_CHECK_DONE)
|
||||||
|
@ -26,15 +26,29 @@ MACRO(OMPI_MICROSOFT_COMPILER)
|
|||||||
MESSAGE( STATUS "Start Microsoft specific detection....")
|
MESSAGE( STATUS "Start Microsoft specific detection....")
|
||||||
|
|
||||||
# search for Microsoft VC tools
|
# search for Microsoft VC tools
|
||||||
SET(CHECK_PATHS ${CHECK_PATHS}
|
IF(CMAKE_CL_64)
|
||||||
"C:/Program Files/Microsoft Visual Studio 9.0/VC/bin"
|
SET(CHECK_PATHS ${CHECK_PATHS}
|
||||||
"C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin"
|
"C:/Program Files/Microsoft Visual Studio 9.0/VC/bin/amd64"
|
||||||
"C:/Program Files/Microsoft Visual Studio 8/VC/BIN"
|
"C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin/amd64"
|
||||||
"C:/Program Files (x86)/Microsoft Visual Studio 8/VC/BIN"
|
"C:/Program Files/Microsoft Visual Studio 8/VC/bin/amd64"
|
||||||
"C:/Program Files/Microsoft Visual Studio .NET 2003/VC7/BIN"
|
"C:/Program Files (x86)/Microsoft Visual Studio 8/VC/bin/amd64"
|
||||||
"C:/Program Files (x86)/Microsoft Visual Studio .NET 2003/VC7/BIN"
|
"C:/Program Files/Microsoft Visual Studio .NET 2003/VC7/bin/amd64"
|
||||||
"$ENV{VS90COMNTOOLS}../../VC/bin"
|
"C:/Program Files (x86)/Microsoft Visual Studio .NET 2003/VC7/bin/amd64"
|
||||||
"$ENV{VS80COMNTOOLS}../../VC/bin")
|
"$ENV{VS90COMNTOOLS}../../VC/bin/amd64"
|
||||||
|
"$ENV{VS80COMNTOOLS}../../VC/bin//amd64"
|
||||||
|
"$ENV{VS90COMNTOOLS}../../VC/bin/ia64"
|
||||||
|
"$ENV{VS80COMNTOOLS}../../VC/bin//ia64")
|
||||||
|
ELSE(CMAKE_CL_64)
|
||||||
|
SET(CHECK_PATHS ${CHECK_PATHS}
|
||||||
|
"C:/Program Files/Microsoft Visual Studio 9.0/VC/bin"
|
||||||
|
"C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin"
|
||||||
|
"C:/Program Files/Microsoft Visual Studio 8/VC/bin"
|
||||||
|
"C:/Program Files (x86)/Microsoft Visual Studio 8/VC/bin"
|
||||||
|
"C:/Program Files/Microsoft Visual Studio .NET 2003/VC7/bin"
|
||||||
|
"C:/Program Files (x86)/Microsoft Visual Studio .NET 2003/VC7/bin"
|
||||||
|
"$ENV{VS90COMNTOOLS}../../VC/bin"
|
||||||
|
"$ENV{VS80COMNTOOLS}../../VC/bin")
|
||||||
|
ENDIF(CMAKE_CL_64)
|
||||||
|
|
||||||
FIND_PROGRAM(CL_EXE cl PATHS ${CHECK_PATHS})
|
FIND_PROGRAM(CL_EXE cl PATHS ${CHECK_PATHS})
|
||||||
|
|
||||||
@ -44,17 +58,31 @@ MACRO(OMPI_MICROSOFT_COMPILER)
|
|||||||
SET(CC ${COMPILER_NAME} CACHE INTERNAL "C compiler executable")
|
SET(CC ${COMPILER_NAME} CACHE INTERNAL "C compiler executable")
|
||||||
SET(CXX ${COMPILER_NAME} CACHE INTERNAL "CXX compiler executable")
|
SET(CXX ${COMPILER_NAME} CACHE INTERNAL "CXX compiler executable")
|
||||||
GET_FILENAME_COMPONENT(SDK_ROOT_PATH
|
GET_FILENAME_COMPONENT(SDK_ROOT_PATH
|
||||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows;CurrentInstallFolder]" ABSOLUTE CACHE)
|
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows;CurrentInstallFolder]" ABSOLUTE)
|
||||||
SET(VS_ROOT_DIR ${VC_BIN_PATH}/../../)
|
IF(CMAKE_CL_64)
|
||||||
|
SET(VS_ROOT_DIR ${VC_BIN_PATH}/../../..)
|
||||||
|
SET(VC_LIB_DIR ${VS_ROOT_DIR}/VC/lib/amd64)
|
||||||
|
SET(SDK_LIB_DIR ${SDK_ROOT_PATH}/lib/x64)
|
||||||
|
ELSE(CMAKE_CL_64)
|
||||||
|
SET(VS_ROOT_DIR ${VC_BIN_PATH}/../..)
|
||||||
|
SET(VC_LIB_DIR ${VS_ROOT_DIR}/VC/lib)
|
||||||
|
SET(SDK_LIB_DIR ${SDK_ROOT_PATH}/lib)
|
||||||
|
ENDIF(CMAKE_CL_64)
|
||||||
SET(VS_COMMON_TOOLS_DIR ${VS_ROOT_DIR}/Common7/Tools)
|
SET(VS_COMMON_TOOLS_DIR ${VS_ROOT_DIR}/Common7/Tools)
|
||||||
SET(VS_IDE_DIR ${VS_ROOT_DIR}/Common7/IDE)
|
SET(VS_IDE_DIR ${VS_ROOT_DIR}/Common7/IDE)
|
||||||
SET(VC_INCLUDE_DIR ${VS_ROOT_DIR}/VC/INCLUDE)
|
SET(VC_INCLUDE_DIR ${VS_ROOT_DIR}/VC/include)
|
||||||
SET(VC_LIB_DIR ${VS_ROOT_DIR}/VC/LIB)
|
|
||||||
|
|
||||||
SET(ENV{PATH} "${VC_BIN_PATH};${SDK_ROOT_PATH}/bin;${VS_IDE_DIR};$ENV{PATH}")
|
|
||||||
SET(ENV{INCLUDE} "${VC_INCLUDE_DIR};$ENV{INCLUDE}")
|
# Cache the compilers paths that could be used later.
|
||||||
SET(ENV{LIB} "${VC_LIB_DIR};${SDK_ROOT_PATH}/lib;$ENV{LIB}")
|
SET(C_COMPILER_PATH ${VC_BIN_PATH} ${SDK_ROOT_PATH}/bin ${VS_IDE_DIR} CACHE INTERNAL "Compiler binary paths.")
|
||||||
SET(ENV{LIBPATH} "${VC_LIB_DIR};${SDK_ROOT_PATH}/lib;$ENV{LIBPATH}")
|
SET(C_COMPILER_INCLUDE ${VC_INCLUDE_DIR} CACHE INTERNAL "Compiler include paths.")
|
||||||
|
SET(C_COMPILER_LIB ${VC_LIB_DIR} ${SDK_LIB_DIR} CACHE INTERNAL "Compiler libraries.")
|
||||||
|
SET(C_COMPILER_LIBPATH ${VC_LIB_DIR} ${SDK_LIB_DIR} CACHE INTERNAL "Compiler libraries path.")
|
||||||
|
|
||||||
|
SET(ENV{PATH} "${C_COMPILER_PATH};$ENV{PATH}")
|
||||||
|
SET(ENV{INCLUDE} "${C_COMPILER_INCLUDE};$ENV{INCLUDE}")
|
||||||
|
SET(ENV{LIB} "${C_COMPILER_LIB};$ENV{LIB}")
|
||||||
|
SET(ENV{LIBPATH} "${C_COMPILER_LIBPATH};$ENV{LIBPATH}")
|
||||||
|
|
||||||
# Default compiler settings.
|
# Default compiler settings.
|
||||||
SET(OMPI_C_OPTION_COMPILE "/c" CACHE INTERNAL
|
SET(OMPI_C_OPTION_COMPILE "/c" CACHE INTERNAL
|
||||||
|
@ -31,9 +31,24 @@ IF(OMPI_WANT_F77_BINDINGS AND NOT F77_SETUP_DONE)
|
|||||||
"Fortran compiler option for setting object file name.")
|
"Fortran compiler option for setting object file name.")
|
||||||
SET(F77_OUTPUT_EXE "/Fe" CACHE INTERNAL
|
SET(F77_OUTPUT_EXE "/Fe" CACHE INTERNAL
|
||||||
"Fortran compiler option for setting executable file name.")
|
"Fortran compiler option for setting executable file name.")
|
||||||
FIND_LIBRARY(F77_IFCONSOL_LIB ifconsol.lib PATHS ${F77_PATH}/../../)
|
|
||||||
GET_FILENAME_COMPONENT(F77_LIB_PATH ${F77_IFCONSOL_LIB} PATH)
|
IF(CMAKE_CL_64)
|
||||||
UNSET(F77_IFCONSOL_LIB CACHE)
|
SET(F77_LIB_PATH "$ENV{IFORT_COMPILER11}/lib/intel64")
|
||||||
|
ELSE(CMAKE_CL_64)
|
||||||
|
SET(F77_LIB_PATH "$ENV{IFORT_COMPILER11}/lib/ia32")
|
||||||
|
ENDIF(CMAKE_CL_64)
|
||||||
|
|
||||||
|
IF(NOT F77_LIB_PATH)
|
||||||
|
IF(CMAKE_CL_64)
|
||||||
|
FIND_LIBRARY(F77_IFCONSOL_LIB ifconsol.lib PATHS ${F77_PATH}/../../intel64)
|
||||||
|
ELSE(CMAKE_CL_64)
|
||||||
|
FIND_LIBRARY(F77_IFCONSOL_LIB ifconsol.lib PATHS ${F77_PATH}/../../ia32)
|
||||||
|
ENDIF(CMAKE_CL_64)
|
||||||
|
GET_FILENAME_COMPONENT(F77_LIB_PATH ${F77_IFCONSOL_LIB} PATH)
|
||||||
|
UNSET(F77_IFCONSOL_LIB CACHE)
|
||||||
|
ELSE(NOT F77_LIB_PATH)
|
||||||
|
STRING(REPLACE "\\" "/" F77_LIB_PATH ${F77_LIB_PATH})
|
||||||
|
ENDIF(NOT F77_LIB_PATH)
|
||||||
ELSEIF(${F77} STREQUAL "g95.exe")
|
ELSEIF(${F77} STREQUAL "g95.exe")
|
||||||
#settings for G95
|
#settings for G95
|
||||||
SET(F77_OPTION_COMPILE "-c" CACHE INTERNAL
|
SET(F77_OPTION_COMPILE "-c" CACHE INTERNAL
|
||||||
@ -57,9 +72,10 @@ IF(OMPI_WANT_F77_BINDINGS AND NOT F77_SETUP_DONE)
|
|||||||
ENDIF(${F77} STREQUAL "ifort.exe")
|
ENDIF(${F77} STREQUAL "ifort.exe")
|
||||||
|
|
||||||
# Export env variables for fortran compiler.
|
# Export env variables for fortran compiler.
|
||||||
SET(ENV{PATH} "${F77_PATH};$ENV{PATH}")
|
SET(ENV{PATH} "${C_COMPILER_PATH};${F77_PATH};$ENV{PATH}")
|
||||||
SET(ENV{LIB} "${F77_LIB_PATH};$ENV{LIB}")
|
SET(ENV{LIB} "${C_COMPILER_LIB};${F77_LIB_PATH};$ENV{LIB}")
|
||||||
SET(ENV{INCLUDE} "${F77_INCLUDE_PATH};$ENV{INCLUDE}")
|
SET(ENV{INCLUDE} "${C_COMPILER_INCLUDE};${F77_INCLUDE_PATH};$ENV{INCLUDE}")
|
||||||
|
SET(ENV{LIBPATH} "${C_COMPILER_LIBPATH};$ENV{LIBPATH}")
|
||||||
|
|
||||||
# make sure the compiler actually works, if not cross-compiling
|
# make sure the compiler actually works, if not cross-compiling
|
||||||
MESSAGE(STATUS "Checking for working Fortran compiler...")
|
MESSAGE(STATUS "Checking for working Fortran compiler...")
|
||||||
@ -69,16 +85,18 @@ IF(OMPI_WANT_F77_BINDINGS AND NOT F77_SETUP_DONE)
|
|||||||
"\t END \n")
|
"\t END \n")
|
||||||
|
|
||||||
# lets use execute_process to run the compile test
|
# lets use execute_process to run the compile test
|
||||||
EXECUTE_PROCESS(COMMAND ${CMAKE_Fortran_COMPILER} testFortranCompiler.f
|
EXECUTE_PROCESS(COMMAND ${F77} testFortranCompiler.f
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp
|
||||||
OUTPUT_VARIABLE OUTPUT
|
OUTPUT_VARIABLE OUTPUT
|
||||||
RESULT_VARIABLE RESULT
|
RESULT_VARIABLE RESULT
|
||||||
ERROR_VARIABLE ERROR)
|
ERROR_VARIABLE ERROR)
|
||||||
|
|
||||||
|
|
||||||
IF(RESULT)
|
IF(RESULT)
|
||||||
MESSAGE("Fortran compiler ${F77} can't compile a simple fortran program.")
|
|
||||||
MESSAGE(FATAL_ERROR "Cannot continue. Please check Fortran compiler installation, or disable Fortran 77 support.")
|
|
||||||
SET(F77_SETUP_DONE FALSE CACHE INTERNAL "f77 setup done.")
|
SET(F77_SETUP_DONE FALSE CACHE INTERNAL "f77 setup done.")
|
||||||
|
MESSAGE(STATUS "${OUTPUT}\n${ERROR}")
|
||||||
|
MESSAGE(STATUS "Fortran compiler ${F77} can't compile a simple fortran program.")
|
||||||
|
MESSAGE(FATAL_ERROR "Cannot continue. Please check Fortran compiler installation, or disable Fortran 77 support.")
|
||||||
ELSE(RESULT)
|
ELSE(RESULT)
|
||||||
MESSAGE(STATUS "Checking for working Fortran compiler...${F77}")
|
MESSAGE(STATUS "Checking for working Fortran compiler...${F77}")
|
||||||
SET(F77_SETUP_DONE TRUE CACHE INTERNAL "f77 setup done.")
|
SET(F77_SETUP_DONE TRUE CACHE INTERNAL "f77 setup done.")
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user