Update F77 build for Windows.
This commit was SVN r24065.
Этот коммит содержится в:
родитель
4fea0f021e
Коммит
62c6ee73a4
@ -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)
|
||||
|
@ -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 <stdio.h>\n"
|
||||
"#include <stdlib.h>\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 <stdio.h>\n"
|
||||
"#include <stdlib.h>\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)
|
||||
ENDMACRO(OMPI_F77_CHECK_REAL16_C_EQUIV)
|
||||
|
@ -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")
|
||||
|
@ -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}.")
|
||||
|
@ -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")
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user