diff --git a/contrib/platform/win32/CMakeModules/f77_check.cmake b/contrib/platform/win32/CMakeModules/f77_check.cmake index caecd973c6..bf7a53db94 100644 --- a/contrib/platform/win32/CMakeModules/f77_check.cmake +++ b/contrib/platform/win32/CMakeModules/f77_check.cmake @@ -78,7 +78,8 @@ MACRO(OMPI_F77_CHECK FORTRAN_TYPE C_TYPE TYPE_LIST EXPECTED_SIZE) ENDIF(ofc_have_type) ENDIF(NOT ${ofc_expected_size} STREQUAL "-1" AND NOT ${ofc_type_size} EQUAL "${ofc_expected_size}") - ENDIF(ofc_have_type) + SET(F77_SETUP_${TYPE_NAME}_DONE TRUE CACHE INTERNAL "F77 ${TYPE_NAME} check done or not.") + ENDIF(ofc_have_type) # We always need these defines -- even if we don't have a given type, # there are some places in the code where we have to have *something*. @@ -89,8 +90,6 @@ MACRO(OMPI_F77_CHECK FORTRAN_TYPE C_TYPE TYPE_LIST EXPECTED_SIZE) SET(ompi_fortran_${TYPE_NAME_L}_t ${ofc_c_type} CACHE INTERNAL "ompi_fortran_${TYPE_NAME_L}_t") ENDIF(NOT "${TYPE_LIST}" STREQUAL "") - SET(F77_SETUP_${TYPE_NAME}_DONE TRUE CACHE INTERNAL "F77 ${TYPE_NAME} check done or not.") - #MESSAGE("OMPI_HAVE_FORTRAN_${TYPE_NAME}:${OMPI_HAVE_FORTRAN_${TYPE_NAME}}") #MESSAGE("OMPI_SIZEOF_FORTRAN_${TYPE_NAME}:${OMPI_SIZEOF_FORTRAN_${TYPE_NAME}}") #MESSAGE("OMPI_ALIGNMENT_FORTRAN_${TYPE_NAME}:${OMPI_ALIGNMENT_FORTRAN_${TYPE_NAME}}") @@ -108,9 +107,9 @@ MACRO(OMPI_F77_CHECK FORTRAN_TYPE C_TYPE TYPE_LIST EXPECTED_SIZE) ENDIF(OMPI_WANT_F77_BINDINGS AND NOT DEFINED F77_SETUP_${TYPE_NAME}_DONE) -OMPI_DEF_VAR(OMPI_HAVE_FORTRAN_${TYPE_NAME} "Whether we have Fortran 77 `${FORTRAN_TYPE}' or not." 0 1) -OMPI_DEF_VAR(OMPI_SIZEOF_FORTRAN_${TYPE_NAME} "Size of Fortran 77 `${FORTRAN_TYPE}'." 0 1) -OMPI_DEF_VAR(OMPI_ALIGNMENT_FORTRAN_${TYPE_NAME} "Alignment of Fortran 77 `${FORTRAN_TYPE}'." 0 1) -OMPI_DEF_VAR(ompi_fortran_${TYPE_NAME_L}_t "C type corresponding to Fortran 77 `${FORTRAN_TYPE}'." 0 1) + OMPI_DEF_VAR(OMPI_HAVE_FORTRAN_${TYPE_NAME} "Whether we have Fortran 77 `${FORTRAN_TYPE}' or not." 0 1) + OMPI_DEF_VAR(OMPI_SIZEOF_FORTRAN_${TYPE_NAME} "Size of Fortran 77 `${FORTRAN_TYPE}'." 0 1) + OMPI_DEF_VAR(OMPI_ALIGNMENT_FORTRAN_${TYPE_NAME} "Alignment of Fortran 77 `${FORTRAN_TYPE}'." 0 1) + OMPI_DEF_VAR(ompi_fortran_${TYPE_NAME_L}_t "C type corresponding to Fortran 77 `${FORTRAN_TYPE}'." 0 1) ENDMACRO(OMPI_F77_CHECK FORTRAN_TYPE C_TYPE TYPE_LIST EXPECTED_SIZE) diff --git a/contrib/platform/win32/CMakeModules/f77_check_type.cmake b/contrib/platform/win32/CMakeModules/f77_check_type.cmake index ba29cb1042..e52fb61edf 100644 --- a/contrib/platform/win32/CMakeModules/f77_check_type.cmake +++ b/contrib/platform/win32/CMakeModules/f77_check_type.cmake @@ -15,25 +15,29 @@ MACRO(OMPI_F77_CHECK_TYPE TYPE HAVE_TYPE) - MESSAGE(STATUS "Check if Fortran 77 compiler supports ${TYPE}...") + IF(NOT OMPI_HAVE_FORTRAN_${TYPE_NAME}) - FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_fortran_type.f - "\t program main \n" - "\t ${TYPE} bogus_variable \n" - "\t END \n") + MESSAGE(STATUS "Check if Fortran 77 compiler supports ${TYPE}...") - EXECUTE_PROCESS(COMMAND ${F77} check_fortran_type.f - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp - OUTPUT_VARIABLE OUTPUT - RESULT_VARIABLE RESULT - ERROR_VARIABLE ERROR) + FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_fortran_type.f + "\t program main \n" + "\t ${TYPE} bogus_variable \n" + "\t END \n") - IF(RESULT) - SET(${HAVE_TYPE} 0) - MESSAGE(STATUS "Check if Fortran 77 compiler supports ${TYPE}...failed") - ELSE(RESULT) - SET(${HAVE_TYPE} 1) - MESSAGE(STATUS "Check if Fortran 77 compiler supports ${TYPE}...done") - ENDIF(RESULT) + EXECUTE_PROCESS(COMMAND ${F77} check_fortran_type.f + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp + OUTPUT_VARIABLE OUTPUT + RESULT_VARIABLE RESULT + ERROR_VARIABLE ERROR) + + IF(RESULT) + SET(${HAVE_TYPE} 0 CACHE INTERNAL "have Fortran ${TYPE}") + MESSAGE(STATUS "Check if Fortran 77 compiler supports ${TYPE}...failed") + ELSE(RESULT) + SET(${HAVE_TYPE} 1 CACHE INTERNAL "have Fortran ${TYPE}") + MESSAGE(STATUS "Check if Fortran 77 compiler supports ${TYPE}...done") + ENDIF(RESULT) + + ENDIF(NOT OMPI_HAVE_FORTRAN_${TYPE_NAME}) ENDMACRO(OMPI_F77_CHECK_TYPE TYPE HAVE_TYPE) \ No newline at end of file diff --git a/contrib/platform/win32/CMakeModules/f77_find_ext_symbol_convention.cmake b/contrib/platform/win32/CMakeModules/f77_find_ext_symbol_convention.cmake index b8c1563937..f4ec1f5f85 100644 --- a/contrib/platform/win32/CMakeModules/f77_find_ext_symbol_convention.cmake +++ b/contrib/platform/win32/CMakeModules/f77_find_ext_symbol_convention.cmake @@ -10,7 +10,7 @@ MACRO(OMPI_F77_FIND_EXT_SYMBOL_CONVENTION) - IF(OMPI_WANT_F77_BINDINGS AND NOT DEFINED SYMBOL_CONVENTION_CHECK_DONE) + IF(NOT SYMBOL_CONVENTION_CHECK_DONE) SET(OMPI_F77_DOUBLE_UNDERSCORE 0 CACHE INTERNAL "external symbol convention - double underscore") SET(OMPI_F77_SINGLE_UNDERSCORE 0 @@ -21,7 +21,7 @@ MACRO(OMPI_F77_FIND_EXT_SYMBOL_CONVENTION) CACHE INTERNAL "external symbol convention - plain") # make sure we know our linking convention... - MESSAGE(STATUS "Check ${CMAKE_Fortran_COMPILER} external symbol convention...") + MESSAGE(STATUS "Check ${F77} external symbol convention...") FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftest.f "\t subroutine FOO_bar(a) \n" "\t integer a \n" @@ -29,7 +29,7 @@ MACRO(OMPI_F77_FIND_EXT_SYMBOL_CONVENTION) "\t return \n" "\t end \n") - EXECUTE_PROCESS(COMMAND ${F77} ${OMPI_F77_OPTION_COMPILE} conftest.f ${OMPI_F77_OUTPUT_OBJ}conftest.lib + EXECUTE_PROCESS(COMMAND ${F77} ${F77_OPTION_COMPILE} conftest.f ${F77_OUTPUT_OBJ}conftest.lib WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp OUTPUT_VARIABLE OUTPUT RESULT_VARIABLE RESULT @@ -93,7 +93,7 @@ MACRO(OMPI_F77_FIND_EXT_SYMBOL_CONVENTION) SET(ompi_cv_f77_external_symbol "unknow") ENDIF(NOT DOUBLE_UNDERSCORE STREQUAL "") - MESSAGE(STATUS "Check ${CMAKE_Fortran_COMPILER} external symbol convention...${ompi_cv_f77_external_symbol}") + MESSAGE(STATUS "Check ${F77} external symbol convention...${ompi_cv_f77_external_symbol}") # now test if we can link the library with c program FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftest_c.c @@ -102,7 +102,7 @@ MACRO(OMPI_F77_FIND_EXT_SYMBOL_CONVENTION) FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CMakeLists.txt "CMAKE_MINIMUM_REQUIRED(VERSION 2.4.6 FATAL_ERROR)\n" "PROJECT(conftest_c C)\n" - "LINK_DIRECTORIES(\"${OMPI_F77_LIB_PATH}\")\n" + "LINK_DIRECTORIES(\"${F77_LIB_PATH}\")\n" "ADD_EXECUTABLE(conftest_c conftest_c.c)\n" "TARGET_LINK_LIBRARIES(conftest_c ${OUTPUT_OBJ_FILE})\n") @@ -115,24 +115,15 @@ MACRO(OMPI_F77_FIND_EXT_SYMBOL_CONVENTION) #MESSAGE("MY_OUTPUT:${MY_OUTPUT}") - IF(NOT TEST_OK) - MESSAGE(FATAL_ERROR "C and Fortran 77 compilers are not link compatible. Can not continue.") - ENDIF(NOT TEST_OK) - SET(SYMBOL_CONVENTION_CHECK_DONE TRUE CACHE INTERNAL "Symbol convention check done.") - ELSEIF(NOT OMPI_WANT_F77_BINDINGS) - SET(OMPI_F77_DOUBLE_UNDERSCORE 0 - CACHE INTERNAL "external symbol convention - double underscore") - SET(OMPI_F77_SINGLE_UNDERSCORE 0 - CACHE INTERNAL "external symbol convention - single underscore") - SET(OMPI_F77_CAPS 0 - CACHE INTERNAL "external symbol convention - captital") - SET(OMPI_F77_PLAIN 0 - CACHE INTERNAL "external symbol convention - plain") + 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) + ENDIF(NOT TEST_OK) - UNSET(SYMBOL_CONVENTION_CHECK_DONE CACHE) - ENDIF(OMPI_WANT_F77_BINDINGS AND NOT DEFINED SYMBOL_CONVENTION_CHECK_DONE) + ENDIF(NOT SYMBOL_CONVENTION_CHECK_DONE) ENDMACRO(OMPI_F77_FIND_EXT_SYMBOL_CONVENTION) diff --git a/contrib/platform/win32/CMakeModules/f77_get_sizeof.cmake b/contrib/platform/win32/CMakeModules/f77_get_sizeof.cmake index 24c127215e..61006a80a2 100644 --- a/contrib/platform/win32/CMakeModules/f77_get_sizeof.cmake +++ b/contrib/platform/win32/CMakeModules/f77_get_sizeof.cmake @@ -61,14 +61,14 @@ MACRO(OMPI_F77_GET_SIZEOF TYPE OUTPUT_VARIABLE) # generate the Fortran object file # some Fortran compilers don't allow to compile and link in one step. :-( - EXECUTE_PROCESS(COMMAND ${F77} ${OMPI_F77_OPTION_COMPILE} conftest.f ${OMPI_F77_OUTPUT_OBJ}conftest.obj + EXECUTE_PROCESS(COMMAND ${F77} ${F77_OPTION_COMPILE} conftest.f ${F77_OUTPUT_OBJ}conftest.obj WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp OUTPUT_VARIABLE OUTPUT RESULT_VARIABLE RESULT ERROR_VARIABLE ERROR) # link the C and Fortran object files. - EXECUTE_PROCESS(COMMAND ${F77} conftest.obj conftest_c.obj ${OMPI_F77_OUTPUT_EXE}conftest.exe + EXECUTE_PROCESS(COMMAND ${F77} conftest.obj conftest_c.obj ${F77_OUTPUT_EXE}conftest.exe WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp OUTPUT_VARIABLE OUTPUT RESULT_VARIABLE RESULT diff --git a/contrib/platform/win32/CMakeModules/ompi_check_Microsoft.cmake b/contrib/platform/win32/CMakeModules/ompi_check_Microsoft.cmake index 0cd1682bb2..3ae50cc30b 100644 --- a/contrib/platform/win32/CMakeModules/ompi_check_Microsoft.cmake +++ b/contrib/platform/win32/CMakeModules/ompi_check_Microsoft.cmake @@ -26,7 +26,7 @@ MACRO(OMPI_MICROSOFT_COMPILER) MESSAGE( STATUS "Start Microsoft specific detection....") # search for Microsoft VC tools - SET(VC_BIN_PATH ${VC_BIN_PATH} + 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" @@ -36,21 +36,22 @@ MACRO(OMPI_MICROSOFT_COMPILER) "$ENV{VS90COMNTOOLS}../../VC/bin" "$ENV{VS80COMNTOOLS}../../VC/bin") - FIND_PROGRAM(CL_EXE cl PATHS ${VC_BIN_PATH}) + FIND_PROGRAM(CL_EXE cl PATHS ${CHECK_PATHS}) # Set up VS environments. - GET_FILENAME_COMPONENT(CL_EXE_PATH ${CL_EXE} PATH) - GET_FILENAME_COMPONENT(CC ${CL_EXE} NAME CACHE) - GET_FILENAME_COMPONENT(CXX ${CL_EXE} NAME CACHE) + GET_FILENAME_COMPONENT(VC_BIN_PATH ${CL_EXE} PATH) + GET_FILENAME_COMPONENT(COMPILER_NAME ${CL_EXE} NAME) + SET(CC ${COMPILER_NAME} CACHE INTERNAL "C compiler executable") + SET(CXX ${COMPILER_NAME} CACHE INTERNAL "CXX compiler executable") GET_FILENAME_COMPONENT(SDK_ROOT_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows;CurrentInstallFolder]" ABSOLUTE CACHE) - SET(VS_ROOT_DIR ${CL_EXE_PATH}/../../) + SET(VS_ROOT_DIR ${VC_BIN_PATH}/../../) SET(VS_COMMON_TOOLS_DIR ${VS_ROOT_DIR}/Common7/Tools) SET(VS_IDE_DIR ${VS_ROOT_DIR}/Common7/IDE) SET(VC_INCLUDE_DIR ${VS_ROOT_DIR}/VC/INCLUDE) SET(VC_LIB_DIR ${VS_ROOT_DIR}/VC/LIB) - SET(ENV{PATH} "${CL_EXE_PATH};${SDK_ROOT_PATH}/bin;$ENV{PATH}") + SET(ENV{PATH} "${VC_BIN_PATH};${SDK_ROOT_PATH}/bin;${VS_IDE_DIR};$ENV{PATH}") SET(ENV{INCLUDE} "${VC_INCLUDE_DIR};$ENV{INCLUDE}") SET(ENV{LIB} "${VC_LIB_DIR};${SDK_ROOT_PATH}/lib;$ENV{LIB}") SET(ENV{LIBPATH} "${VC_LIB_DIR};${SDK_ROOT_PATH}/lib;$ENV{LIBPATH}") @@ -63,7 +64,7 @@ MACRO(OMPI_MICROSOFT_COMPILER) SET(OMPI_C_OUTPUT_EXE "/Fe" CACHE INTERNAL "C compiler option for setting executable file name.") - SET(DUMP_UTIL "dumpbin.exe" CACHE INTERNAL "the dumpbin application.") + SET(DUMP_UTIL "${VC_BIN_PATH}/dumpbin.exe" CACHE INTERNAL "the dumpbin application.") FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/cl_test.c "int main() {return 0;}") diff --git a/contrib/platform/win32/CMakeModules/setup_f77.cmake b/contrib/platform/win32/CMakeModules/setup_f77.cmake index 76c7f6afbc..3948194cc1 100644 --- a/contrib/platform/win32/CMakeModules/setup_f77.cmake +++ b/contrib/platform/win32/CMakeModules/setup_f77.cmake @@ -8,7 +8,6 @@ # $HEADER$ # - # first try to find a f77 compiler, will be checked when f77 support is enabled. # There might be a bug in CMake, the CMAKE_GENERATOR_FC is set to "ifort" by default, @@ -18,32 +17,49 @@ SET(CMAKE_GENERATOR_FC "") include(CMakeDetermineFortranCompiler) include(CMakeFortranInformation) -GET_FILENAME_COMPONENT(F77 ${CMAKE_Fortran_COMPILER} NAME_WE) -GET_FILENAME_COMPONENT(F77_PATH ${CMAKE_Fortran_COMPILER} PATH) - -# Default compiler settings. -SET(OMPI_F77_OPTION_COMPILE "-c" CACHE STRING - "Fortran compiler option for compiling without linking.") -SET(OMPI_F77_OUTPUT_OBJ "-o" CACHE STRING - "Fortran compiler option for setting object file name.") -SET(OMPI_F77_OUTPUT_EXE "-o" CACHE STRING - "Fortran compiler option for setting executable file name.") -SET(OMPI_F77_LIB_PATH "" CACHE PATH - "Library path for the fortran compiler") -SET(OMPI_F77_INCLUDE_PATH "" CACHE PATH - "Include path for the fortran compiler") - -INCLUDE(F77_find_ext_symbol_convention) -# make sure we know the linking convention -# this macro will also test linking with C code -OMPI_F77_FIND_EXT_SYMBOL_CONVENTION() - IF(OMPI_WANT_F77_BINDINGS AND NOT F77_SETUP_DONE) + GET_FILENAME_COMPONENT(F77 ${CMAKE_Fortran_COMPILER} NAME_WE) + GET_FILENAME_COMPONENT(F77_PATH ${CMAKE_Fortran_COMPILER} PATH) + + # Default compiler settings. + IF(${F77} STREQUAL "ifort") + #settings for Intel Fortran + SET(F77_OPTION_COMPILE "/c" CACHE INTERNAL + "Fortran compiler option for compiling without linking.") + SET(F77_OUTPUT_OBJ "/Fo" CACHE INTERNAL + "Fortran compiler option for setting object file name.") + SET(F77_OUTPUT_EXE "/Fe" CACHE INTERNAL + "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) + UNSET(F77_IFCONSOL_LIB CACHE) + ELSEIF(${F77} STREQUAL "g95") + #settings for G95 + SET(F77_OPTION_COMPILE "-c" CACHE INTERNAL + "Fortran compiler option for compiling without linking.") + SET(F77_OUTPUT_OBJ "-o" CACHE INTERNAL + "Fortran compiler option for setting object file name.") + SET(F77_OUTPUT_EXE "-o" CACHE INTERNAL + "Fortran compiler option for setting executable file name.") + ELSE(${F77} STREQUAL "ifort") + # in other case, let user specify their fortran configrations. + SET(F77_OPTION_COMPILE "-c" CACHE STRING + "Fortran compiler option for compiling without linking.") + SET(F77_OUTPUT_OBJ "-o" CACHE STRING + "Fortran compiler option for setting object file name.") + SET(F77_OUTPUT_EXE "-o" CACHE STRING + "Fortran compiler option for setting executable file name.") + SET(F77_LIB_PATH "" CACHE PATH + "Library path for the fortran compiler") + SET(F77_INCLUDE_PATH "" CACHE PATH + "Include path for the fortran compiler") + ENDIF(${F77} STREQUAL "ifort") + # Export env variables for fortran compiler. SET(ENV{PATH} "${F77_PATH};$ENV{PATH}") - SET(ENV{LIB} "${OMPI_F77_LIB_PATH};$ENV{LIB}") - SET(ENV{INCLUDE} "${OMPI_F77_INCLUDE_PATH};$ENV{INCLUDE}") + SET(ENV{LIB} "${F77_LIB_PATH};$ENV{LIB}") + SET(ENV{INCLUDE} "${F77_INCLUDE_PATH};$ENV{INCLUDE}") # make sure the compiler actually works, if not cross-compiling MESSAGE(STATUS "Checking for working Fortran compiler...") @@ -62,11 +78,33 @@ IF(OMPI_WANT_F77_BINDINGS AND NOT F77_SETUP_DONE) 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.") ELSE(RESULT) MESSAGE(STATUS "Checking for working Fortran compiler...${F77}") + SET(F77_SETUP_DONE TRUE CACHE INTERNAL "f77 setup done.") ENDIF(RESULT) + INCLUDE(F77_find_ext_symbol_convention) + # make sure we know the linking convention + # this macro will also test linking with C code + OMPI_F77_FIND_EXT_SYMBOL_CONVENTION() - SET(F77_SETUP_DONE TRUE CACHE INTERNAL "f77 setup done.") - +ELSEIF(NOT OMPI_WANT_F77_BINDINGS) + SET(OMPI_F77_DOUBLE_UNDERSCORE 0 + CACHE INTERNAL "external symbol convention - double underscore") + SET(OMPI_F77_SINGLE_UNDERSCORE 0 + CACHE INTERNAL "external symbol convention - single underscore") + SET(OMPI_F77_CAPS 0 + CACHE INTERNAL "external symbol convention - captital") + SET(OMPI_F77_PLAIN 0 + CACHE INTERNAL "external symbol convention - plain") + + UNSET(SYMBOL_CONVENTION_CHECK_DONE CACHE) + UNSET(F77_OPTION_COMPILE CACHE) + UNSET(F77_OUTPUT_OBJ CACHE) + UNSET(F77_OUTPUT_EXE CACHE) + UNSET(F77_LIB_PATH CACHE) + UNSET(F77_INCLUDE_PATH CACHE) + UNSET(F77_IFCONSOL_LIB CACHE) + UNSET(F77_SETUP_DONE CACHE) ENDIF(OMPI_WANT_F77_BINDINGS AND NOT F77_SETUP_DONE)