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 8e877d38b8..6dab641c21 100644 --- a/contrib/platform/win32/CMakeModules/f77_check_real16_c_equiv.cmake +++ b/contrib/platform/win32/CMakeModules/f77_check_real16_c_equiv.cmake @@ -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 " - "#include " - - "#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 \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") 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) diff --git a/contrib/platform/win32/CMakeModules/f77_check_type.cmake b/contrib/platform/win32/CMakeModules/f77_check_type.cmake index e52fb61edf..72dde755cc 100644 --- a/contrib/platform/win32/CMakeModules/f77_check_type.cmake +++ b/contrib/platform/win32/CMakeModules/f77_check_type.cmake @@ -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) \ 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 4a734fa6d3..ec86775d7c 100644 --- a/contrib/platform/win32/CMakeModules/f77_find_ext_symbol_convention.cmake +++ b/contrib/platform/win32/CMakeModules/f77_find_ext_symbol_convention.cmake @@ -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) diff --git a/contrib/platform/win32/CMakeModules/f77_get_fortran_handle_max.cmake b/contrib/platform/win32/CMakeModules/f77_get_fortran_handle_max.cmake new file mode 100644 index 0000000000..4aab3b631a --- /dev/null +++ b/contrib/platform/win32/CMakeModules/f77_get_fortran_handle_max.cmake @@ -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 \n" + "#include \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) diff --git a/contrib/platform/win32/CMakeModules/f77_get_value_true.cmake b/contrib/platform/win32/CMakeModules/f77_get_value_true.cmake new file mode 100644 index 0000000000..fe3bb83de7 --- /dev/null +++ b/contrib/platform/win32/CMakeModules/f77_get_value_true.cmake @@ -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 \n" + "#include \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) diff --git a/contrib/platform/win32/CMakeModules/find_flex.cmake b/contrib/platform/win32/CMakeModules/find_flex.cmake index dfe28bb07d..c3dd1328f3 100644 --- a/contrib/platform/win32/CMakeModules/find_flex.cmake +++ b/contrib/platform/win32/CMakeModules/find_flex.cmake @@ -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) diff --git a/contrib/platform/win32/CMakeModules/ompi_configure.cmake b/contrib/platform/win32/CMakeModules/ompi_configure.cmake index 4b9bd9d89d..1d7b3a9bf3 100644 --- a/contrib/platform/win32/CMakeModules/ompi_configure.cmake +++ b/contrib/platform/win32/CMakeModules/ompi_configure.cmake @@ -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) diff --git a/contrib/platform/win32/CMakeModules/setup_f77.cmake b/contrib/platform/win32/CMakeModules/setup_f77.cmake index 4ab15de0f8..d67273f40d 100644 --- a/contrib/platform/win32/CMakeModules/setup_f77.cmake +++ b/contrib/platform/win32/CMakeModules/setup_f77.cmake @@ -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) +