1
1

Add the initial support for MinGW and MSYS.

Correctly check the dependencies of MSYS env.
Set up configure include and lib path for building the package.
update a few more CMake scripts.

This commit was SVN r24663.
Этот коммит содержится в:
Shiqing Fan 2011-04-29 14:42:07 +00:00
родитель 3e8878f556
Коммит 4490fdbd34
20 изменённых файлов: 334 добавлений и 202 удалений

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

@ -21,6 +21,16 @@ ENDIF(WIN32)
# create top-level target(solution file)
PROJECT("OpenMPI" C CXX)
IF(MSVC)
SET(WINDOWS_VS TRUE CACHE INTERNAL "Windows Visual Studio env")
IF(CMAKE_CL_64)
SET(COMPILER_TYPE "x64")
ELSE(CMAKE_CL_64)
SET(COMPILER_TYPE "win32")
ENDIF(CMAKE_CL_64)
ELSEIF(NOT "$ENV{MSYSTEM}" STREQUAL "")
SET(WINDOWS_MINGW TRUE CACHE INTERNAL "Windows MinGW env")
ENDIF(MSVC)
SET (OpenMPI_VERSION $(OpenMPI_MAJOR_VERSION).$(OpenMPI_MINOR_VERSION).$(OpenMPI_PATCH_VERSION))
SET (CMAKE_MODULE_PATH "${OpenMPI_SOURCE_DIR}/contrib/platform/win32/CMakeModules;${CMAKE_MODULE_PATH}")
@ -80,12 +90,6 @@ SET (CMAKE_SUPPRESS_REGENERATION true)
# Dynamic/shared build, the default is set to static(OFF)
OPTION(BUILD_SHARED_LIBS "Whether we want to build shared libraries." ON)
IF(CMAKE_CL_64)
SET(COMPILER_TYPE "x64")
ELSE(CMAKE_CL_64)
SET(COMPILER_TYPE "win32")
ENDIF(CMAKE_CL_64)
#store current environment variables
SET(PATH_OLD "$ENV{PATH}")
SET(LIB_OLD "$ENV{LIB}")

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

@ -28,7 +28,7 @@ MACRO(OMPI_F77_FIND_EXT_SYMBOL_CONVENTION)
"\t a = 1 \n"
"\t return \n"
"\t end \n")
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
@ -38,24 +38,17 @@ MACRO(OMPI_F77_FIND_EXT_SYMBOL_CONVENTION)
SET(OUTPUT_OBJ_FILE "conftest.lib")
# now run dumpbin to generate an output file
EXECUTE_PROCESS(COMMAND ${DUMP_UTIL} ${OUTPUT_OBJ_FILE} /symbols /out:conftest_out
EXECUTE_PROCESS(COMMAND ${DUMP_UTIL} ${OUTPUT_OBJ_FILE}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp
OUTPUT_VARIABLE OUTPUT
OUTPUT_VARIABLE DUMP_OUTPUT
RESULT_VARIABLE RESULT
ERROR_VARIABLE ERROR)
# find out the external symbol convention
FILE(STRINGS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftest_out
DOUBLE_UNDERSCORE REGEX "foo_bar__$")
FILE(STRINGS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftest_out
SINGLE_UNDERSCORE REGEX "foo_bar_$")
FILE(STRINGS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftest_out
MIXED_CASE REGEX "FOO_bar$")
FILE(STRINGS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftest_out
NO_UNDERSCORE REGEX "foo_bar$")
FILE(STRINGS ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/conftest_out
UPPER_CASE REGEX "FOO_BAR$")
STRING(REGEX MATCH foo_bar__\n DOUBLE_UNDERSCORE ${DUMP_OUTPUT})
STRING(REGEX MATCH foo_bar_\n SINGLE_UNDERSCORE ${DUMP_OUTPUT})
STRING(REGEX MATCH FOO_bar\n MIXED_CASE ${DUMP_OUTPUT})
STRING(REGEX MATCH foo_bar\n NO_UNDERSCORE ${DUMP_OUTPUT})
STRING(REGEX MATCH FOO_BAR\n UPPER_CASE ${DUMP_OUTPUT})
# set up the corresponding values
IF(NOT DOUBLE_UNDERSCORE STREQUAL "")
@ -105,6 +98,7 @@ MACRO(OMPI_F77_FIND_EXT_SYMBOL_CONVENTION)
"IF(NOT \"${F77_LIB_PATH}\" STREQUAL \"\")\n"
" LINK_DIRECTORIES(\"${F77_LIB_PATH}\")\n"
"ENDIF(NOT \"${F77_LIB_PATH}\" STREQUAL \"\")\n"
"LINK_DIRECTORIES(${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/)\n"
"ADD_EXECUTABLE(conftest_c conftest_c.c)\n"
"TARGET_LINK_LIBRARIES(conftest_c ${OUTPUT_OBJ_FILE})\n")
@ -117,14 +111,14 @@ MACRO(OMPI_F77_FIND_EXT_SYMBOL_CONVENTION)
#MESSAGE("MY_OUTPUT:${MY_OUTPUT}")
SET(SYMBOL_CONVENTION_CHECK_DONE TRUE CACHE INTERNAL "Symbol convention check done.")
IF(NOT TEST_OK)
IF(TEST_OK)
SET(SYMBOL_CONVENTION_CHECK_DONE TRUE CACHE INTERNAL "Symbol convention check done.")
ELSE(TEST_OK)
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. Cannot continue.")
ENDIF(NOT TEST_OK)
ENDIF(TEST_OK)
ENDIF(NOT SYMBOL_CONVENTION_CHECK_DONE)
@ -149,7 +143,7 @@ MACRO(OMPI_F77_MAKE_C_FUNCTION OUTPUT_VARIABLE FUNCTION_NAME)
ENDIF("${RESULT}" STREQUAL "")
ELSEIF("${ompi_cv_f77_external_symbol}" STREQUAL "single underscore")
STRING(TOLOWER ${FUNCTION_NAME} ${OUTPUT_VARIABLE})
SET(${OUTPUT_VARIABLE} "${OUTPUT_VARIABLE}_")
SET(${OUTPUT_VARIABLE} "${${OUTPUT_VARIABLE}}_")
ELSEIF("${ompi_cv_f77_external_symbol}" STREQUAL "mixed case")
SET(${OUTPUT_VARIABLE} ${FUNCTION_NAME})
ELSEIF("${ompi_cv_f77_external_symbol}" STREQUAL "no underscore")

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

@ -59,7 +59,11 @@ MACRO(OMPI_F77_GET_VALUE_TRUE)
"\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}
IF(NOT "${C_COMPILER_INCLUDE}" STREQUAL "")
SET(EXECUTE_OPT "${OMPI_C_INCLUDE_DIR}${C_COMPILER_INCLUDE}")
ENDIF(NOT "${C_COMPILER_INCLUDE}" STREQUAL "")
EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} ${OMPI_C_OPTION_COMPILE} conftest_c.c ${EXECUTE_OPT} ${OMPI_C_OUTPUT_OBJ}conftest_c.obj
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp
OUTPUT_VARIABLE OUTPUT
RESULT_VARIABLE RESULT
@ -70,7 +74,7 @@ MACRO(OMPI_F77_GET_VALUE_TRUE)
MESSAGE(FATAL_ERROR "Could not determine value of Fortran .TRUE.. Aborting.")
ENDIF(RESULT)
EXECUTE_PROCESS(COMMAND ${F77} ${F77_OPTION_COMPILE} conftest_f.f
EXECUTE_PROCESS(COMMAND ${F77} ${F77_OPTION_COMPILE} conftest_f.f ${F77_OUTPUT_OBJ}conftest_f.obj
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp
OUTPUT_VARIABLE OUTPUT
RESULT_VARIABLE RESULT
@ -81,7 +85,7 @@ MACRO(OMPI_F77_GET_VALUE_TRUE)
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
EXECUTE_PROCESS(COMMAND ${F77} conftest_f.obj conftest_c.obj ${F77_OUTPUT_EXE}conftest.exe
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp
OUTPUT_VARIABLE OUTPUT
RESULT_VARIABLE RESULT

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

@ -33,7 +33,7 @@ ELSEIF(NOT CCP_FOUND)
ELSE(CCP_LIB_PATH)
SET(CCP_FOUND FALSE CACHE INTERNAL "find result of CCP.")
SET(RESULT FALSE)
MESSAGE(STATUS "looking for ccp...failed.")
MESSAGE(STATUS "looking for ccp...not found.")
ENDIF(CCP_LIB_PATH)
ELSE(NOT CCP_FOUND)

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

@ -81,7 +81,7 @@ ELSE(NOT OMPI_WANT_OFED)
ELSE(OFED_SDK_INCLUDE_PATH AND OFED_SDK_LIBIBVERBS)
SET(OFED_SDK_FOUND FALSE CACHE INTERNAL "find result of OFED SDK.")
SET(RESULT FALSE)
MESSAGE(STATUS "looking for OFED SDK...failed.")
MESSAGE(STATUS "looking for OFED SDK...not found.")
ENDIF(OFED_SDK_INCLUDE_PATH AND OFED_SDK_LIBIBVERBS)
ELSE(NOT OFED_SDK_FOUND)

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

@ -67,7 +67,7 @@ ELSE(NOT OMPI_WANT_WINVERBS)
ELSE(WINVERBS_INCLUDE_PATH AND WINVERBS_LIBIBVERBS)
SET(WINVERBS_FOUND FALSE CACHE INTERNAL "find result of Winverbs.")
SET(RESULT FALSE)
MESSAGE(STATUS "looking for Wiinverbs...failed.")
MESSAGE(STATUS "looking for Winverbs...not found.")
ENDIF(WINVERBS_INCLUDE_PATH AND WINVERBS_LIB)
ELSE(NOT WINVERBS_FOUND)

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

@ -15,11 +15,30 @@
#
# Keep all the Windows checks in one place.
#
# USAGE:
# OMPI_MICROSOFT_COMPILER()
#
######################################################################
# Get current time and date.
EXECUTE_PROCESS(COMMAND cmd /C time /t
OUTPUT_VARIABLE CURRENT_TIME)
EXECUTE_PROCESS(COMMAND cmd /C date /t
OUTPUT_VARIABLE CURRENT_DATE)
STRING (REPLACE "\n" "" CURRENT_TIME ${CURRENT_TIME})
STRING (REPLACE "\n" "" CURRENT_DATE ${CURRENT_DATE})
STRING (REGEX MATCH [.-/\0-9]+ CURRENT_DATE ${CURRENT_DATE})
SET (OPAL_CONFIGURE_DATE "${CURRENT_TIME} ${CURRENT_DATE}" CACHE INTERNAL "OPAL_CONFIGURE_DATE")
SET (OMPI_BUILD_DATE "${CURRENT_TIME} ${CURRENT_DATE}" CACHE INTERNAL "OMPI_BUILD_DATE")
OMPI_DEF(OPAL_CONFIGURE_DATE "${CURRENT_TIME} ${CURRENT_DATE}" "Configuration date." 1 1)
OMPI_DEF(OMPI_BUILD_DATE "${CURRENT_TIME} ${CURRENT_DATE}" "Build date." 1 1)
# Set up compiler information.
OMPI_DEF(COMPILER_FAMILYNAME MICROSOFT "Compiler family name" 1 1)
OMPI_DEF(COMPILER_VERSION ${MSVC_VERSION} "Compiler version" 0 1)
OMPI_DEF(OPAL_BUILD_PLATFORM_COMPILER_FAMILYID 14 "Compiler family ID" 0 1)
OMPI_DEF(OPAL_BUILD_PLATFORM_COMPILER_FAMILYNAME ${COMPILER_FAMILYNAME} "Compiler family name" 0 1)
OMPI_DEF(OPAL_BUILD_PLATFORM_COMPILER_VERSION_STR ${MSVC_VERSION} "Compiler version" 0 1)
IF(NOT MICROSOFT_CHECK_DONE)
MESSAGE( STATUS "Start Microsoft specific detection....")
@ -117,6 +136,7 @@ IF(NOT MICROSOFT_CHECK_DONE)
"Output option for making static libraries.")
SET(DUMP_UTIL "${VC_BIN_PATH}/dumpbin.exe" CACHE INTERNAL "the dumpbin application.")
SET(DUMP_UTIL_OPT "/symbols /out:" CACHE INTERNAL "the dumpbin application options.")
FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/cl_test.c
"int main() {return 0;}")
@ -186,6 +206,7 @@ OMPI_DEF_VAR(HAVE_INTERLOCKEDCOMPAREEXCHANGERELEASE "Whether we support 32 bits
OMPI_DEF(MCA_COMMON_SM_WINDOWS 1 "Whether we have shared memory support for Windows or not." 0 1)
OMPI_DEF(MCA_COMMON_SM_SYSV 0 "Whether we have shared memory support for SYSV or not." 0 1)
OMPI_DEF(MCA_COMMON_SM_POSIX 0 "Whether we have shared memory support for POSIX or not." 0 1)
OMPI_DEF(OPAL_HAVE_POSIX_THREADS 0 "Do we have POSIX threads." 0 1)
OMPI_CHECK_INCLUDE_FILE (windows.h HAVE_WINDOWS_H)

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

@ -86,8 +86,22 @@ OMPI_DEF(OMPI_BUILD_USER $ENV{USERNAME} "User who has built the package." 1 1)
OMPI_DEF(OMPI_BUILD_HOST $ENV{COMPUTERNAME} "Host on which the package has been built." 1 1)
OMPI_DEF(OPAL_ARCH "${CMAKE_SYSTEM_PROCESSOR} ${CMAKE_SYSTEM}" "OMPI architecture string" 1 1)
#detect the compiler bit
OMPI_CHECK_TYPES("void *" VOID_P none c)
IF(${SIZEOF_VOID_P} EQUAL 4)
SET(OMPI_COMPILER_BIT "86 bit")
SET(IS_32_BIT TRUE CACHE INTERNAL "32 bit compiler")
ELSE(${SIZEOF_VOID_P} EQUAL 4)
SET(OMPI_COMPILER_BIT "64 bit")
SET(IS_64_BIT TRUE CACHE INTERNAL "64 bit compiler")
ENDIF(${SIZEOF_VOID_P} EQUAL 4)
OMPI_DEF(OPAL_ARCH "${CMAKE_SYSTEM} ${OMPI_COMPILER_BIT}" "OMPI architecture string" 1 1)
IF(WINDOWS_VS)
INCLUDE(ompi_check_Microsoft)
ELSEIF(WINDOWS_MINGW)
INCLUDE(ompi_check_MinGW)
ENDIF(WINDOWS_VS)
INCLUDE(opal_get_version)
@ -101,25 +115,8 @@ OMPI_DEF(PACKAGE_VERSION ${OPAL_VERSION} "Define to the version of this package.
OMPI_DEF(PACKAGE_STRING "Open MPI ${PACKAGE_VERSION}" "Define to the full name and version of this package." 1 1)
# Get current time and date.
EXECUTE_PROCESS(COMMAND cmd /C time /t
OUTPUT_VARIABLE CURRENT_TIME)
EXECUTE_PROCESS(COMMAND cmd /C date /t
OUTPUT_VARIABLE CURRENT_DATE)
STRING (REPLACE "\n" "" CURRENT_TIME ${CURRENT_TIME})
STRING (REPLACE "\n" "" CURRENT_DATE ${CURRENT_DATE})
STRING (REGEX MATCH [.-/\0-9]+ CURRENT_DATE ${CURRENT_DATE})
SET (OPAL_CONFIGURE_DATE "${CURRENT_TIME} ${CURRENT_DATE}" CACHE INTERNAL "OPAL_CONFIGURE_DATE")
SET (OMPI_BUILD_DATE "${CURRENT_TIME} ${CURRENT_DATE}" CACHE INTERNAL "OMPI_BUILD_DATE")
OMPI_DEF(OPAL_CONFIGURE_DATE "${CURRENT_TIME} ${CURRENT_DATE}" "Configuration date." 1 1)
OMPI_DEF(OMPI_BUILD_DATE "${CURRENT_TIME} ${CURRENT_DATE}" "Build date." 1 1)
OMPI_DEF(OMPI_BUILD_CFLAGS "/Od /Gm /EHsc /RTC1 /MDd" "C flags" 1 1)
#OMPI_DEF(OMPI_BUILD_CFLAGS "/Od /Gm /EHsc /RTC1 /MDd" "C flags" 1 1)
OMPI_DEF(OMPI_BUILD_CFLAGS "${CMAKE_C_FLAGS} " "C flags" 1 1)
SET(OMPI_BUILD_CPPFLAGS "\"-I${OpenMPI_SOURCE_DIR}/
-I${OpenMPI_SOURCE_DIR}/opal
@ -138,7 +135,8 @@ SET(OMPI_BUILD_CPPFLAGS "\"-I${OpenMPI_SOURCE_DIR}/
-I${OpenMPI_SOURCE_DIR}/contrib/platform/win32\"")
OMPI_DEF(OMPI_BUILD_CXXFLAGS "/Od /Gm /EHsc /RTC1 /MDd" "C++ flags" 1 1)
#OMPI_DEF(OMPI_BUILD_CXXFLAGS "/Od /Gm /EHsc /RTC1 /MDd" "C++ flags" 1 1)
OMPI_DEF(OMPI_BUILD_CXXFLAGS "${CMAKE_CXX_FLAGS} " "C++ flags" 1 1)
SET(OMPI_BUILD_CXXCPPFLAGS ${OMPI_BUILD_CPPFLAGS})
@ -154,14 +152,7 @@ OMPI_DEF(OMPI_F90_BUILD_SIZE "small" "F90 build size." 1 1)
OMPI_DEF(OMPI_BTL_SM_HAVE_KNEM 0 "If btl sm has knem." 0 1)
IF(WIN32 AND MSVC)
INCLUDE(ompi_check_Microsoft)
OMPI_DEF(COMPILER_FAMILYNAME MICROSOFT "Compiler family name" 1 1)
OMPI_DEF(COMPILER_VERSION ${MSVC_VERSION} "Compiler version" 0 1)
OMPI_DEF(OPAL_BUILD_PLATFORM_COMPILER_FAMILYID 14 "Compiler family ID" 0 1)
OMPI_DEF(OPAL_BUILD_PLATFORM_COMPILER_FAMILYNAME ${COMPILER_FAMILYNAME} "Compiler family name" 0 1)
OMPI_DEF(OPAL_BUILD_PLATFORM_COMPILER_VERSION_STR ${MSVC_VERSION} "Compiler version" 0 1)
ENDIF(WIN32 AND MSVC)
###################################################################
@ -268,7 +259,6 @@ IF (NOT MSVC)
# Check headers #
###################################################################
OMPI_CHECK_INCLUDE_FILE (alloca.h HAVE_ALLOCA_H)
OMPI_CHECK_INCLUDE_FILE (arpa/inet.h HAVE_ARPA_INET_H)
@ -383,7 +373,6 @@ OMPI_CHECK_INCLUDE_FILE (termios.h HAVE_TERMIOS_H)
OMPI_CHECK_INCLUDE_FILE (sys/time.h HAVE_TIMERADD)
OMPI_CHECK_INCLUDE_FILE (ucontext.h HAVE_UCONTEXT_H)
OMPI_CHECK_INCLUDE_FILE (ulimit.h HAVE_ULIMIT_H)
@ -396,6 +385,35 @@ OMPI_CHECK_INCLUDE_FILE (utmp.h HAVE_UTMP_H)
OMPI_CHECK_INCLUDE_FILE (mx_extension.h MX_HAVE_EXTENSIONS_H)
OMPI_CHECK_INCLUDE_FILE (malloc.h HAVE_MALLOC_H)
OMPI_CHECK_INCLUDE_FILE (memory.h HAVE_MEMORY_H)
OMPI_CHECK_INCLUDE_FILE (signal.h HAVE_SIGNAL_H)
OMPI_CHECK_INCLUDE_FILE (stdarg.h HAVE_STDARG_H)
OMPI_CHECK_INCLUDE_FILE (stdint.h HAVE_STDINT_H)
OMPI_CHECK_INCLUDE_FILE (stdlib.h HAVE_STDLIB_H)
OMPI_CHECK_INCLUDE_FILE (string.h HAVE_STRING_H)
OMPI_CHECK_INCLUDE_FILE (sys/stat.h HAVE_SYS_STAT_H)
OMPI_CHECK_INCLUDE_FILE (sys/types.h HAVE_SYS_TYPES_H)
OMPI_CHECK_INCLUDE_FILE (time.h HAVE_TIME_H)
OMPI_CHECK_INCLUDE_FILE(stddef.h OPAL_STDC_HEADERS)
OMPI_CHECK_FUNCTION_EXISTS (ceil HAVE_CEIL)
OMPI_CHECK_FUNCTION_EXISTS (execve HAVE_EXECVE)
OMPI_CHECK_FUNCTION_EXISTS (isatty HAVE_ISATTY)
OMPI_CHECK_FUNCTION_EXISTS (vsnprintf HAVE_VSNPRINTF)
###################################################################
# Check functions #
@ -716,8 +734,6 @@ IF(WIN32)
OMPI_DEF(OPAL_ASSEMBLY_ARCH "OMPI_WINDOWS" "Architecture type of assembly to use for atomic operations." 0 1)
OMPI_DEF(OPAL_HAVE_POSIX_THREADS 0 "Do we have POSIX threads." 0 1)
OMPI_DEF(OPAL_HAVE_WEAK_SYMBOLS 0 "Whether we have weak symbols or not" 0 1)
OMPI_DEF(OPAL_HAVE_SOLARIS_THREADS 0 "Do we have native Solaris threads." 0 1)

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

@ -17,100 +17,118 @@ IF(IN_USE STREQUAL "0")
ELSE(IN_USE STREQUAL "0")
IF(LIBEVENT_CONFIG_DONE)
MESSAGE(STATUS "multiple libevent selected, only one is configured.")
SET(RESULT FALSE)
SET(LIBEVENT_FOUND TRUE CACHE INTERNAL "allow only one event mca.")
ELSE(LIBEVENT_CONFIG_DONE)
SET(LIBEVENT_FOUND TRUE CACHE INTERNAL "allow only one event mca.")
MESSAGE(STATUS "configure libevent.")
MESSAGE(STATUS "configure libevent.")
# set up event include directories.
INCLUDE_DIRECTORIES ("${CURRENT_PATH}/libevent/compat"
"${CURRENT_PATH}/libevent/WIN32-Code/"
"${CURRENT_PATH}/libevent/include/"
"${CURRENT_PATH}/libevent"
"${PROJECT_BINARY_DIR}/mca/event/libevent207/libevent/include/")
# set up event include directories.
INCLUDE_DIRECTORIES ("${CURRENT_PATH}/libevent/compat"
"${CURRENT_PATH}/libevent/WIN32-Code/"
"${CURRENT_PATH}/libevent/include/"
"${CURRENT_PATH}/libevent"
"${PROJECT_BINARY_DIR}/mca/event/libevent207/libevent/include/")
SET(LIBEVENT_INCLUDE_DIRS ${CURRENT_PATH}/libevent/compat;${CURRENT_PATH}/libevent/WIN32-Code/;${CURRENT_PATH}/libevent/include/;${CURRENT_PATH}/libevent;${PROJECT_BINARY_DIR}/mca/event/libevent207/libevent/include/
CACHE INTERNAL "the libevent dirs that have to be included on the top level.")
SET(LIBEVENT_INCLUDE_DIRS ${CURRENT_PATH}/libevent/compat;${CURRENT_PATH}/libevent/WIN32-Code/;${CURRENT_PATH}/libevent/include/;${CURRENT_PATH}/libevent;${PROJECT_BINARY_DIR}/mca/event/libevent207/libevent/include/
CACHE INTERNAL "the libevent dirs that have to be included on the top level.")
IF(WIN32)
IF(WIN32)
# generating config.h
# windows doesn't need this file, just make an empty one
FILE(WRITE ${PROJECT_BINARY_DIR}/mca/event/libevent207/libevent/include/config.h
" /* config.h. Generated automatically by CMake. */ ")
# generating config.h
# windows doesn't need this file, just make an empty one
FILE(WRITE ${PROJECT_BINARY_DIR}/mca/event/libevent207/libevent/include/config.h
" /* config.h. Generated automatically by CMake. */ ")
SET(RESULT_COMPONENT_FILES
${RESULT_COMPONENT_FILES}
${CURRENT_PATH}/libevent207_component.c
${CURRENT_PATH}/libevent207_module.c
#system sources
${CURRENT_PATH}/libevent/win32select.c
${CURRENT_PATH}/libevent/evthread_win32.c
${CURRENT_PATH}/libevent/buffer_iocp.c
${CURRENT_PATH}/libevent/event_iocp.c
${CURRENT_PATH}/libevent/bufferevent_async.c
#core sources
${CURRENT_PATH}/libevent/event.c
${CURRENT_PATH}/libevent/evthread.c
${CURRENT_PATH}/libevent/buffer.c
${CURRENT_PATH}/libevent/bufferevent.c
${CURRENT_PATH}/libevent/bufferevent_sock.c
${CURRENT_PATH}/libevent/bufferevent_filter.c
${CURRENT_PATH}/libevent/bufferevent_pair.c
${CURRENT_PATH}/libevent/listener.c
${CURRENT_PATH}/libevent/bufferevent_ratelim.c
${CURRENT_PATH}/libevent/evmap.c
${CURRENT_PATH}/libevent/log.c
${CURRENT_PATH}/libevent/evutil.c
${CURRENT_PATH}/libevent/evutil_rand.c
${CURRENT_PATH}/libevent/strlcpy.c
${CURRENT_PATH}/libevent/signal.c
${CURRENT_PATH}/libevent/event_tagging.c
)
SET(RESULT_COMPONENT_FILES
${RESULT_COMPONENT_FILES}
${CURRENT_PATH}/libevent207_component.c
${CURRENT_PATH}/libevent207_module.c
#system sources
${CURRENT_PATH}/libevent/win32select.c
${CURRENT_PATH}/libevent/evthread_win32.c
${CURRENT_PATH}/libevent/buffer_iocp.c
${CURRENT_PATH}/libevent/event_iocp.c
${CURRENT_PATH}/libevent/bufferevent_async.c
#core sources
${CURRENT_PATH}/libevent/event.c
${CURRENT_PATH}/libevent/evthread.c
${CURRENT_PATH}/libevent/buffer.c
${CURRENT_PATH}/libevent/bufferevent.c
${CURRENT_PATH}/libevent/bufferevent_sock.c
${CURRENT_PATH}/libevent/bufferevent_filter.c
${CURRENT_PATH}/libevent/bufferevent_pair.c
${CURRENT_PATH}/libevent/listener.c
${CURRENT_PATH}/libevent/bufferevent_ratelim.c
${CURRENT_PATH}/libevent/evmap.c
${CURRENT_PATH}/libevent/log.c
${CURRENT_PATH}/libevent/evutil.c
${CURRENT_PATH}/libevent/evutil_rand.c
${CURRENT_PATH}/libevent/strlcpy.c
${CURRENT_PATH}/libevent/signal.c
${CURRENT_PATH}/libevent/event_tagging.c
)
IF(WINDOWS_MINGW)
SET_SOURCE_FILES_PROPERTIES(${CURRENT_PATH}/libevent/win32select.c
${CURRENT_PATH}/libevent/evthread_win32.c
${CURRENT_PATH}/libevent/buffer_iocp.c
${CURRENT_PATH}/libevent/bufferevent_async.c
${CURRENT_PATH}/libevent/event.c
${CURRENT_PATH}/libevent/evthread.c
${CURRENT_PATH}/libevent/bufferevent.c
${CURRENT_PATH}/libevent/bufferevent_sock.c
${CURRENT_PATH}/libevent/bufferevent_filter.c
${CURRENT_PATH}/libevent/bufferevent_pair.c
${CURRENT_PATH}/libevent/bufferevent_ratelim.c
${CURRENT_PATH}/libevent/evmap.c
${CURRENT_PATH}/libevent/log.c
${CURRENT_PATH}/libevent/evutil_rand.c
${CURRENT_PATH}/libevent/strlcpy.c
${CURRENT_PATH}/libevent/signal.c
${CURRENT_PATH}/libevent/event_tagging.c
PROPERTIES COMPILE_FLAGS "-D intptr_t=int -D _INTPTR_T_DEFINED")
SET(OBJ_PATH "${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/libopen-pal.dir/mca/event/libevent207/libevent")
SET(EVENT_OBJ_FILES "${OBJ_PATH}/*.obj" CACHE INTERNAL "event obj files")
ELSEIF(WINDOWS_VS)
SET(OBJ_PATH "${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}")
# for generating the static library, as opal will not export event API any more.
SET(EVENT_OBJ_FILES
${OBJ_PATH}/win32select.obj
${OBJ_PATH}/evthread_win32.obj
${OBJ_PATH}/buffer_iocp.obj
${OBJ_PATH}/event_iocp.obj
${OBJ_PATH}/bufferevent_async.obj
${OBJ_PATH}/event.obj
${OBJ_PATH}/evthread.obj
${OBJ_PATH}/buffer.obj
${OBJ_PATH}/bufferevent.obj
${OBJ_PATH}/bufferevent_sock.obj
${OBJ_PATH}/bufferevent_filter.obj
${OBJ_PATH}/bufferevent_pair.obj
${OBJ_PATH}/listener.obj
${OBJ_PATH}/bufferevent_ratelim.obj
${OBJ_PATH}/evmap.obj
${OBJ_PATH}/log.obj
${OBJ_PATH}/evutil.obj
${OBJ_PATH}/evutil_rand.obj
${OBJ_PATH}/strlcpy.obj
${OBJ_PATH}/signal.obj
${OBJ_PATH}/event_tagging.obj
CACHE INTERNAL "event obj files")
ENDIF(WINDOWS_MINGW)
OMPI_DEF(OPAL_HAVE_WORKING_EVENTOPS 1
"Whether our event component has working event operations or not if not, then assumedly it only has working timers and signals)." 0 1)
OMPI_DEF(OPAL_HAVE_WORKING_EVENTOPS 1
"Whether our event component has working event operations or not if not, then assumedly it only has working timers and signals)." 0 1)
OMPI_DEF(MCA_event_IMPLEMENTATION_HEADER "${CURRENT_PATH}/libevent207.h"
"Header to include for event implementation" 1 1)
OMPI_DEF(MCA_event_IMPLEMENTATION_HEADER "${CURRENT_PATH}/libevent207.h"
"Header to include for event implementation" 1 1)
# for generating the static library, as opal will not export event API any more.
SET(EVENT_OBJ_FILES
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/win32select.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/evthread_win32.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/buffer_iocp.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/event_iocp.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/bufferevent_async.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/event.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/evthread.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/buffer.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/bufferevent.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/bufferevent_sock.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/bufferevent_filter.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/bufferevent_pair.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/listener.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/bufferevent_ratelim.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/evmap.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/log.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/evutil.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/evutil_rand.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/strlcpy.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/signal.obj
${PROJECT_BINARY_DIR}/libopen-pal.dir/${CMAKE_CFG_INTDIR}/event_tagging.obj
)
SET(LIBEVENT_CONFIG_DONE TRUE CACHE INTERNAL "Libevent config done.")
ELSE(WIN32)
SET(RESULT_COMPONENT_FILES
${RESULT_COMPONENT_FILES}
)
ENDIF(WIN32)
ELSE(WIN32)
SET(RESULT_COMPONENT_FILES
${RESULT_COMPONENT_FILES}
)
ENDIF(WIN32)
SET(RESULT TRUE)
ENDIF(LIBEVENT_CONFIG_DONE)
ENDIF(IN_USE STREQUAL "0")

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

@ -89,15 +89,29 @@ SET (OPAL_SOURCE_FILES ${OPAL_SOURCE_FILES} ${MCA_FILES})
ADD_LIBRARY (libopen-pal ${OPAL_SOURCE_FILES})
IF(WINDOWS_MINGW)
SET(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIRARIES} -lpthread")
SET(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIRARIES} -lpthread")
ENDIF(WINDOWS_MINGW)
# Set compile flags for this target
IF (BUILD_SHARED_LIBS)
ADD_CUSTOM_COMMAND(TARGET libopen-pal POST_BUILD
COMMAND ${OMPI_LIB_CMD} ${EVENT_OBJ_FILES} ${OMPI_LIB_CMD_OUTPUT}${OpenMPI_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event${CMAKE_DEBUG_POSTFIX}.lib
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
COMMENT "Generating static event library."
)
IF(WINDOWS_MINGW)
ADD_CUSTOM_COMMAND(TARGET libopen-pal POST_BUILD
COMMAND ar -rcs ${OpenMPI_BINARY_DIR}/event${CMAKE_DEBUG_POSTFIX}.lib ${EVENT_OBJ_FILES}
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
COMMENT "Generating static event library."
)
ELSEIF(WINDOWS_VS)
ADD_CUSTOM_COMMAND(TARGET libopen-pal POST_BUILD
COMMAND ${OMPI_LIB_CMD} ${OMPI_LIB_CMD_OUTPUT}${OpenMPI_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event${CMAKE_DEBUG_POSTFIX}.lib ${EVENT_OBJ_FILES}
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
COMMENT "Generating static event library."
)
ENDIF(WINDOWS_MINGW)
SET_TARGET_PROPERTIES(libopen-pal PROPERTIES COMPILE_FLAGS "${OMPI_C_DEF_PRE}_USRDLL ${OMPI_C_DEF_PRE}OPAL_EXPORTS")
SET_TARGET_PROPERTIES(libopen-pal PROPERTIES COMPILE_FLAGS "${OMPI_C_DEF_PRE}_USRDLL ${OMPI_C_DEF_PRE}OPAL_EXPORTS" PREFIX "" IMPORT_PREFIX "")
IF(OPAL_WANT_LIBLTDL AND LIBLTDL_FOUND)
INCLUDE_DIRECTORIES(${LIBLTDL_INCLUDE_PATH})
TARGET_LINK_LIBRARIES (libopen-pal Ws2_32.lib shlwapi.lib ${LIBLTDL_LIB})

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

@ -33,7 +33,7 @@
#define opal_socket_errno opal_get_socket_errno()
/* some of these have been defined in newer version of errno.h*/
#if defined(_MSC_VER) && _MSC_VER < 1600
#if (defined(__WINDOWS__) && !defined(_MSC_VER)) || _MSC_VER < 1600
#define EWOULDBLOCK WSAEWOULDBLOCK
#define EINPROGRESS WSAEINPROGRESS

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

@ -14,9 +14,7 @@ ADD_EXECUTABLE (opal-checkpoint ${OPAL_CHECKPOINT_SOURCE_FILES})
ADD_DEPENDENCIES(opal-checkpoint libopen-pal)
IF(BUILD_SHARED_LIBS)
SET_TARGET_PROPERTIES(opal-checkpoint PROPERTIES
COMPILE_FLAGS "${OMPI_C_DEF_PRE}_USRDLL ${OMPI_C_DEF_PRE}OPAL_IMPORTS
${OMPI_C_DEF_PRE}OMPI_IMPORTS ${OMPI_C_DEF_PRE}ORTE_IMPORTS
${OMPI_CXX_LAN_FLAG}")
COMPILE_FLAGS "${OMPI_C_DEF_PRE}_USRDLL ${OMPI_C_DEF_PRE}OPAL_IMPORTS ${OMPI_C_DEF_PRE}OMPI_IMPORTS ${OMPI_C_DEF_PRE}ORTE_IMPORTS ${OMPI_CXX_LAN_FLAG}")
ENDIF(BUILD_SHARED_LIBS)
SET_TARGET_PROPERTIES(opal-checkpoint PROPERTIES

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

@ -14,9 +14,7 @@ ADD_EXECUTABLE (opal-restart ${OPAL_RESTART_SOURCE_FILES})
ADD_DEPENDENCIES(opal-restart libopen-pal)
IF(BUILD_SHARED_LIBS)
SET_TARGET_PROPERTIES(opal-restart PROPERTIES
COMPILE_FLAGS "${OMPI_C_DEF_PRE}_USRDLL ${OMPI_C_DEF_PRE}OPAL_IMPORTS
${OMPI_C_DEF_PRE}OMPI_IMPORTS ${OMPI_C_DEF_PRE}ORTE_IMPORTS
${OMPI_CXX_LAN_FLAG}")
COMPILE_FLAGS "${OMPI_C_DEF_PRE}_USRDLL ${OMPI_C_DEF_PRE}OPAL_IMPORTS ${OMPI_C_DEF_PRE}OMPI_IMPORTS ${OMPI_C_DEF_PRE}ORTE_IMPORTS ${OMPI_CXX_LAN_FLAG}")
ENDIF(BUILD_SHARED_LIBS)
SET_TARGET_PROPERTIES(opal-restart PROPERTIES

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

@ -14,9 +14,7 @@ ADD_EXECUTABLE (opal-wrapper ${OPAL_WRAPPER_SOURCE_FILES})
ADD_DEPENDENCIES(opal-wrapper libopen-pal)
IF(BUILD_SHARED_LIBS)
SET_TARGET_PROPERTIES(opal-wrapper PROPERTIES
COMPILE_FLAGS "${OMPI_C_DEF_PRE}_USRDLL ${OMPI_C_DEF_PRE}OPAL_IMPORTS
${OMPI_C_DEF_PRE}OMPI_IMPORTS ${OMPI_C_DEF_PRE}ORTE_IMPORTS
${OMPI_CXX_LAN_FLAG}")
COMPILE_FLAGS "${OMPI_C_DEF_PRE}_USRDLL ${OMPI_C_DEF_PRE}OPAL_IMPORTS ${OMPI_C_DEF_PRE}OMPI_IMPORTS ${OMPI_C_DEF_PRE}ORTE_IMPORTS ${OMPI_CXX_LAN_FLAG}")
ENDIF(BUILD_SHARED_LIBS)
SET_TARGET_PROPERTIES(opal-wrapper PROPERTIES

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

@ -416,7 +416,11 @@ int opal_os_dirpath_access(const char *path, const mode_t in_mode ) {
#ifndef __WINDOWS__
struct stat buf;
#else
# ifndef _MSC_VER
struct stat buf;
# else
struct __stat64 buf;
# endif
#endif
mode_t loc_mode = S_IRWXU; /* looking for full rights */

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

@ -145,6 +145,8 @@ struct opal_output_stream_t {
*/
#if !defined(__WINDOWS__)
char *lds_syslog_ident;
#elif !defined(_MSC_VER)
char *lds_syslog_ident;
#else
HANDLE lds_syslog_ident;
#endif /* !defined(__WINDOWS__) */

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

@ -155,12 +155,14 @@ struct clockinfo {
#define TIMER_RELTIME 0x0 /* relative timer */
#define TIMER_ABSTIME 0x1 /* absolute timer */
#ifndef OMPI_TIMESPEC
#define OMPI_TIMESPEC
struct timespec
{
long tv_sec;
long tv_nsec;
};
#endif
/*

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

@ -85,6 +85,7 @@
/* for alloca */
#include <malloc.h>
#ifdef _MSC_VER
#if defined(OMPI_BUILDING) && OMPI_BUILDING
#include "opal/win32/ompi_uio.h"
#include "opal/win32/ompi_time.h"
@ -95,9 +96,6 @@
#include "opal/win32/ompi_socket.h"
#endif
#define MAXPATHLEN _MAX_PATH
#define MAXHOSTNAMELEN _MAX_PATH
#define PATH_MAX _MAX_PATH
#define STDIN_FILENO 0
#define STDOUT_FILENO 1
#define STDERR_FILENO 2
@ -114,12 +112,6 @@ typedef unsigned int uint;
#define X_OK R_OK /* no execution right on Windows */
#define S_IRWXU (_S_IREAD | _S_IWRITE | _S_IEXEC)
#define WTERMSIG(EXIT_CODE) (1)
#define WIFEXITED(EXIT_CODE) (1)
#define WEXITSTATUS(EXIT_CODE) (EXIT_CODE)
#define WIFSIGNALED(EXIT_CODE) (0)
#define WIFSTOPPED(EXIT_CODE) (0)
#define WSTOPSIG(EXIT_CODE) (11)
/**
* Microsoft compiler complain about non conformance of the default UNIX function.
@ -131,7 +123,6 @@ typedef unsigned int uint;
#define strdup _strdup
#define putenv _putenv
#define getcwd _getcwd
#define mkdir(PATH, MODE) _mkdir((PATH))
#define rmdir _rmdir
#define chdir _chdir
#define chmod _chmod
@ -146,7 +137,6 @@ typedef unsigned int uint;
#define fileno _fileno
#define isatty _isatty
#define execvp _execvp
#define pipe(array_fd) _pipe(array_fd, 1024, O_BINARY )
#define S_ISDIR(STAT_MODE) ((STAT_MODE) & _S_IFDIR)
#define S_ISREG(STAT_MODE) ((STAT_MODE) & _S_IFREG)
#define strncasecmp _strnicmp
@ -157,39 +147,87 @@ typedef unsigned int uint;
#define strtok_r strtok_s
#define srand48 srand
#define lrand48 rand
#define nanosleep(tp, rem) Sleep(*tp.tv_sec*1000+*tp.tv_nsec/1000000)
#define usleep(t) Sleep(t/1000)
#define posix_memalign(p, a, s) *p=_aligned_malloc(s,a)
#else
#undef WSABASEERR
#include <winsock.h>
#if defined(OMPI_BUILDING) && OMPI_BUILDING
#include "opal/win32/ompi_uio.h"
#include "opal/win32/ompi_utsname.h"
#include "opal/win32/ompi_util.h"
#include "opal/win32/ompi_inet.h"
#include "opal/win32/ompi_misc.h"
#include "opal/win32/ompi_socket.h"
#endif
#define strtok_r(s,d,p) *p = strtok(s,d)
#endif
#define MAXPATHLEN _MAX_PATH
#define MAXHOSTNAMELEN _MAX_PATH
#define PATH_MAX _MAX_PATH
#define WTERMSIG(EXIT_CODE) (1)
#define WIFEXITED(EXIT_CODE) (1)
#define WEXITSTATUS(EXIT_CODE) (EXIT_CODE)
#define WIFSIGNALED(EXIT_CODE) (0)
#define WIFSTOPPED(EXIT_CODE) (0)
#define WSTOPSIG(EXIT_CODE) (11)
#define mkdir(PATH, MODE) _mkdir((PATH))
#define nanosleep(tp, rem) Sleep(*tp.tv_sec*1000+*tp.tv_nsec/1000000)
#define pipe(array_fd) _pipe(array_fd, 1024, O_BINARY )
#ifndef UINT64_MAX
#define UINT64_MAX 0xffffffffffffffffULL /* 18446744073709551615ULL */
#endif
#ifndef UINT64_MIN
#define UINT64_MIN 0
#endif
#ifndef INT64_MAX
#define INT64_MAX 0x7fffffffffffffffLL /*9223372036854775807LL*/
#endif
#ifndef INT64_MIN
#define INT64_MIN (-0x7fffffffffffffffLL - 1) /* (-9223372036854775807 - 1) */
#endif
#ifndef UINT32_MAX
#define UINT32_MAX _UI32_MAX
#define UINT32_MAX 0xffffffff /* 4294967295U */
#endif
#ifndef UINT32_MIN
#define UINT32_MIN _UI32_MIN
#define UINT32_MIN 0
#endif
#ifndef INT32_MAX
#define INT32_MAX _I32_MAX
#define INT32_MAX 0x7fffffff /* 2147483647 */
#endif
#ifndef INT32_MIN
#define INT32_MIN _I32_MIN
#endif
#ifndef UINT16_MIN
#define UINT16_MIN _UI16_MIN
#define INT32_MIN (-0x7fffffff - 1) /* (-2147483647 - 1) */
#endif
#ifndef UINT16_MAX
#define UINT16_MAX _UI16_MAX
#define UINT16_MAX 0xffff /* 65535U */
#endif
#ifndef INT16_MIN
#define INT16_MIN _I16_MIN
#ifndef UINT16_MIN
#define UINT16_MIN 0
#endif
#ifndef INT16_MAX
#define INT16_MAX _I16_MAX
#define INT16_MAX 0x7fff /* 32767 */
#endif
#ifndef INT16_MIN
#define INT16_MIN (-0x7fff - 1) /* (-32768) */
#endif
#ifndef UINT8_MAX
#define UINT8_MAX _UI8_MAX
#define UINT8_MAX 0xff /* 255U */
#endif
#ifndef UINT8_MIN
#define UINT8_MIN _UI8_MIN
#define UINT8_MIN 0
#endif
#ifndef INT8_MAX
#define INT8_MAX 0x7f /* 127 */
#endif
#ifndef INT8_MIN
#define INT8_MIN (-0x7f - 1) /* (-128) */
#endif
/* Make sure we let the compiler know that we support __func__ */

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

@ -53,12 +53,23 @@ ADD_LIBRARY (libopen-rte ${ORTE_SOURCE_FILES})
ADD_DEPENDENCIES(libopen-rte libopen-pal)
IF(WINDOWS_MINGW)
SET(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIRARIES} -lpthread")
SET(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIRARIES} -lpthread")
ENDIF(WINDOWS_MINGW)
# Set compile flags for this target
IF (BUILD_SHARED_LIBS)
SET_TARGET_PROPERTIES(libopen-rte PROPERTIES
COMPILE_FLAGS "${OMPI_C_DEF_PRE}_USRDLL ${OMPI_C_DEF_PRE}ORTE_EXPORTS ${OMPI_C_DEF_PRE}OPAL_IMPORTS ${OMPI_CXX_LAN_FLAG}")
TARGET_LINK_LIBRARIES(libopen-rte ${OpenMPI_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event${CMAKE_DEBUG_POSTFIX}.lib
libopen-pal Ws2_32.lib shlwapi.lib)
COMPILE_FLAGS "${OMPI_C_DEF_PRE}_USRDLL ${OMPI_C_DEF_PRE}ORTE_EXPORTS ${OMPI_C_DEF_PRE}OPAL_IMPORTS ${OMPI_CXX_LAN_FLAG}" PREFIX "" IMPORT_PREFIX "")
IF(WINDOWS_MINGW)
TARGET_LINK_LIBRARIES(libopen-rte ${OpenMPI_BINARY_DIR}/event${CMAKE_DEBUG_POSTFIX}.lib
libopen-pal Ws2_32.lib shlwapi.lib)
ELSEIF(WINDOWS_VS)
TARGET_LINK_LIBRARIES(libopen-rte ${OpenMPI_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event${CMAKE_DEBUG_POSTFIX}.lib
libopen-pal Ws2_32.lib shlwapi.lib)
ENDIF(WINDOWS_MINGW)
ELSE (BUILD_SHARED_LIBS)
SET_TARGET_PROPERTIES(libopen-rte PROPERTIES COMPILE_FLAGS "${OMPI_C_DEF_PRE}_LIB ${OMPI_CXX_LAN_FLAG}")
ENDIF(BUILD_SHARED_LIBS)

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

@ -57,6 +57,7 @@
#include <pwd.h>
#endif
#ifdef _MSC_VER
#include <winsock2.h>
#include <comutil.h>
#include <Wbemidl.h>
@ -65,6 +66,7 @@
#pragma comment(lib, "wbemuuid.lib")
#pragma comment(lib, "comsuppw.lib")
#pragma comment(lib, "Credui.lib")
#endif
#include "opal/mca/installdirs/installdirs.h"
#include "opal/mca/base/mca_base_param.h"
@ -141,6 +143,13 @@ static const char * orte_plm_process_shell_name[] = {
"unknown"
};
/* local global storage of timing variables */
static struct timeval joblaunchstart, joblaunchstop;
/* global storage of active jobid being launched */
static orte_jobid_t active_job = ORTE_JOBID_INVALID;
#ifdef _MSC_VER
/*
* local functions
*/
@ -150,9 +159,6 @@ static int get_credential(char *node_name);
static char *read_remote_registry(uint32_t root, char *sub_key, char *key, char *remote_node, char *ntlm_auth);
/* local global storage of timing variables */
static struct timeval joblaunchstart, joblaunchstop;
/* local global storage of user credential */
static char user_name[CREDUI_MAX_USERNAME_LENGTH+1];
static char user_password[CREDUI_MAX_PASSWORD_LENGTH+1];
@ -164,8 +170,6 @@ IWbemServices *pSvc_registry = NULL;
/* namespace for \hostname\root\cimv2 */
IWbemServices *pSvc_cimv2 = NULL;
/* global storage of active jobid being launched */
static orte_jobid_t active_job = ORTE_JOBID_INVALID;
/**
* Init the module
@ -664,7 +668,7 @@ cleanup:
return pid;
}
#endif
/**
* Check the Shell variable on the specified node
@ -1287,8 +1291,12 @@ int orte_plm_process_launch(orte_job_t *jdata)
if (NULL != param) free(param);
}
#ifdef _MSC_VER
/* launch remote process */
pid = wmi_launch_child(prefix_dir, nodes[nnode]->name, argc, exec_argv);
#else
pid = _spawnve( _P_NOWAIT, exec_path, exec_argv, env);
#endif
if (pid < 0) {
failed_launch = true;
@ -1396,6 +1404,7 @@ int orte_plm_process_finalize(void)
{
int rc;
#ifdef _MSC_VER
/* release the locator and service objects*/
if(NULL!=pLoc) {
pLoc->Release();
@ -1410,6 +1419,7 @@ int orte_plm_process_finalize(void)
}
CoUninitialize();
#endif
/* cleanup any pending recvs */
if (ORTE_SUCCESS != (rc = orte_plm_base_comm_stop())) {