瀏覽代碼

ENH: add support for BlueGene/L

Alex
Alexander Neundorf 18 年之前
父節點
當前提交
10e3efa6b5
共有 3 個文件被更改,包括 29 次插入2 次删除
  1. 1 1
      Modules/CMakeLists.txt
  2. 6 1
      Modules/FindMPI.cmake
  3. 22 0
      Modules/Platform/BlueGeneL.cmake

+ 1 - 1
Modules/CMakeLists.txt

@@ -1,5 +1,5 @@
 # just install the modules
-# new file added, force rerunning cmake 
+# new file added, force rerunning cmake #
 
 SUBDIRS(Platform)
 INSTALL_FILES(${CMAKE_DATA_DIR}/Modules .*\\.cmake$)

+ 6 - 1
Modules/FindMPI.cmake

@@ -13,7 +13,7 @@ FIND_PATH(MPI_INCLUDE_PATH NAMES mpi.h
 )
 
 FIND_LIBRARY(MPI_LIBRARY 
-             NAMES mpich2 mpi mpich 
+             NAMES mpich2 mpi mpich mpich.rts
              PATH_SUFFIXES mpi/lib
              PATHS
              "$ENV{ProgramFiles}/MPICH/SDK/Lib"
@@ -29,4 +29,9 @@ FIND_LIBRARY(MPI_EXTRA_LIBRARY
              "C:/Program Files/MPICH/SDK/Lib" 
              DOC "If a second mpi library is necessary, specify it here.")
 
+# on BlueGene/L the MPI lib is named libmpich.rts.a, there also these additional libs are required
+IF("${MPI_LIBRARY}" MATCHES "mpich.rts")
+   SET(MPI_EXTRA_LIBRARY msglayer.rts devices.rts rts.rts devices.rts CACHE STRING "Additional MPI libs" FORCE)
+ENDIF("${MPI_LIBRARY}" MATCHES "mpich.rts")
+
 MARK_AS_ADVANCED(MPI_INCLUDE_PATH MPI_LIBRARY MPI_EXTRA_LIBRARY)

+ 22 - 0
Modules/Platform/BlueGeneL.cmake

@@ -0,0 +1,22 @@
+#the compute nodes on BlueGene/L don't support shared libs 
+SET(CMAKE_TARGET_SUPPORTS_ONLY_STATIC_LIBS TRUE)
+
+SET(CMAKE_SHARED_LIBRARY_C_FLAGS "")            # -pic 
+SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "")       # -shared
+SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")         # +s, flag for exe link to use shared lib
+SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "")       # -rpath
+SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP "")   # : or empty
+
+SET(CMAKE_LINK_LIBRARY_SUFFIX "")
+SET(CMAKE_STATIC_LIBRARY_PREFIX "lib")
+SET(CMAKE_STATIC_LIBRARY_SUFFIX ".a")
+SET(CMAKE_SHARED_LIBRARY_PREFIX "lib")          # lib
+SET(CMAKE_SHARED_LIBRARY_SUFFIX ".a")           # .a
+SET(CMAKE_EXECUTABLE_SUFFIX "")          # .exe
+SET(CMAKE_DL_LIBS "" )
+
+SET(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+
+
+INCLUDE(Platform/UnixPaths)