aboutsummaryrefslogtreecommitdiff
path: root/ports/openmpi
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2019-11-22 09:47:40 -0800
committerGitHub <noreply@github.com>2019-11-22 09:47:40 -0800
commit45f4b820e5743b89bca3508ba2028cdd5d8bbd17 (patch)
treef874a8c4a7392309bdbb86447288597ec0a4a281 /ports/openmpi
parent62d67d3bf8eeff1afa8009041fd08b8822676b7b (diff)
parent8831e8f25f1ff6546ee4a5291b91d599421637b3 (diff)
downloadvcpkg-45f4b820e5743b89bca3508ba2028cdd5d8bbd17.tar.gz
vcpkg-45f4b820e5743b89bca3508ba2028cdd5d8bbd17.zip
Merge branch 'master' into vcpkg_nuget
Diffstat (limited to 'ports/openmpi')
-rw-r--r--ports/openmpi/CONTROL4
-rw-r--r--ports/openmpi/portfile.cmake100
2 files changed, 104 insertions, 0 deletions
diff --git a/ports/openmpi/CONTROL b/ports/openmpi/CONTROL
new file mode 100644
index 000000000..6ea5a17c1
--- /dev/null
+++ b/ports/openmpi/CONTROL
@@ -0,0 +1,4 @@
+Source: openmpi
+Version: 4.0.1
+Homepage: https://www.open-mpi.org/
+Description: The Open MPI Project is an open source Message Passing Interface implementation that is developed and maintained by a consortium of academic, research, and industry partners. Open MPI is therefore able to combine the expertise, technologies, and resources from all across the High Performance Computing community in order to build the best MPI library available. Open MPI offers advantages for system and software vendors, application developers and computer science researchers.
diff --git a/ports/openmpi/portfile.cmake b/ports/openmpi/portfile.cmake
new file mode 100644
index 000000000..9f69f9f9b
--- /dev/null
+++ b/ports/openmpi/portfile.cmake
@@ -0,0 +1,100 @@
+include(vcpkg_common_functions)
+
+if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" OR NOT VCPKG_CMAKE_SYSTEM_NAME)
+ message(FATAL_ERROR "This port is only for openmpi on Unix-like systems")
+endif()
+
+vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)
+
+set(OpenMPI_FULL_VERSION "4.0.1")
+set(OpenMPI_SHORT_VERSION "4.0")
+
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://download.open-mpi.org/release/open-mpi/v${OpenMPI_SHORT_VERSION}/openmpi-${OpenMPI_FULL_VERSION}.tar.gz"
+ FILENAME "openmpi-${OpenMPI_FULL_VERSION}.tar.gz"
+ SHA512 760716974cb6b25ad820184622e1ee7926bc6fda87db6b574f76792bc1ca99522e52195866c14b7cb2df5a4981efdaf9f71d2c5533cc0e8e45c2c4b3b74cbacc
+)
+
+if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
+ list(APPEND BUILD_TYPES "release")
+endif()
+if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
+ list(APPEND BUILD_TYPES "debug")
+endif()
+
+set(SOURCE_PATH_DEBUG ${CURRENT_BUILDTREES_DIR}/src-${TARGET_TRIPLET}-debug/openmpi-${OpenMPI_FULL_VERSION})
+set(SOURCE_PATH_RELEASE ${CURRENT_BUILDTREES_DIR}/src-${TARGET_TRIPLET}-release/openmpi-${OpenMPI_FULL_VERSION})
+set(OUT_PATH_DEBUG ${SOURCE_PATH_RELEASE}/../../make-build-${TARGET_TRIPLET}-debug)
+set(OUT_PATH_RELEASE ${SOURCE_PATH_RELEASE}/../../make-build-${TARGET_TRIPLET}-release)
+file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/src-${TARGET_TRIPLET}-debug/)
+file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/src-${TARGET_TRIPLET}-release/)
+file(MAKE_DIRECTORY ${OUT_PATH_DEBUG})
+file(MAKE_DIRECTORY ${OUT_PATH_RELEASE})
+
+foreach(BUILD_TYPE IN LISTS BUILD_TYPES)
+ vcpkg_extract_source_archive(${ARCHIVE} ${CURRENT_BUILDTREES_DIR}/src-${TARGET_TRIPLET}-${BUILD_TYPE})
+ #vcpkg_apply_patches(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src-${TARGET_TRIPLET}-${BUILD_TYPE}/openmpi-${OpenMPI_FULL_VERSION} PATCHES patch.file)
+endforeach()
+
+vcpkg_find_acquire_program(PERL)
+get_filename_component(PERL_PATH ${PERL} DIRECTORY)
+vcpkg_add_to_path(${PERL_PATH})
+
+set(BASH bash)
+
+if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
+ message(STATUS "Configuring ${TARGET_TRIPLET}-dbg")
+ vcpkg_execute_required_process(
+ COMMAND ${BASH} --noprofile --norc -c "${SOURCE_PATH_DEBUG}/configure --prefix=${OUT_PATH_DEBUG} --enable-debug"
+ WORKING_DIRECTORY "${SOURCE_PATH_DEBUG}"
+ LOGNAME "config-${TARGET_TRIPLET}-dbg"
+ )
+ message(STATUS "Building ${TARGET_TRIPLET}-dbg")
+ vcpkg_execute_required_process(
+ COMMAND ${BASH} --noprofile --norc -c "make -j ${VCPKG_CONCURRENCY}"
+ NO_PARALLEL_COMMAND ${BASH} --noprofile --norc -c "make"
+ WORKING_DIRECTORY "${SOURCE_PATH_DEBUG}"
+ LOGNAME "make-build-${TARGET_TRIPLET}-dbg"
+ )
+ message(STATUS "Installing ${TARGET_TRIPLET}-dbg")
+ vcpkg_execute_required_process(
+ COMMAND ${BASH} --noprofile --norc -c "make install"
+ WORKING_DIRECTORY "${SOURCE_PATH_DEBUG}"
+ LOGNAME "make-install-${TARGET_TRIPLET}-dbg"
+ )
+ file(COPY ${OUT_PATH_DEBUG}/lib DESTINATION ${CURRENT_PACKAGES_DIR}/debug)
+ message(STATUS "Installing ${TARGET_TRIPLET}-dbg done")
+endif()
+
+if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
+ message(STATUS "Configuring ${TARGET_TRIPLET}-rel")
+ vcpkg_execute_required_process(
+ COMMAND ${BASH} --noprofile --norc -c "${SOURCE_PATH_RELEASE}/configure --prefix=${OUT_PATH_RELEASE}"
+ WORKING_DIRECTORY "${SOURCE_PATH_RELEASE}"
+ LOGNAME "config-${TARGET_TRIPLET}-rel"
+ )
+ message(STATUS "Building ${TARGET_TRIPLET}-rel")
+ vcpkg_execute_required_process(
+ COMMAND ${BASH} --noprofile --norc -c "make -j ${VCPKG_CONCURRENCY}"
+ NO_PARALLEL_COMMAND ${BASH} --noprofile --norc -c "make"
+ WORKING_DIRECTORY "${SOURCE_PATH_RELEASE}"
+ LOGNAME "make-build-${TARGET_TRIPLET}-rel"
+ )
+ message(STATUS "Installing ${TARGET_TRIPLET}-rel")
+ vcpkg_execute_required_process(
+ COMMAND ${BASH} --noprofile --norc -c "make install"
+ WORKING_DIRECTORY "${SOURCE_PATH_RELEASE}"
+ LOGNAME "make-install-${TARGET_TRIPLET}-rel"
+ )
+ file(COPY ${OUT_PATH_RELEASE}/lib DESTINATION ${CURRENT_PACKAGES_DIR})
+ file(COPY ${OUT_PATH_RELEASE}/include DESTINATION ${CURRENT_PACKAGES_DIR})
+ file(COPY ${OUT_PATH_RELEASE}/share DESTINATION ${CURRENT_PACKAGES_DIR})
+ file(COPY ${OUT_PATH_RELEASE}/bin DESTINATION ${CURRENT_PACKAGES_DIR})
+ message(STATUS "Installing ${TARGET_TRIPLET}-rel done")
+endif()
+
+if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
+ file(INSTALL ${SOURCE_PATH_DEBUG}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/openmpi RENAME copyright)
+else()
+ file(INSTALL ${SOURCE_PATH_RELEASE}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/openmpi RENAME copyright)
+endif()