From 62c6ee73a417a9c3e88f1db1a942a687803cc401 Mon Sep 17 00:00:00 2001 From: Shiqing Fan Date: Wed, 17 Nov 2010 17:27:05 +0000 Subject: [PATCH] Update F77 build for Windows. This commit was SVN r24065. --- .../win32/CMakeModules/f77_check.cmake | 77 +++++----- .../f77_check_real16_c_equiv.cmake | 131 +++++++++--------- .../win32/CMakeModules/f77_check_type.cmake | 6 +- .../win32/CMakeModules/f77_get_sizeof.cmake | 3 +- .../win32/CMakeModules/ompi_configure.cmake | 1 + .../win32/CMakeModules/ompi_find_type.cmake | 22 ++- ompi/mpi/f77/CMakeLists.txt | 3 +- 7 files changed, 118 insertions(+), 125 deletions(-) diff --git a/contrib/platform/win32/CMakeModules/f77_check.cmake b/contrib/platform/win32/CMakeModules/f77_check.cmake index bf7a53db94..8a437405d7 100644 --- a/contrib/platform/win32/CMakeModules/f77_check.cmake +++ b/contrib/platform/win32/CMakeModules/f77_check.cmake @@ -27,24 +27,24 @@ MACRO(OMPI_F77_CHECK FORTRAN_TYPE C_TYPE TYPE_LIST EXPECTED_SIZE) STRING(REPLACE " " "_" TYPE_NAME ${TYPE_NAME}) STRING(TOLOWER ${TYPE_NAME} TYPE_NAME_L) + INCLUDE(F77_check_type) + INCLUDE(F77_get_alignment) + INCLUDE(F77_get_sizeof) + INCLUDE(ompi_find_type) + + SET(ofc_expected_size ${EXPECTED_SIZE}) + SET(ofc_have_type 0) + SET(ofc_type_size ${SIZEOF_INT}) + SET(ofc_type_alignment ${SIZEOF_INT}) + SET(ofc_c_type ${ompi_fortran_bogus_type_t}) + IF(OMPI_WANT_F77_BINDINGS AND NOT DEFINED F77_SETUP_${TYPE_NAME}_DONE) - INCLUDE(F77_check_type) - INCLUDE(F77_get_alignment) - INCLUDE(F77_get_sizeof) - INCLUDE(ompi_find_type) - - SET(ofc_expected_size ${EXPECTED_SIZE}) - SET(ofc_have_type 0) - SET(ofc_type_size ${SIZEOF_INT}) - SET(ofc_type_alignment ${SIZEOF_INT}) - SET(ofc_c_type ${ompi_fortran_bogus_type_t}) - OMPI_F77_CHECK_TYPE(${FORTRAN_TYPE} ofc_have_type) IF(ofc_have_type) # What is the size of this type? - + # NOTE: Some Fortran compilers actually will return that a # type exists even if it doesn't support it -- the compiler # will automatically convert the unsupported type to a type @@ -57,7 +57,7 @@ MACRO(OMPI_F77_CHECK FORTRAN_TYPE C_TYPE TYPE_LIST EXPECTED_SIZE) # doesn't match the expected size, then the compiler doesn't # really support it. OMPI_F77_GET_SIZEOF(${FORTRAN_TYPE} ofc_type_size) - + IF(NOT ${ofc_expected_size} STREQUAL "-1" AND NOT ${ofc_type_size} EQUAL "${ofc_expected_size}") MESSAGE(STATUS "*** Fortran 77 ${FORTRAN_TYPE} does not have expected size!") MESSAGE(STATUS "*** Expected ${ofc_expected_size}, got ${ofc_type_size}") @@ -66,50 +66,35 @@ MACRO(OMPI_F77_CHECK FORTRAN_TYPE C_TYPE TYPE_LIST EXPECTED_SIZE) ELSE(NOT ${ofc_expected_size} STREQUAL "-1" AND NOT ${ofc_type_size} EQUAL "${ofc_expected_size}") # Look for a corresponding C type (will abort by itself if the # type isn't found and we need it) - SET(ofc_c_type "") - OMPI_FIND_TYPE(${FORTRAN_TYPE} "${TYPE_LIST}" ${C_TYPE} ${ofc_type_size} ofc_c_type) - IF("${ofc_c_type}" STREQUAL "") - SET(ofc_have_type 0) - ENDIF("${ofc_c_type}" STREQUAL "") - - # Get the alignment of the type - IF(ofc_have_type) - OMPI_F77_GET_ALIGNMENT(${FORTRAN_TYPE} ofc_type_alignment) - ENDIF(ofc_have_type) + IF(NOT "${TYPE_LIST}" STREQUAL "") + OMPI_FIND_TYPE(${FORTRAN_TYPE} "${TYPE_LIST}" ${C_TYPE} ${ofc_type_size} ofc_c_type) + ENDIF(NOT "${TYPE_LIST}" STREQUAL "") + + OMPI_F77_GET_ALIGNMENT(${FORTRAN_TYPE} ofc_type_alignment) ENDIF(NOT ${ofc_expected_size} STREQUAL "-1" AND NOT ${ofc_type_size} EQUAL "${ofc_expected_size}") 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*. - SET(OMPI_HAVE_FORTRAN_${TYPE_NAME} ${ofc_have_type} CACHE INTERNAL "OMPI_HAVE_FORTRAN_${TYPE_NAME}") - SET(OMPI_SIZEOF_FORTRAN_${TYPE_NAME} ${ofc_type_size} CACHE INTERNAL "OMPI_SIZEOF_FORTRAN_${TYPE_NAME}") - SET(OMPI_ALIGNMENT_FORTRAN_${TYPE_NAME} ${ofc_type_alignment} CACHE INTERNAL "OMPI_ALIGNMENT_FORTRAN_${TYPE_NAME}") - IF(NOT "${TYPE_LIST}" STREQUAL "") - SET(ompi_fortran_${TYPE_NAME_L}_t ${ofc_c_type} CACHE INTERNAL "ompi_fortran_${TYPE_NAME_L}_t") - ENDIF(NOT "${TYPE_LIST}" STREQUAL "") - - #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}}") - #MESSAGE("ompi_fortran_${TYPE_NAME_L}_t:${ompi_fortran_${TYPE_NAME_L}_t}") - ELSEIF(NOT OMPI_WANT_F77_BINDINGS) - - # when don't want F77 bindings, just set them to int. - SET(OMPI_HAVE_FORTRAN_${TYPE_NAME} 0 CACHE INTERNAL "OMPI_HAVE_FORTRAN_${TYPE_NAME}") - SET(ompi_fortran_${TYPE_NAME_L}_t int CACHE INTERNAL "ompi_fortran_${TYPE_NAME_L}_t") - SET(OMPI_SIZEOF_FORTRAN_${TYPE_NAME} ${SIZEOF_INT} CACHE INTERNAL "OMPI_SIZEOF_FORTRAN_${TYPE_NAME}") - SET(OMPI_ALIGNMENT_FORTRAN_${TYPE_NAME} ${OPAL_ALIGNMENT_INT} CACHE INTERNAL "OMPI_ALIGNMENT_FORTRAN_${TYPE_NAME}") - UNSET(F77_SETUP_${TYPE_NAME}_DONE CACHE) - ENDIF(OMPI_WANT_F77_BINDINGS AND NOT DEFINED F77_SETUP_${TYPE_NAME}_DONE) + IF(NOT "${TYPE_LIST}" STREQUAL "") + SET(ompi_fortran_${TYPE_NAME_L}_t ${ofc_c_type} CACHE INTERNAL "ompi_fortran_${TYPE_NAME_L}_t") + ENDIF(NOT "${TYPE_LIST}" STREQUAL "") + SET(OMPI_HAVE_FORTRAN_${TYPE_NAME} ${ofc_have_type} CACHE INTERNAL "OMPI_HAVE_FORTRAN_${TYPE_NAME}") + SET(OMPI_SIZEOF_FORTRAN_${TYPE_NAME} ${ofc_type_size} CACHE INTERNAL "OMPI_SIZEOF_FORTRAN_${TYPE_NAME}") + SET(OMPI_ALIGNMENT_FORTRAN_${TYPE_NAME} ${ofc_type_alignment} CACHE INTERNAL "OMPI_ALIGNMENT_FORTRAN_${TYPE_NAME}") + + #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}}") + #MESSAGE("ompi_fortran_${TYPE_NAME_L}_t:${ompi_fortran_${TYPE_NAME_L}_t}") + 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_fortran_${TYPE_NAME_L}_t "C type corresponding to Fortran 77 `${FORTRAN_TYPE}'." 0 0) ENDMACRO(OMPI_F77_CHECK FORTRAN_TYPE C_TYPE TYPE_LIST EXPECTED_SIZE) diff --git a/contrib/platform/win32/CMakeModules/f77_check_real16_c_equiv.cmake b/contrib/platform/win32/CMakeModules/f77_check_real16_c_equiv.cmake index 6dab641c21..ac1e7ad0f0 100644 --- a/contrib/platform/win32/CMakeModules/f77_check_real16_c_equiv.cmake +++ b/contrib/platform/win32/CMakeModules/f77_check_real16_c_equiv.cmake @@ -13,78 +13,85 @@ # ---------------------------------------------------- MACRO(OMPI_F77_CHECK_REAL16_C_EQUIV) SET(OMPI_REAL16_MATCHES_C 0) - #MESSAGE(STATUS "OMPI_HAVE_FORTRAN_REAL16:${OMPI_HAVE_FORTRAN_REAL16}") - IF(OMPI_WANT_F77_BINDINGS AND NOT DEFINED REAL16_MATCHES_CHECK_DONE) - IF(OMPI_HAVE_FORTRAN_REAL16) - OMPI_F77_MAKE_C_FUNCTION(c ompi_ac_c_fn) - FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftest_c.c - "#include \n" - "#include \n" - "\n" - "#ifdef __cplusplus\n" - "extern \"C\" {\n" - "#endif\n" - "void ${ompi_ac_c_fn}($OMPI_FORTRAN_REAL16_C_TYPE *a) {\n" - " FILE *fp = fopen(\"conftestval\", \"w\");\n" - " if (NULL == fp) exit(1);\n" - " fprintf(fp, \"%s\n\", (1.1L == *a) ? \"yes\" : \"no\");\n" - " fclose(fp);\n" - "}\n" - "#ifdef __cplusplus\n" - "}\n" - "#endif\n") + IF(OMPI_WANT_F77_BINDINGS AND OMPI_HAVE_FORTRAN_REAL16 AND NOT DEFINED REAL16_MATCHES_CHECK_DONE) + IF(NOT ${ompi_fortran_real16_t} STREQUAL "") + STRING(TOUPPER ${ompi_fortran_real16_t} REAL16_C_TYPE) + + IF(${OMPI_SIZEOF_FORTRAN_REAL16} EQUAL SIZEOF_${REAL16_C_TYPE}) + OMPI_F77_MAKE_C_FUNCTION(ompi_ac_c_fn c) + FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftest_c.c + "#include \n" + "#include \n" + "\n" + "#ifdef __cplusplus\n" + "extern \"C\" {\n" + "#endif\n" + "void ${ompi_ac_c_fn}(${ompi_fortran_real16_t} *a) {\n" + " FILE *fp = fopen(\"conftestval\", \"w\");\n" + " if (NULL == fp) exit(1);\n" + " fprintf(fp, \"%s\n\", (1.1L == *a) ? \"yes\" : \"no\");\n" + " fclose(fp);\n" + "}\n" + "#ifdef __cplusplus\n" + "}\n" + "#endif\n") + + FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftest_f.f + "\tprogram bogus\n" + "\tREAL*16 :: foo\n" + "\tfoo = 1.1\n" + "\tcall c(foo)\n" + "\tend program bogus\n") + + EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} ${OMPI_C_OPTION_COMPILE} conftest_c.c ${OMPI_C_INCLUDE_DIR}${C_COMPILER_INCLUDE} + 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/conftest_f.f - "\tprogram bogus\n" - "\tREAL*16 :: foo\n" - "\tfoo = 1.1\n" - "\tcall c(foo)\n" - "\tend program bogus\n") + EXECUTE_PROCESS(COMMAND ${F77} conftest_f.f conftest_c.obj ${F77_OUTPUT_OBJ}conftest + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp + OUTPUT_VARIABLE OUTPUT + RESULT_VARIABLE RESULT + ERROR_VARIABLE ERROR) - EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} ${OMPI_C_OPTION_COMPILE} conftest_c.c ${OMPI_C_INCLUDE_DIR}${C_COMPILER_INCLUDE} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp - OUTPUT_VARIABLE OUTPUT - RESULT_VARIABLE RESULT - ERROR_VARIABLE ERROR) - - EXECUTE_PROCESS(COMMAND ${F77} conftest_f.f conftest_c.obj ${F77_OUTPUT_OBJ}conftest - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp - OUTPUT_VARIABLE OUTPUT - RESULT_VARIABLE RESULT - ERROR_VARIABLE ERROR) + EXECUTE_PROCESS(COMMAND conftest.exe + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp + OUTPUT_VARIABLE OUTPUT + RESULT_VARIABLE RESULT + ERROR_VARIABLE ERROR) - EXECUTE_PROCESS(COMMAND conftest.exe - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp - OUTPUT_VARIABLE OUTPUT - RESULT_VARIABLE RESULT - ERROR_VARIABLE ERROR) - - IF(RESULT) - UNSET(REAL16_MATCHES_CHECK_DONE CACHE) - MESSAGE(FATAL_ERROR "Can not determine if REAL*16 bit-matches C.") - ELSE(RESULT) - IF(EXISTS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftestval) - # read out type size value from the file, and write back to the output variable - FILE(READ ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftestval ${OUTPUT_VARIABLE}) - MESSAGE(STATUS "Check if REAL*16 bit-matches C...${OUTPUT_VARIABLE}") - SET(OMPI_REAL16_MATCHES_C 1) - SET(REAL16_MATCHES_CHECK_DONE TRUE CACHE INTERNAL "Real16 matches c type check done.") - ELSE(EXISTS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftestval) + IF(RESULT) UNSET(REAL16_MATCHES_CHECK_DONE CACHE) - MESSAGE(STATUS "Check if REAL*16 bit-matches C...failed") - ENDIF(EXISTS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftestval) - ENDIF(RESULT) + MESSAGE(FATAL_ERROR "Can not determine if REAL*16 bit-matches C.") + ELSE(RESULT) + IF(EXISTS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftestval) + # read out type size value from the file, and write back to the output variable + FILE(READ ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftestval ${OUTPUT_VARIABLE}) + MESSAGE(STATUS "Check if REAL*16 bit-matches C...${OUTPUT_VARIABLE}") + SET(OMPI_REAL16_MATCHES_C 1) + SET(REAL16_MATCHES_CHECK_DONE TRUE CACHE INTERNAL "Real16 matches c type check done.") + ELSE(EXISTS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftestval) + UNSET(REAL16_MATCHES_CHECK_DONE CACHE) + MESSAGE(STATUS "Check if REAL*16 bit-matches C...failed") + ENDIF(EXISTS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftestval) + ENDIF(RESULT) - ELSE(OMPI_HAVE_FORTRAN_REAL16) + ELSE(${OMPI_SIZEOF_FORTRAN_REAL16} EQUAL SIZEOF_${REAL16_C_TYPE}) + SET(REAL16_MATCHES_CHECK_DONE TRUE CACHE INTERNAL "Real16 matches c type check done.") + MESSAGE(STATUS "Check if REAL*16 bit-matches C...skipped. (no corresponding C type)") + ENDIF(${OMPI_SIZEOF_FORTRAN_REAL16} EQUAL SIZEOF_${REAL16_C_TYPE}) + + ELSE(NOT ${ompi_fortran_real16_t} STREQUAL "") SET(REAL16_MATCHES_CHECK_DONE TRUE CACHE INTERNAL "Real16 matches c type check done.") - MESSAGE(STATUS "Check if REAL*16 bit-matches C...skipped") - ENDIF(OMPI_HAVE_FORTRAN_REAL16) + MESSAGE(STATUS "Check if REAL*16 bit-matches C...skipped. (no REAL*16)") + ENDIF(NOT ${ompi_fortran_real16_t} STREQUAL "") ELSEIF(NOT OMPI_WANT_F77_BINDINGS) UNSET(REAL16_MATCHES_CHECK_DONE CACHE) - ENDIF(OMPI_WANT_F77_BINDINGS AND NOT DEFINED REAL16_MATCHES_CHECK_DONE) + ENDIF(OMPI_WANT_F77_BINDINGS AND OMPI_HAVE_FORTRAN_REAL16 AND NOT DEFINED REAL16_MATCHES_CHECK_DONE) OMPI_DEF_VAR(OMPI_REAL16_MATCHES_C "if REAL*16 bit-matches C." 0 1) -ENDMACRO(OMPI_F77_CHECK_REAL16_C_EQUIV) \ No newline at end of file +ENDMACRO(OMPI_F77_CHECK_REAL16_C_EQUIV) diff --git a/contrib/platform/win32/CMakeModules/f77_check_type.cmake b/contrib/platform/win32/CMakeModules/f77_check_type.cmake index 72dde755cc..82e27de107 100644 --- a/contrib/platform/win32/CMakeModules/f77_check_type.cmake +++ b/contrib/platform/win32/CMakeModules/f77_check_type.cmake @@ -1,4 +1,4 @@ -# Copyright (c) 2008 High Performance Computing Center Stuttgart, +# Copyright (c) 2008-2010 High Performance Computing Center Stuttgart, # University of Stuttgart. All rights reserved. # # $COPYRIGHT$ @@ -32,10 +32,10 @@ MACRO(OMPI_F77_CHECK_TYPE TYPE HAVE_TYPE) IF(RESULT) SET(${HAVE_TYPE} 0 CACHE INTERNAL "have Fortran ${TYPE}") - MESSAGE(STATUS "Check if Fortran 77 compiler supports ${TYPE}...failed") + MESSAGE(STATUS "Check if Fortran 77 compiler supports ${TYPE}...no") ELSE(RESULT) SET(${HAVE_TYPE} 1 CACHE INTERNAL "have Fortran ${TYPE}") - MESSAGE(STATUS "Check if Fortran 77 compiler supports ${TYPE}...done") + MESSAGE(STATUS "Check if Fortran 77 compiler supports ${TYPE}...yes") ENDIF(RESULT) SET(${TYPE_NAME}_CHECK_DONE TRUE CACHE INTERNAL "${TYPE_NAME} check done") diff --git a/contrib/platform/win32/CMakeModules/f77_get_sizeof.cmake b/contrib/platform/win32/CMakeModules/f77_get_sizeof.cmake index 61006a80a2..a459bc4a71 100644 --- a/contrib/platform/win32/CMakeModules/f77_get_sizeof.cmake +++ b/contrib/platform/win32/CMakeModules/f77_get_sizeof.cmake @@ -1,4 +1,4 @@ -# Copyright (c) 2008 High Performance Computing Center Stuttgart, +# Copyright (c) 2008-2010 High Performance Computing Center Stuttgart, # University of Stuttgart. All rights reserved. # # $COPYRIGHT$ @@ -88,6 +88,7 @@ MACRO(OMPI_F77_GET_SIZEOF TYPE OUTPUT_VARIABLE) IF(EXISTS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftestval) # read out type size value from the file, and write back to the output variable FILE(READ ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftestval ${OUTPUT_VARIABLE}) + STRING(REPLACE "\n" "" ${OUTPUT_VARIABLE} ${${OUTPUT_VARIABLE}}) MESSAGE(STATUS "Check size of Fortran 77 ${TYPE}...${${OUTPUT_VARIABLE}}") ELSE(EXISTS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftestval) MESSAGE(FATAL_ERROR "Could not determine size of ${TYPE}.") diff --git a/contrib/platform/win32/CMakeModules/ompi_configure.cmake b/contrib/platform/win32/CMakeModules/ompi_configure.cmake index 11b66b8671..53e61e40fa 100644 --- a/contrib/platform/win32/CMakeModules/ompi_configure.cmake +++ b/contrib/platform/win32/CMakeModules/ompi_configure.cmake @@ -612,6 +612,7 @@ ENDIF(WIN32) # We want to set the #define's for all of these, so invoke the macros # regardless of whether we have F77 support or not. +OMPI_F77_CHECK("CHARACTER" "yes" "char;int32_t;int;int64_t;long long;long" "-1") OMPI_F77_CHECK("LOGICAL" "yes" "char;int;long long;long" "-1") OMPI_F77_CHECK("LOGICAL*1" "yes" "char;short;int;long long;long" "1") OMPI_F77_CHECK("LOGICAL*2" "yes" "short;int;long long;long" "2") diff --git a/contrib/platform/win32/CMakeModules/ompi_find_type.cmake b/contrib/platform/win32/CMakeModules/ompi_find_type.cmake index 7841b3cc1a..87dfe3c6d3 100644 --- a/contrib/platform/win32/CMakeModules/ompi_find_type.cmake +++ b/contrib/platform/win32/CMakeModules/ompi_find_type.cmake @@ -1,4 +1,4 @@ -# Copyright (c) 2008 High Performance Computing Center Stuttgart, +# Copyright (c) 2008-2010 High Performance Computing Center Stuttgart, # University of Stuttgart. All rights reserved. # # $COPYRIGHT$ @@ -19,32 +19,30 @@ MACRO(OMPI_FIND_TYPE TYPE TYPE_LIST ABORT TARGET_SIZE OUTPUT_VARIABLE) MESSAGE(STATUS "Check corresponding C type of ${TYPE}...") - #MESSAGE(STATUS "REALSIZE:${SIZEOF_${oft_type_name}}.TARGET SIZE: ${oft_target_size}") SET(oft_real_type "") IF(NOT "${oft_target_size}" STREQUAL "") FOREACH(oft_type ${TYPE_LIST}) - IF("${oft_real_type}" STREQUAL "") - STRING(REGEX REPLACE "^a-zA-Z0-9_" "_" oft_type_name ${oft_type}) + STRING(REGEX REPLACE " " "_" oft_type_name ${oft_type}) STRING(TOUPPER ${oft_type_name} oft_type_name) IF(SIZEOF_${oft_type_name} EQUAL oft_target_size) SET(oft_real_type ${oft_type}) + BREAK() ENDIF(SIZEOF_${oft_type_name} EQUAL oft_target_size) - ENDIF("${oft_real_type}" STREQUAL "") ENDFOREACH(oft_type ${TYPE_LIST}) - + ENDIF(NOT "${oft_target_size}" STREQUAL "") - - IF("${oft_real_type}" STREQUAL "0") + + IF("${oft_real_type}" STREQUAL "") SET(OUTPUT_VARIABLE "") MESSAGE(STATUS "*** Did not find corresponding C type of ${TYPE}") - IF("${oft_abort_on_fail}" STREQUAL EQUAL "yes") + IF("${oft_abort_on_fail}" STREQUAL "yes") MESSAGE(FATAL_ERROR "Cannot continue.") - ENDIF("${oft_abort_on_fail}" STREQUAL EQUAL "yes") - ELSE("${oft_real_type}" STREQUAL "0") + ENDIF("${oft_abort_on_fail}" STREQUAL "yes") + ELSE("${oft_real_type}" STREQUAL "") SET(${OUTPUT_VARIABLE} "${oft_real_type}") MESSAGE(STATUS "Check corresponding C type of ${TYPE}... ${oft_real_type}") - ENDIF("${oft_real_type}" STREQUAL "0") + ENDIF("${oft_real_type}" STREQUAL "") ENDMACRO(OMPI_FIND_TYPE TYPE TYPE_LIST ABORT TARGET_SIZE OUTPUT_VARIABLE) diff --git a/ompi/mpi/f77/CMakeLists.txt b/ompi/mpi/f77/CMakeLists.txt index bf2a6426bf..7f028c819a 100644 --- a/ompi/mpi/f77/CMakeLists.txt +++ b/ompi/mpi/f77/CMakeLists.txt @@ -57,7 +57,8 @@ ADD_LIBRARY(libmpi_f77 ${OMPI_F77_FILES} ${OMPI_F77_HEADER_FILES}) TARGET_LINK_LIBRARIES(libmpi_f77 libmpi) IF(BUILD_SHARED_LIBS) - ADD_DEFINITIONS(${OMPI_C_DEF_PRE}_USRDLL ${OMPI_C_DEF_PRE}OMPI_IMPORTS ${OMPI_CXX_LAN_FLAG}) + ADD_DEFINITIONS(${OMPI_C_DEF_PRE}_USRDLL ${OMPI_C_DEF_PRE}OPAL_IMPORTS + ${OMPI_C_DEF_PRE}OMPI_IMPORTS ${OMPI_CXX_LAN_FLAG}) ELSE(BUILD_SHARED_LIBS) ADD_DEFINITIONS(${OMPI_C_DEF_PRE}_LIB) ENDIF(BUILD_SHARED_LIBS)