1
1

Make the compiler wrappers work correctly for MinGW build.

This commit was SVN r25051.
Этот коммит содержится в:
Shiqing Fan 2011-08-16 12:32:41 +00:00
родитель 3d96497581
Коммит 20ee92c16e
6 изменённых файлов: 74 добавлений и 38 удалений

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

@ -1,5 +1,5 @@
# #
# Copyright (c) 2007-2010 High Performance Computing Center Stuttgart, # Copyright (c) 2007-2011 High Performance Computing Center Stuttgart,
# University of Stuttgart. All rights reserved. # University of Stuttgart. All rights reserved.
# $COPYRIGHT$ # $COPYRIGHT$
# #
@ -28,7 +28,7 @@ IF(MSVC)
ELSE(CMAKE_CL_64) ELSE(CMAKE_CL_64)
SET(COMPILER_TYPE "win32") SET(COMPILER_TYPE "win32")
ENDIF(CMAKE_CL_64) ENDIF(CMAKE_CL_64)
ELSEIF(NOT "$ENV{MSYSTEM}" STREQUAL "") ELSEIF("${CMAKE_GENERATOR}" STREQUAL "MinGW Makefiles")
SET(WINDOWS_MINGW TRUE CACHE INTERNAL "Windows MinGW env") SET(WINDOWS_MINGW TRUE CACHE INTERNAL "Windows MinGW env")
ENDIF(MSVC) ENDIF(MSVC)

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

@ -1,6 +1,6 @@
# -*- cmake-script -*- # -*- cmake-script -*-
# #
# Copyright (c) 2007-2010 High Performance Computing Center Stuttgart, # Copyright (c) 2007-2011 High Performance Computing Center Stuttgart,
# University of Stuttgart. All rights reserved. # University of Stuttgart. All rights reserved.
# $COPYRIGHT$ # $COPYRIGHT$
# #
@ -47,6 +47,9 @@ IF(NOT MINGW_CHECK_DONE)
MESSAGE( STATUS "Start MinGW specific detection....") MESSAGE( STATUS "Start MinGW specific detection....")
GET_FILENAME_COMPONENT(CC ${CMAKE_C_COMPILER} NAME)
GET_FILENAME_COMPONENT(CXX ${CMAKE_CXX_COMPILER} NAME)
# Default compiler settings. # Default compiler settings.
SET(OMPI_C_OPTION_COMPILE "-c" CACHE INTERNAL SET(OMPI_C_OPTION_COMPILE "-c" CACHE INTERNAL
"C compiler option for compiling without linking.") "C compiler option for compiling without linking.")

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

@ -1,4 +1,4 @@
# Copyright (c) 2007-2010 High Performance Computing Center Stuttgart, # Copyright (c) 2007-2011 High Performance Computing Center Stuttgart,
# University of Stuttgart. All rights reserved. # University of Stuttgart. All rights reserved.
# Copyright (c) 2008 The University of Tennessee and The University # Copyright (c) 2008 The University of Tennessee and The University
# of Tennessee Research Foundation. All rights # of Tennessee Research Foundation. All rights
@ -127,7 +127,7 @@ SET_TARGET_PROPERTIES(libmpi PROPERTIES
# Set compile flags for this target # Set compile flags for this target
IF (BUILD_SHARED_LIBS) IF (BUILD_SHARED_LIBS)
SET_TARGET_PROPERTIES(libmpi PROPERTIES SET_TARGET_PROPERTIES(libmpi PROPERTIES
COMPILE_FLAGS "${OMPI_C_DEF_PRE}_USRDLL ${OMPI_C_DEF_PRE}HAVE_CONFIG_H ${OMPI_C_DEF_PRE}OMPI_EXPORTS ${OMPI_C_DEF_PRE}OPAL_IMPORTS ${OMPI_C_DEF_PRE}ORTE_IMPORTS ${OMPI_CXX_LAN_FLAG} PREFIX "" IMPORT_PREFIX """) COMPILE_FLAGS "${OMPI_C_DEF_PRE}_USRDLL ${OMPI_C_DEF_PRE}HAVE_CONFIG_H ${OMPI_C_DEF_PRE}OMPI_EXPORTS ${OMPI_C_DEF_PRE}OPAL_IMPORTS ${OMPI_C_DEF_PRE}ORTE_IMPORTS ${OMPI_CXX_LAN_FLAG}" PREFIX "" IMPORT_PREFIX "")
TARGET_LINK_LIBRARIES (libmpi ${OpenMPI_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event${CMAKE_DEBUG_POSTFIX}.lib TARGET_LINK_LIBRARIES (libmpi ${OpenMPI_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event${CMAKE_DEBUG_POSTFIX}.lib
libopen-rte Ws2_32.lib shlwapi.lib ${EXTRA_LINK_LIBRARIES}) libopen-rte Ws2_32.lib shlwapi.lib ${EXTRA_LINK_LIBRARIES})
ELSE (BUILD_SHARED_LIBS) ELSE (BUILD_SHARED_LIBS)

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

@ -1,4 +1,4 @@
# Copyright (c) 2007-2010 High Performance Computing Center Stuttgart, # Copyright (c) 2007-2011 High Performance Computing Center Stuttgart,
# University of Stuttgart. All rights reserved. # University of Stuttgart. All rights reserved.
# $COPYRIGHT$ # $COPYRIGHT$
# #
@ -23,7 +23,7 @@ ENDIF(NOT OMPI_PROVIDE_MPI_FILE_INTERFACE)
ADD_LIBRARY (libmpi_cxx ${CXX_SOURCE_FILES}) ADD_LIBRARY (libmpi_cxx ${CXX_SOURCE_FILES})
SET_TARGET_PROPERTIES (libmpi_cxx PROPERTIES LINKER_LANGUAGE CXX) SET_TARGET_PROPERTIES (libmpi_cxx PROPERTIES LINKER_LANGUAGE CXX PREFIX "" IMPORT_PREFIX "")
# Set compile flags for this target # Set compile flags for this target
IF (BUILD_SHARED_LIBS) IF (BUILD_SHARED_LIBS)

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

@ -1,4 +1,4 @@
# Copyright (c) 2007-2009 High Performance Computing Center Stuttgart, # Copyright (c) 2007-2011 High Performance Computing Center Stuttgart,
# University of Stuttgart. All rights reserved. # University of Stuttgart. All rights reserved.
# Copyright (c) 2008 The University of Tennessee and The University # Copyright (c) 2008 The University of Tennessee and The University
# of Tennessee Research Foundation. All rights # of Tennessee Research Foundation. All rights
@ -23,12 +23,12 @@ MACRO(CONFIGURE_WRAPPER_DATA_FILE APP_NAME)
SET(INPUT_PREFIX ${APP_NAME}) SET(INPUT_PREFIX ${APP_NAME})
ENDIF(${APP_NAME} STREQUAL "mpicxx") ENDIF(${APP_NAME} STREQUAL "mpicxx")
FILE(READ ${OpenMPI_SOURCE_DIR}/ompi/tools/wrappers/${INPUT_PREFIX}-wrapper-data.txt.in FILE_STRING) FILE(READ ${OpenMPI_SOURCE_DIR}/ompi/tools/wrappers/${INPUT_PREFIX}-wrapper-data.txt.in DATA_FILE)
STRING(REGEX REPLACE "-l[-a-zA-Z0-9_]+ " "" OUTPUT ${FILE_STRING}) STRING(REGEX REPLACE "-l[-a-zA-Z0-9_]+ " "" DATA_FILE ${DATA_FILE})
# create a temporary input file, for "write file" command only # create a temporary input file, for "write file" command only
# replace the variables in the first level. :( # replace the variables in the first level. :(
FILE(WRITE ${OMPI_BINARY_DIR}/tools/wrappers/${APP_NAME}-wrapper-data.txt.in "${OUTPUT}") FILE(WRITE ${OMPI_BINARY_DIR}/tools/wrappers/${APP_NAME}-wrapper-data.txt.in "${DATA_FILE}")
CONFIGURE_FILE(${OMPI_BINARY_DIR}/tools/wrappers/${APP_NAME}-wrapper-data.txt.in CONFIGURE_FILE(${OMPI_BINARY_DIR}/tools/wrappers/${APP_NAME}-wrapper-data.txt.in
${OMPI_BINARY_DIR}/tools/wrappers/${APP_NAME}${OMPI_EXE_DEBUG_POSTFIX}-wrapper-data.txt @ONLY) ${OMPI_BINARY_DIR}/tools/wrappers/${APP_NAME}${OMPI_EXE_DEBUG_POSTFIX}-wrapper-data.txt @ONLY)
@ -40,7 +40,9 @@ MACRO(CONFIGURE_WRAPPER_DATA_FILE APP_NAME)
DESTINATION share/openmpi) DESTINATION share/openmpi)
ENDMACRO() ENDMACRO()
# select debug or release libraries at configure time # select debug or release libraries at configure time
IF(WINDOWS_VS)
IF(OMPI_DEBUG_BUILD) IF(OMPI_DEBUG_BUILD)
SET(OMPI_WRAPPER_BASE_LIBS SET(OMPI_WRAPPER_BASE_LIBS
"libmpid.lib libopen-pald.lib libopen-rted.lib advapi32.lib Ws2_32.lib shlwapi.lib") "libmpid.lib libopen-pald.lib libopen-rted.lib advapi32.lib Ws2_32.lib shlwapi.lib")
@ -48,6 +50,13 @@ ELSE(OMPI_DEBUG_BUILD)
SET(OMPI_WRAPPER_BASE_LIBS SET(OMPI_WRAPPER_BASE_LIBS
"libmpi.lib libopen-pal.lib libopen-rte.lib advapi32.lib Ws2_32.lib shlwapi.lib") "libmpi.lib libopen-pal.lib libopen-rte.lib advapi32.lib Ws2_32.lib shlwapi.lib")
ENDIF(OMPI_DEBUG_BUILD) ENDIF(OMPI_DEBUG_BUILD)
ELSEIF(WINDOWS_MINGW)
IF(OMPI_DEBUG_BUILD)
SET(OMPI_WRAPPER_BASE_LIBS "-lmpid")
ELSE(OMPI_DEBUG_BUILD)
SET(OMPI_WRAPPER_BASE_LIBS "-lmpi")
ENDIF(OMPI_DEBUG_BUILD)
ENDIF(WINDOWS_VS)
IF(BUILD_SHARED_LIBS) IF(BUILD_SHARED_LIBS)
SET(OMPI_WRAPPER_EXTRA_CFLAGS SET(OMPI_WRAPPER_EXTRA_CFLAGS
@ -65,6 +74,22 @@ CONFIGURE_WRAPPER_DATA_FILE(mpicc)
UNSET(OMPI_WRAPPER_EXTRA_LIBS) UNSET(OMPI_WRAPPER_EXTRA_LIBS)
IF(OMPI_WANT_CXX_BINDINGS) IF(OMPI_WANT_CXX_BINDINGS)
# select debug or release libraries at configure time
IF(WINDOWS_VS)
IF(OMPI_DEBUG_BUILD)
SET(OMPI_WRAPPER_CXX_LIB "libmpi_cxxd.lib ${OMPI_WRAPPER_BASE_LIBS}")
ELSE(OMPI_DEBUG_BUILD)
SET(OMPI_WRAPPER_CXX_LIB "libmpi_cxx.lib ${OMPI_WRAPPER_BASE_LIBS}")
ENDIF(OMPI_DEBUG_BUILD)
ELSEIF(WINDOWS_MINGW)
IF(OMPI_DEBUG_BUILD)
SET(OMPI_WRAPPER_CXX_LIB "-lmpi_cxxd ${OMPI_WRAPPER_BASE_LIBS}")
ELSE(OMPI_DEBUG_BUILD)
SET(OMPI_WRAPPER_CXX_LIB "-lmpi_cxx ${OMPI_WRAPPER_BASE_LIBS}")
ENDIF(OMPI_DEBUG_BUILD)
ENDIF(WINDOWS_VS)
IF(BUILD_SHARED_LIBS) IF(BUILD_SHARED_LIBS)
SET(OMPI_WRAPPER_EXTRA_CXXFLAGS SET(OMPI_WRAPPER_EXTRA_CXXFLAGS
"${OMPI_CXX_LAN_FLAG} ${OMPI_CXX_EXCEPTION} ${OMPI_C_DEF_PRE}OMPI_IMPORTS ${OMPI_C_DEF_PRE}OPAL_IMPORTS ${OMPI_C_DEF_PRE}ORTE_IMPORTS") "${OMPI_CXX_LAN_FLAG} ${OMPI_CXX_EXCEPTION} ${OMPI_C_DEF_PRE}OMPI_IMPORTS ${OMPI_C_DEF_PRE}OPAL_IMPORTS ${OMPI_C_DEF_PRE}ORTE_IMPORTS")
@ -76,18 +101,26 @@ IF(OMPI_WANT_CXX_BINDINGS)
ENDIF(OMPI_DEBUG_BUILD) ENDIF(OMPI_DEBUG_BUILD)
ENDIF(BUILD_SHARED_LIBS) ENDIF(BUILD_SHARED_LIBS)
# select debug or release libraries at configure time
IF(OMPI_DEBUG_BUILD)
SET(OMPI_WRAPPER_CXX_LIB "libmpi_cxxd.lib ${OMPI_WRAPPER_BASE_LIBS}")
ELSE(OMPI_DEBUG_BUILD)
SET(OMPI_WRAPPER_CXX_LIB "libmpi_cxx.lib ${OMPI_WRAPPER_BASE_LIBS}")
ENDIF(OMPI_DEBUG_BUILD)
CONFIGURE_WRAPPER_DATA_FILE(mpic++) CONFIGURE_WRAPPER_DATA_FILE(mpic++)
CONFIGURE_WRAPPER_DATA_FILE(mpicxx) CONFIGURE_WRAPPER_DATA_FILE(mpicxx)
ENDIF(OMPI_WANT_CXX_BINDINGS) ENDIF(OMPI_WANT_CXX_BINDINGS)
IF(OMPI_WANT_F77_BINDINGS) IF(OMPI_WANT_F77_BINDINGS)
# select debug or release libraries at configure time
IF(WINDOWS_VS)
IF(OMPI_DEBUG_BUILD)
SET(OMPI_WRAPPER_EXTRA_LIBS "libmpi_f77d.lib ${OMPI_WRAPPER_BASE_LIBS}")
ELSE(OMPI_DEBUG_BUILD)
SET(OMPI_WRAPPER_EXTRA_LIBS "libmpi_f77.lib ${OMPI_WRAPPER_BASE_LIBS}")
ENDIF(OMPI_DEBUG_BUILD)
ELSEIF(WINDOWS_MINGW)
IF(OMPI_DEBUG_BUILD)
SET(OMPI_WRAPPER_EXTRA_LIBS "-lmpi_f77d ${OMPI_WRAPPER_BASE_LIBS}")
ELSE(OMPI_DEBUG_BUILD)
SET(OMPI_WRAPPER_EXTRA_LIBS "-lmpi_f77 ${OMPI_WRAPPER_BASE_LIBS}")
ENDIF(OMPI_DEBUG_BUILD)
ENDIF(WINDOWS_VS)
IF(BUILD_SHARED_LIBS) IF(BUILD_SHARED_LIBS)
SET(OMPI_WRAPPER_EXTRA_FFLAGS SET(OMPI_WRAPPER_EXTRA_FFLAGS
"") "")
@ -99,12 +132,6 @@ IF(OMPI_WANT_F77_BINDINGS)
ENDIF(OMPI_DEBUG_BUILD) ENDIF(OMPI_DEBUG_BUILD)
ENDIF(BUILD_SHARED_LIBS) ENDIF(BUILD_SHARED_LIBS)
# select debug or release libraries at configure time
IF(OMPI_DEBUG_BUILD)
SET(OMPI_WRAPPER_EXTRA_LIBS "libmpi_f77d.lib ${OMPI_WRAPPER_BASE_LIBS}")
ELSE(OMPI_DEBUG_BUILD)
SET(OMPI_WRAPPER_EXTRA_LIBS "libmpi_f77.lib ${OMPI_WRAPPER_BASE_LIBS}")
ENDIF(OMPI_DEBUG_BUILD)
CONFIGURE_WRAPPER_DATA_FILE(mpif77) CONFIGURE_WRAPPER_DATA_FILE(mpif77)
UNSET(OMPI_WRAPPER_EXTRA_LIBS) UNSET(OMPI_WRAPPER_EXTRA_LIBS)
ENDIF(OMPI_WANT_F77_BINDINGS) ENDIF(OMPI_WANT_F77_BINDINGS)

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

@ -56,13 +56,13 @@
#include "opal/util/basename.h" #include "opal/util/basename.h"
#include "opal/util/os_path.h" #include "opal/util/os_path.h"
#if !defined(__WINDOWS__) #if defined(__WINDOWS__) && defined(_MSC_VER)
#define OPAL_INCLUDE_FLAG "-I"
#define OPAL_LIBDIR_FLAG "-L"
#else
#define OPAL_INCLUDE_FLAG "/I" #define OPAL_INCLUDE_FLAG "/I"
#define OPAL_LIBDIR_FLAG "/LIBPATH:" #define OPAL_LIBDIR_FLAG "/LIBPATH:"
#endif /* !defined(__WINDOWS__) */ #else
#define OPAL_INCLUDE_FLAG "-I"
#define OPAL_LIBDIR_FLAG "-L"
#endif /* !defined(__WINDOWS__) && defined(_MSC_VER) */
struct options_data_t { struct options_data_t {
char **compiler_args; char **compiler_args;
@ -358,14 +358,20 @@ data_callback(const char *key, const char *value)
} else if (0 == strcmp(key, "libdir")) { } else if (0 == strcmp(key, "libdir")) {
if (NULL != value) options_data[parse_options_idx].path_libdir = if (NULL != value) options_data[parse_options_idx].path_libdir =
opal_install_dirs_expand(value); opal_install_dirs_expand(value);
#if defined(__WINDOWS__) #if defined(__WINDOWS__) && defined(_MSC_VER)
opal_argv_append_nosize( &options_data[parse_options_idx].link_flags, "/link" ); opal_argv_append_nosize( &options_data[parse_options_idx].link_flags, "/link" );
#endif /* defined(__WINDOWS__) */ #endif /* defined(__WINDOWS__) && defined(_MSC_VER) */
if (0 != strcmp(options_data[parse_options_idx].path_libdir, "/usr/lib")) { if (0 != strcmp(options_data[parse_options_idx].path_libdir, "/usr/lib")) {
char *line; char *line;
#if defined(__WINDOWS__) #if defined(__WINDOWS__)
# if defined(_MSC_VER)
asprintf(&line, OPAL_LIBDIR_FLAG"\"%s\"", asprintf(&line, OPAL_LIBDIR_FLAG"\"%s\"",
options_data[parse_options_idx].path_libdir); options_data[parse_options_idx].path_libdir);
# else
/* linked DLLs are in bin for MinGW build*/
asprintf(&line, OPAL_LIBDIR_FLAG"\"%s/../bin\"",
options_data[parse_options_idx].path_libdir);
# endif /* defined(_MSC_VER) */
#else #else
asprintf(&line, OPAL_LIBDIR_FLAG"%s", asprintf(&line, OPAL_LIBDIR_FLAG"%s",
options_data[parse_options_idx].path_libdir); options_data[parse_options_idx].path_libdir);