|
| 1 | +if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) |
| 2 | + set(_source_dir "${CMAKE_CURRENT_BINARY_DIR}/source") |
| 3 | + set(_download_stamp "${_source_dir}/download.stamp") |
| 4 | + |
| 5 | + therock_subproject_fetch(therock-openmpi-sources |
| 6 | + SOURCE_DIR "${_source_dir}" |
| 7 | + # Originally mirrored from: "https://download.open-mpi.org/release/open-mpi/v5.0/openmpi-5.0.9.tar.bz2" |
| 8 | + URL "https://rocm-third-party-deps.s3.us-east-2.amazonaws.com/openmpi-5.0.9.tar.bz2" |
| 9 | + URL_HASH "SHA256=dfb72762531170847af3e4a0f21d77d7b23cf36f67ce7ce9033659273677d80b" |
| 10 | + TOUCH "${_download_stamp}" |
| 11 | + ) |
| 12 | + |
| 13 | + therock_cmake_subproject_declare(therock-openmpi |
| 14 | + FPRINT_SOURCE_DIR "${_source_dir}" |
| 15 | + FPRINT_FILE_GLOBS "${CMAKE_CURRENT_LIST_DIR}/*" |
| 16 | + USE_DIST_AMDGPU_TARGETS |
| 17 | + BACKGROUND_BUILD |
| 18 | + NO_MERGE_COMPILE_COMMANDS |
| 19 | + EXCLUDE_FROM_ALL |
| 20 | + OUTPUT_ON_FAILURE |
| 21 | + EXTERNAL_SOURCE_DIR |
| 22 | + . |
| 23 | + CMAKE_ARGS |
| 24 | + "-DSOURCE_DIR=${_source_dir}" |
| 25 | + BINARY_DIR |
| 26 | + build |
| 27 | + EXTRA_DEPENDS |
| 28 | + "${_download_stamp}" |
| 29 | + ) |
| 30 | + |
| 31 | + therock_cmake_subproject_provide_package(therock-openmpi MPI lib/cmake/openmpi) |
| 32 | + |
| 33 | + therock_cmake_subproject_activate(therock-openmpi) |
| 34 | + |
| 35 | + therock_provide_artifact(openmpi |
| 36 | + TARGET_NEUTRAL |
| 37 | + DESCRIPTOR artifact-openmpi.toml |
| 38 | + COMPONENTS |
| 39 | + dev |
| 40 | + lib |
| 41 | + run |
| 42 | + SUBPROJECT_DEPS |
| 43 | + therock-openmpi |
| 44 | + ) |
| 45 | + return() |
| 46 | +endif() |
| 47 | + |
| 48 | +include(CMakePackageConfigHelpers) |
| 49 | + |
| 50 | +cmake_minimum_required(VERSION 3.25) |
| 51 | +project(OpenMPI_BUILD VERSION 5.0.9) |
| 52 | + |
| 53 | +set(MPI_STAGE_DIR "${CMAKE_CURRENT_BINARY_DIR}/install") |
| 54 | + |
| 55 | +include(ProcessorCount) |
| 56 | +ProcessorCount(PAR_JOBS) |
| 57 | +if(NOT PAR_JOBS OR PAR_JOBS EQUAL 0) |
| 58 | + set(PAR_JOBS 1) |
| 59 | +endif() |
| 60 | + |
| 61 | +add_custom_target( |
| 62 | + build ALL |
| 63 | + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" |
| 64 | + # release 5.0.9 uses autoconf 1.16.5, while the manylinux image uses 1.16.1, so we regenerate the autotools files due to incompatibility issues |
| 65 | + COMMAND |
| 66 | + ${CMAKE_COMMAND} -E chdir "${SOURCE_DIR}" perl autogen.pl --force |
| 67 | + COMMAND |
| 68 | + "${SOURCE_DIR}/configure" --prefix=${CMAKE_INSTALL_PREFIX} --disable-silent-rules --enable-mpi-fortran=no |
| 69 | + COMMAND |
| 70 | + make -j ${PAR_JOBS} |
| 71 | + COMMAND |
| 72 | + make install DESTDIR="${MPI_STAGE_DIR}" |
| 73 | + VERBATIM |
| 74 | +) |
| 75 | + |
| 76 | +install(DIRECTORY "${MPI_STAGE_DIR}${CMAKE_INSTALL_PREFIX}/" |
| 77 | + USE_SOURCE_PERMISSIONS |
| 78 | + DESTINATION . |
| 79 | +) |
| 80 | + |
| 81 | +configure_package_config_file( |
| 82 | + "${CMAKE_CURRENT_SOURCE_DIR}/mpi-config.cmake.in" |
| 83 | + "${CMAKE_CURRENT_BINARY_DIR}/mpi-config.cmake" |
| 84 | + INSTALL_DESTINATION lib/cmake/openmpi |
| 85 | + NO_CHECK_REQUIRED_COMPONENTS_MACRO |
| 86 | +) |
| 87 | + |
| 88 | +write_basic_package_version_file( |
| 89 | + "${CMAKE_CURRENT_BINARY_DIR}/mpi-version-config.cmake" |
| 90 | + VERSION "${PROJECT_VERSION}" |
| 91 | + COMPATIBILITY SameMajorVersion |
| 92 | +) |
| 93 | + |
| 94 | +install(FILES |
| 95 | + "${CMAKE_CURRENT_BINARY_DIR}/mpi-config.cmake" |
| 96 | + "${CMAKE_CURRENT_BINARY_DIR}/mpi-version-config.cmake" |
| 97 | + DESTINATION lib/cmake/openmpi |
| 98 | +) |
0 commit comments