1
1

Updates and fixes for Fortran bindings on Windows, including two missing feature tests and CMake scripts improvements.

This commit was SVN r23279.
Этот коммит содержится в:
Shiqing Fan 2010-06-18 13:03:16 +00:00
родитель fc37e408c2
Коммит e32159d118
8 изменённых файлов: 296 добавлений и 59 удалений

Просмотреть файл

@ -19,36 +19,36 @@ MACRO(OMPI_F77_CHECK_REAL16_C_EQUIV)
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>"
"#include <stdlib.h>"
"#ifdef __cplusplus"
"extern \"C\" {"
"#endif"
"void ${ompi_ac_c_fn}($OMPI_FORTRAN_REAL16_C_TYPE *a) {"
" FILE *fp = fopen(\"conftestval\", \"w\");"
" if (NULL == fp) exit(1);"
" fprintf(fp, \"%s\n\", (1.1L == *a) ? \"yes\" : \"no\");"
" fclose(fp);"
"}"
"#ifdef __cplusplus"
"}"
"#endif")
"#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")
FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftest_f.f
"\t program bogus"
"\t REAL*16 :: foo"
"\t foo = 1.1"
"\t call c(foo)"
"\t end program bogus")
"\tprogram bogus\n"
"\tREAL*16 :: foo\n"
"\tfoo = 1.1\n"
"\tcall c(foo)\n"
"\tend program bogus\n")
EXECUTE_PROCESS(COMMAND ${CL_EXE} /c conftest_c.c /I${VC_INCLUDE_PATH}
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 -o conftest
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
@ -61,6 +61,7 @@ MACRO(OMPI_F77_CHECK_REAL16_C_EQUIV)
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)
@ -68,17 +69,18 @@ MACRO(OMPI_F77_CHECK_REAL16_C_EQUIV)
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)
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)
SET(REAL16_MATCHES_CHECK_DONE TRUE CACHE INTERNAL "Real16 matches c type check done.")
ELSEIF(NOT OMPI_WANT_F77_BINDINGS)
UNSET(REAL16_MATCHES_CHECK_DONE CACHE)
ENDIF(OMPI_WANT_F77_BINDINGS AND NOT DEFINED REAL16_MATCHES_CHECK_DONE)

Просмотреть файл

@ -15,7 +15,7 @@
MACRO(OMPI_F77_CHECK_TYPE TYPE HAVE_TYPE)
IF(NOT OMPI_HAVE_FORTRAN_${TYPE_NAME})
IF(NOT DEFINED ${TYPE_NAME}_CHECK_DONE)
MESSAGE(STATUS "Check if Fortran 77 compiler supports ${TYPE}...")
@ -38,6 +38,8 @@ MACRO(OMPI_F77_CHECK_TYPE TYPE HAVE_TYPE)
MESSAGE(STATUS "Check if Fortran 77 compiler supports ${TYPE}...done")
ENDIF(RESULT)
ENDIF(NOT OMPI_HAVE_FORTRAN_${TYPE_NAME})
SET(${TYPE_NAME}_CHECK_DONE TRUE CACHE INTERNAL "${TYPE_NAME} check done")
ENDIF(NOT DEFINED ${TYPE_NAME}_CHECK_DONE)
ENDMACRO(OMPI_F77_CHECK_TYPE TYPE HAVE_TYPE)

Просмотреть файл

@ -123,7 +123,7 @@ MACRO(OMPI_F77_FIND_EXT_SYMBOL_CONVENTION)
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.")
MESSAGE(FATAL_ERROR "C and Fortran 77 compilers are not link compatible. Cannot continue.")
ENDIF(NOT TEST_OK)
ENDIF(NOT SYMBOL_CONVENTION_CHECK_DONE)

Просмотреть файл

@ -0,0 +1,106 @@
# Copyright (c) 2010 High Performance Computing Center Stuttgart,
# University of Stuttgart. All rights reserved.
#
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# OMPI_F77_GET_FORTRAN_HANDLE_MAX()
# -------------------------------------------------------
# Find the maximum value of fortran integers, then calculate
# min(INT_MAX, max fortran INTEGER). This represents the maximum
# number of fortran MPI handle index.
MACRO(OMPI_F77_GET_FORTRAN_HANDLE_MAX)
#store previous value for later use.
IF(DEFINED OMPI_FINT_MAX)
SET(OMPI_FINT_MAX_OLD ${OMPI_FINT_MAX})
ENDIF(DEFINED OMPI_FINT_MAX)
IF(NOT OMPI_WANT_F77_BINDINGS)
SET(OMPI_FINT_MAX 0 CACHE INTERNAL "fortran int max")
ELSE(NOT OMPI_WANT_F77_BINDINGS)
# Calculate the number of f's that we need to append to the hex
# value. Do one less than we really need becaue we assume the
# top nybble is 0x7 to avoid sign issues.
MATH(EXPR OMPI_NUMF ${OMPI_SIZEOF_FORTRAN_INTEGER}*2-1)
SET(OMPI_FINT_MAX 0x7)
WHILE(${OMPI_NUMF} GREATER 0)
SET(OMPI_FINT_MAX ${OMPI_FINT_MAX}f CACHE INTERNAL "fortran int max")
MATH(EXPR OMPI_NUMF ${OMPI_NUMF}-1)
ENDWHILE(${OMPI_NUMF} GREATER 0)
ENDIF(NOT OMPI_WANT_F77_BINDINGS)
#OMPI_CINT_MAX doesn't change, check only once and cache the result.
IF(NOT DEFINED CINT_MAX_CHECK_DONE)
FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/fortran_handle_max.c
"#include <stdio.h>\n"
"#include <limits.h>\n"
"\n"
"#ifdef __cplusplus\n"
"extern \"C\" {\n"
"#endif\n"
"\n"
"void main()\n"
"{\n"
" FILE *fp = fopen(\"fortran_handle_max\", \"w\");\n"
" long cint = INT_MAX;\n"
" fprintf(fp, \"%ld\", cint);\n"
" fclose(fp);\n"
"}\n"
)
EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} fortran_handle_max.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 fortran_handle_max.exe
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp
OUTPUT_VARIABLE OUTPUT
RESULT_VARIABLE RESULT
ERROR_VARIABLE ERROR)
IF(EXISTS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/fortran_handle_max)
FILE(READ ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/fortran_handle_max OUTPUT_VALUE)
SET(OMPI_CINT_MAX ${OUTPUT_VALUE} CACHE INTERNAL "c int max")
ELSE(EXISTS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/fortran_handle_max)
SET(OMPI_CINT_MAX 0)
ENDIF(EXISTS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/fortran_handle_max)
ENDIF(NOT DEFINED CINT_MAX_CHECK_DONE)
#whenever OMPI_FINT_MAX changes, recalculate OMPI_FORTRAN_HANDLE_MAX
IF(NOT DEFINED OMPI_FINT_MAX OR NOT "${OMPI_FINT_MAX}" STREQUAL "${OMPI_FINT_MAX_OLD}")
MESSAGE(STATUS "Check Max handle value for Fortran MPI handles...")
IF(${OMPI_CINT_MAX} EQUAL 0)
# wow - something went really wrong. Be conservative
SET(OMPI_FORTRAN_HANDLE_MAX 32767 CACHE INTERNAL "Fortran handle max")
ELSEIF(${OMPI_FINT_MAX} EQUAL 0)
# we aren't compiling Fortran - just set it to C INT_MAX
SET(OMPI_FORTRAN_HANDLE_MAX ${OMPI_CINT_MAX} CACHE INTERNAL "Fortran handle max")
ELSE(${OMPI_FINT_MAX} EQUAL 0)
# take the lesser of C INT_MAX and Fortran INTEGER
# max. The resulting value will then be storable in
# either type. There's no easy way to do this in
# the shell, so make the preprocessor do it.
SET(OMPI_FORTRAN_HANDLE_MAX "( ${OMPI_FINT_MAX} < ${OMPI_CINT_MAX} ? ${OMPI_FINT_MAX} : ${OMPI_CINT_MAX} )" CACHE INTERNAL "Fortran handle max")
ENDIF(${OMPI_CINT_MAX} EQUAL 0)
MESSAGE(STATUS "Check Max handle value for Fortran MPI handles...${OMPI_FORTRAN_HANDLE_MAX}")
SET(FORTRAN_MAX_HANDLE_CHECK_DONE TRUE CACHE INTERNAL "Fortran handle max check done")
ENDIF(NOT DEFINED OMPI_FINT_MAX OR NOT "${OMPI_FINT_MAX}" STREQUAL "${OMPI_FINT_MAX_OLD}")
OMPI_DEF_VAR(OMPI_FORTRAN_HANDLE_MAX "Max handle value for fortran MPI handles, effectively min(INT_MAX, max fortran INTEGER value)." 0 1)
ENDMACRO(OMPI_F77_GET_FORTRAN_HANDLE_MAX)

Просмотреть файл

@ -0,0 +1,124 @@
# Copyright (c) 2010 High Performance Computing Center Stuttgart,
# University of Stuttgart. All rights reserved.
#
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# OMPI_F77_GET_VALUE_TRUE()
# -------------------------------------------------------
# Determine the value of .TRUE. of this Fortran compiler.
MACRO(OMPI_F77_GET_VALUE_TRUE)
IF(OMPI_WANT_F77_BINDINGS AND NOT DEFINED FORTRAN_VALUE_CHECK_DONE)
MESSAGE(STATUS "Check Fortran value for .TRUE. logical type...")
OMPI_F77_MAKE_C_FUNCTION(ompi_print_logical_fn print)
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"
"\n"
"void ${ompi_print_logical_fn}(${ompi_fortran_logical_t} * logical);\n"
"\n"
"void ${ompi_print_logical_fn}(${ompi_fortran_logical_t} * logical)\n"
"{\n"
" FILE *f=fopen(\"fortran_true_value\", \"w\");\n"
" if (!f) exit(1);\n"
"\n"
" if( ${SIZEOF_INT} >= sizeof(${ompi_fortran_logical_t}) ) {\n"
" fprintf(f, \"%d\\n\", (int)*logical);\n"
" } else if (${SIZEOF_LONG} >= sizeof(${ompi_fortran_logical_t}) ) {\n"
" fprintf(f, \"%ld\\n\", (long) *logical);\n"
"#ifdef HAVE_LONG_LONG\n"
" } else if (${SIZEOF_LONG_LONG} >= sizeof(${ompi_fortran_logical_t}) ) {\n"
" fprintf(f, \"%lld\\n\", (long long) *logical);\n"
"#endif\n"
" } else {\n"
" exit(1);\n"
" }\n"
"}\n"
"\n"
"#ifdef __cplusplus\n"
"}\n"
"#endif\n")
FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftest_f.f
"\tprogram main\n"
"\tlogical value\n"
"\tvalue=.TRUE.\n"
"\tCALL print(value)\n"
"\tend\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)
IF(RESULT)
MESSAGE(STATUS "${OUTPUT}\n${ERROR}")
MESSAGE(FATAL_ERROR "Could not determine value of Fortran .TRUE.. Aborting.")
ENDIF(RESULT)
EXECUTE_PROCESS(COMMAND ${F77} ${F77_OPTION_COMPILE} conftest_f.f
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp
OUTPUT_VARIABLE OUTPUT
RESULT_VARIABLE RESULT
ERROR_VARIABLE ERROR)
IF(RESULT)
MESSAGE(STATUS "${OUTPUT}\n${ERROR}")
MESSAGE(FATAL_ERROR "Could not determine value of Fortran .TRUE.. Aborting.")
ENDIF(RESULT)
EXECUTE_PROCESS(COMMAND ${F77} conftest_f.obj conftest_c.obj ${F77_OUTPUT_EXE}conftest
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp
OUTPUT_VARIABLE OUTPUT
RESULT_VARIABLE RESULT
ERROR_VARIABLE ERROR)
IF(RESULT)
MESSAGE(STATUS "${OUTPUT}\n${ERROR}")
MESSAGE(FATAL_ERROR "Could not determine value of Fortran .TRUE.. Aborting.")
ENDIF(RESULT)
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(FORTRAN_VALUE_CHECK_DONE CACHE)
MESSAGE(STATUS "${OUTPUT}\n${ERROR}")
MESSAGE(FATAL_ERROR "Could not determine value of Fortran .TRUE.. Aborting.")
ELSE(RESULT)
IF(EXISTS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/fortran_true_value)
FILE(READ ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/fortran_true_value OUTPUT_VALUE)
MESSAGE(STATUS "Check Fortran value for .TRUE. logical type...${OUTPUT_VALUE}")
SET(OMPI_FORTRAN_VALUE_TRUE ${OUTPUT_VALUE} CACHE INTERNAL "Fortran value true")
SET(FORTRAN_VALUE_CHECK_DONE TRUE CACHE INTERNAL "Fortran value true check done")
ELSE(EXISTS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/fortran_true_value)
UNSET(FORTRAN_VALUE_CHECK_DONE CACHE)
MESSAGE(FATAL_ERROR "Could not determine value of Fortran .TRUE.. Aborting.")
ENDIF(EXISTS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/fortran_true_value)
ENDIF(RESULT)
ELSEIF(NOT OMPI_WANT_F77_BINDINGS)
SET(OMPI_FORTRAN_VALUE_TRUE 0)
UNSET(FORTRAN_VALUE_CHECK_DONE CACHE)
ENDIF(OMPI_WANT_F77_BINDINGS AND NOT DEFINED FORTRAN_VALUE_CHECK_DONE)
OMPI_DEF_VAR(OMPI_FORTRAN_VALUE_TRUE "Fortran value for .TRUE. logical type" 0 1)
ENDMACRO(OMPI_F77_GET_VALUE_TRUE)

Просмотреть файл

@ -66,8 +66,7 @@ MACRO(ADD_FLEX_FILE _sourcelist _source _prefix _output_dir)
GET_FILENAME_COMPONENT(_in ${_source} ABSOLUTE)
GET_FILENAME_COMPONENT(_basename ${_source} NAME_WE)
MESSAGE(STATUS "parse ${_basename} with flex...")
STRING(LENGTH "${_prefix}" _prefix_length)
IF(NOT _prefix_length EQUAL 0)
@ -79,20 +78,29 @@ MACRO(ADD_FLEX_FILE _sourcelist _source _prefix _output_dir)
#MESSAGE("${FLEX_EXECUTABLE} -o${_out} ${_args} ${_in}")
FILE(MAKE_DIRECTORY ${_output_dir})
EXECUTE_PROCESS(
COMMAND ${FLEX_EXECUTABLE} -o${_out} ${_args} ${_in}
OUTPUT_VARIABLE OUTPUT
RESULT_VARIABLE RESULT
ERROR_VARIABLE ERROR
)
IF(NOT DEFINED ${_basename}_DONE)
IF (NOT ${RESULT} STREQUAL "1")
MESSAGE(STATUS "${ERROR}parse ${_basename} with flex...done")
SET_SOURCE_FILES_PROPERTIES(${_out} PROPERTIES COMPILE_DEFINITIONS YY_NO_UNISTD_H)
ELSE (NOT ${RESULT} STREQUAL "1")
MESSAGE(FATAL_ERROR "${ERROR}parse ${_basename} with flex...failed")
ENDIF (NOT ${RESULT} STREQUAL "1")
MESSAGE(STATUS "parse ${_basename} with flex...")
FILE(MAKE_DIRECTORY ${_output_dir})
EXECUTE_PROCESS(
COMMAND ${FLEX_EXECUTABLE} -o${_out} ${_args} ${_in}
OUTPUT_VARIABLE OUTPUT
RESULT_VARIABLE RESULT
ERROR_VARIABLE ERROR
)
IF (NOT ${RESULT} STREQUAL "1")
MESSAGE(STATUS "${ERROR}parse ${_basename} with flex...done")
ELSE (NOT ${RESULT} STREQUAL "1")
MESSAGE(FATAL_ERROR "${ERROR}parse ${_basename} with flex...failed")
ENDIF (NOT ${RESULT} STREQUAL "1")
SET(${_basename}_DONE TRUE CACHE INTERNAL "${_basename} flex parse done")
ENDIF(NOT DEFINED ${_basename}_DONE)
SET(${_sourcelist} ${${_sourcelist}} ${_out} )
SET_SOURCE_FILES_PROPERTIES(${_out} PROPERTIES COMPILE_DEFINITIONS YY_NO_UNISTD_H)
ENDMACRO(ADD_FLEX_FILE)

Просмотреть файл

@ -313,10 +313,8 @@ OMPI_CHECK_INCLUDE_FILE (stdbool.h HAVE_STDBOOL_H)
OMPI_CHECK_INCLUDE_FILE (stdint.h HAVE_STDINT_H)
OMPI_CHECK_INCLUDE_FILE (strings.h HAVE_STRINGS_H)
OMPI_CHECK_INCLUDE_FILE (stropts.h HAVE_STROPTS_H)
OMPI_CHECK_INCLUDE_FILE (syslog.h HAVE_SYSLOG_H)
@ -359,7 +357,6 @@ OMPI_CHECK_INCLUDE_FILE (sys/time.h HAVE_SYS_TIME_H)
OMPI_CHECK_INCLUDE_FILE (sys/tree.h HAVE_SYS_TREE_H)
OMPI_CHECK_INCLUDE_FILE (sys/uio.h HAVE_SYS_UIO_H)
OMPI_CHECK_INCLUDE_FILE (sys/utsname.h HAVE_SYS_UTSNAME_H)
@ -391,7 +388,6 @@ OMPI_CHECK_INCLUDE_FILE (mx_extension.h MX_HAVE_EXTENSIONS_H)
OMPI_CHECK_FUNCTION_EXISTS (asprintf HAVE_ASPRINTF)
OMPI_CHECK_FUNCTION_EXISTS (backtrace HAVE_BACKTRACE)
OMPI_CHECK_FUNCTION_EXISTS (cnos_pm_barrier HAVE_CNOS_PM_BARRIER)
@ -595,11 +591,8 @@ OMPI_CHECK_TYPES (uintptr_t UINTPTR_T none c)
INCLUDE(setup_F77)
INCLUDE(f77_check)
INCLUDE(f77_check_real16_c_equiv)
OMPI_DEF_VAR(OMPI_F77_DOUBLE_UNDERSCORE "Whether fortran symbols have a trailing double underscore or not." 0 1)
OMPI_DEF_VAR(OMPI_F77_SINGLE_UNDERSCORE "Whether fortran symbols have a trailing single underscore or not." 0 1)
OMPI_DEF_VAR(OMPI_F77_CAPS "Whether fortran symbols are all caps or not." 0 1)
OMPI_DEF_VAR(OMPI_F77_PLAIN "Whether fortran symbols have no trailing underscore or not." 0 1)
INCLUDE(f77_get_value_true)
INCLUDE(f77_get_fortran_handle_max)
IF(WIN32)
OMPI_DEF(ompi_fortran_bogus_type_t "int" "A bogus type that allows us to have sentinel type values that are still valid." 0 1)
@ -649,13 +642,13 @@ OMPI_F77_CHECK_REAL16_C_EQUIV()
# compiler, get the max value for a fortran MPI handle (this macro
# handles the case where we don't have a fortran compiler).
#OMPI_F77_GET_FORTRAN_HANDLE_MAX
OMPI_F77_GET_FORTRAN_HANDLE_MAX()
#
# Check for Fortran compilers value of TRUE and for the correct assumption
# on LOGICAL for conversion into what C considers to be a true value
#
#OMPI_F77_GET_VALUE_TRUE
OMPI_F77_GET_VALUE_TRUE()
#OMPI_F77_CHECK_LOGICAL_ARRAY
#
@ -697,11 +690,6 @@ IF(WIN32)
OMPI_DEF(OPAL_C_HAVE_VISIBILITY 1 "Whether C compiler supports -fvisibility." 0 1)
OMPI_DEF(OMPI_FORTRAN_HANDLE_MAX "2147483647"
"Max handle value for fortran MPI handles,\n effectively min(INT_MAX, max fortran INTEGER value)." 0 1)
OMPI_DEF(OMPI_FORTRAN_VALUE_TRUE 0 "Fortran value for LOGICAL .TRUE. value." 0 1)
OMPI_DEF(restrict " " "Define to equivalent of C99 restrict keyword, or to nothing if this is not supported.\n Do not define if restrict is supported directly." 0 1)
OMPI_DEF(MCA_timer_IMPLEMENTATION_HEADER "opal/mca/timer/windows/timer_windows.h" "Header to include for timer implementation." 1 1)

Просмотреть файл

@ -136,3 +136,10 @@ ELSEIF(NOT OMPI_WANT_F77_BINDINGS)
UNSET(F77_IFCONSOL_LIB CACHE)
UNSET(F77_SETUP_DONE CACHE)
ENDIF(OMPI_WANT_F77_BINDINGS AND NOT F77_SETUP_DONE)
# a few definitions needed by OMPI_F77_FIND_EXT_SYMBOL_CONVENTION check.
OMPI_DEF_VAR(OMPI_F77_DOUBLE_UNDERSCORE "Whether fortran symbols have a trailing double underscore or not." 0 1)
OMPI_DEF_VAR(OMPI_F77_SINGLE_UNDERSCORE "Whether fortran symbols have a trailing single underscore or not." 0 1)
OMPI_DEF_VAR(OMPI_F77_CAPS "Whether fortran symbols are all caps or not." 0 1)
OMPI_DEF_VAR(OMPI_F77_PLAIN "Whether fortran symbols have no trailing underscore or not." 0 1)