Make the compiler wrappers work correctly for MinGW build.
This commit was SVN r25051.
Этот коммит содержится в:
родитель
3d96497581
Коммит
20ee92c16e
@ -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.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
@ -28,7 +28,7 @@ IF(MSVC)
|
||||
ELSE(CMAKE_CL_64)
|
||||
SET(COMPILER_TYPE "win32")
|
||||
ENDIF(CMAKE_CL_64)
|
||||
ELSEIF(NOT "$ENV{MSYSTEM}" STREQUAL "")
|
||||
ELSEIF("${CMAKE_GENERATOR}" STREQUAL "MinGW Makefiles")
|
||||
SET(WINDOWS_MINGW TRUE CACHE INTERNAL "Windows MinGW env")
|
||||
ENDIF(MSVC)
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# -*- 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.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
@ -47,6 +47,9 @@ IF(NOT MINGW_CHECK_DONE)
|
||||
|
||||
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.
|
||||
SET(OMPI_C_OPTION_COMPILE "-c" CACHE INTERNAL
|
||||
"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.
|
||||
# Copyright (c) 2008 The University of Tennessee and The University
|
||||
# of Tennessee Research Foundation. All rights
|
||||
@ -127,7 +127,7 @@ SET_TARGET_PROPERTIES(libmpi PROPERTIES
|
||||
# Set compile flags for this target
|
||||
IF (BUILD_SHARED_LIBS)
|
||||
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
|
||||
libopen-rte Ws2_32.lib shlwapi.lib ${EXTRA_LINK_LIBRARIES})
|
||||
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.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
@ -23,7 +23,7 @@ ENDIF(NOT OMPI_PROVIDE_MPI_FILE_INTERFACE)
|
||||
|
||||
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
|
||||
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.
|
||||
# Copyright (c) 2008 The University of Tennessee and The University
|
||||
# of Tennessee Research Foundation. All rights
|
||||
@ -23,12 +23,12 @@ MACRO(CONFIGURE_WRAPPER_DATA_FILE APP_NAME)
|
||||
SET(INPUT_PREFIX ${APP_NAME})
|
||||
ENDIF(${APP_NAME} STREQUAL "mpicxx")
|
||||
|
||||
FILE(READ ${OpenMPI_SOURCE_DIR}/ompi/tools/wrappers/${INPUT_PREFIX}-wrapper-data.txt.in FILE_STRING)
|
||||
STRING(REGEX REPLACE "-l[-a-zA-Z0-9_]+ " "" OUTPUT ${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_]+ " "" DATA_FILE ${DATA_FILE})
|
||||
|
||||
# create a temporary input file, for "write file" command only
|
||||
# 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
|
||||
${OMPI_BINARY_DIR}/tools/wrappers/${APP_NAME}${OMPI_EXE_DEBUG_POSTFIX}-wrapper-data.txt @ONLY)
|
||||
@ -40,14 +40,23 @@ MACRO(CONFIGURE_WRAPPER_DATA_FILE APP_NAME)
|
||||
DESTINATION share/openmpi)
|
||||
ENDMACRO()
|
||||
|
||||
|
||||
# select debug or release libraries at configure time
|
||||
IF(OMPI_DEBUG_BUILD)
|
||||
SET(OMPI_WRAPPER_BASE_LIBS
|
||||
"libmpid.lib libopen-pald.lib libopen-rted.lib advapi32.lib Ws2_32.lib shlwapi.lib")
|
||||
ELSE(OMPI_DEBUG_BUILD)
|
||||
SET(OMPI_WRAPPER_BASE_LIBS
|
||||
"libmpi.lib libopen-pal.lib libopen-rte.lib advapi32.lib Ws2_32.lib shlwapi.lib")
|
||||
ENDIF(OMPI_DEBUG_BUILD)
|
||||
IF(WINDOWS_VS)
|
||||
IF(OMPI_DEBUG_BUILD)
|
||||
SET(OMPI_WRAPPER_BASE_LIBS
|
||||
"libmpid.lib libopen-pald.lib libopen-rted.lib advapi32.lib Ws2_32.lib shlwapi.lib")
|
||||
ELSE(OMPI_DEBUG_BUILD)
|
||||
SET(OMPI_WRAPPER_BASE_LIBS
|
||||
"libmpi.lib libopen-pal.lib libopen-rte.lib advapi32.lib Ws2_32.lib shlwapi.lib")
|
||||
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)
|
||||
SET(OMPI_WRAPPER_EXTRA_CFLAGS
|
||||
@ -65,6 +74,22 @@ CONFIGURE_WRAPPER_DATA_FILE(mpicc)
|
||||
UNSET(OMPI_WRAPPER_EXTRA_LIBS)
|
||||
|
||||
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)
|
||||
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")
|
||||
@ -76,18 +101,26 @@ IF(OMPI_WANT_CXX_BINDINGS)
|
||||
ENDIF(OMPI_DEBUG_BUILD)
|
||||
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(mpicxx)
|
||||
ENDIF(OMPI_WANT_CXX_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)
|
||||
SET(OMPI_WRAPPER_EXTRA_FFLAGS
|
||||
"")
|
||||
@ -99,12 +132,6 @@ IF(OMPI_WANT_F77_BINDINGS)
|
||||
ENDIF(OMPI_DEBUG_BUILD)
|
||||
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)
|
||||
UNSET(OMPI_WRAPPER_EXTRA_LIBS)
|
||||
ENDIF(OMPI_WANT_F77_BINDINGS)
|
||||
|
@ -56,13 +56,13 @@
|
||||
#include "opal/util/basename.h"
|
||||
#include "opal/util/os_path.h"
|
||||
|
||||
#if !defined(__WINDOWS__)
|
||||
#define OPAL_INCLUDE_FLAG "-I"
|
||||
#define OPAL_LIBDIR_FLAG "-L"
|
||||
#else
|
||||
#if defined(__WINDOWS__) && defined(_MSC_VER)
|
||||
#define OPAL_INCLUDE_FLAG "/I"
|
||||
#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 {
|
||||
char **compiler_args;
|
||||
@ -358,14 +358,20 @@ data_callback(const char *key, const char *value)
|
||||
} else if (0 == strcmp(key, "libdir")) {
|
||||
if (NULL != value) options_data[parse_options_idx].path_libdir =
|
||||
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" );
|
||||
#endif /* defined(__WINDOWS__) */
|
||||
#endif /* defined(__WINDOWS__) && defined(_MSC_VER) */
|
||||
if (0 != strcmp(options_data[parse_options_idx].path_libdir, "/usr/lib")) {
|
||||
char *line;
|
||||
#if defined(__WINDOWS__)
|
||||
# if defined(_MSC_VER)
|
||||
asprintf(&line, OPAL_LIBDIR_FLAG"\"%s\"",
|
||||
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
|
||||
asprintf(&line, OPAL_LIBDIR_FLAG"%s",
|
||||
options_data[parse_options_idx].path_libdir);
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user