if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) set(OPENMPI_VERSION "5.0.9") set(_source_dir "${CMAKE_CURRENT_BINARY_DIR}/source") set(_download_stamp "${_source_dir}/download.stamp") therock_subproject_fetch(therock-openmpi-sources SOURCE_DIR "${_source_dir}" # Originally mirrored from: "https://download.open-mpi.org/release/open-mpi/v5.0/openmpi-${OPENMPI_VERSION}.tar.bz2" URL "https://rocm-third-party-deps.s3.us-east-2.amazonaws.com/openmpi-${OPENMPI_VERSION}.tar.bz2" URL_HASH "SHA256=dfb72762531170847af3e4a0f21d77d7b23cf36f67ce7ce9033659273677d80b" TOUCH "${_download_stamp}" ) therock_cmake_subproject_declare(therock-openmpi FPRINT_SOURCE_DIR "${_source_dir}" FPRINT_FILE_GLOBS "${CMAKE_CURRENT_LIST_DIR}/*" USE_DIST_AMDGPU_TARGETS BACKGROUND_BUILD NO_MERGE_COMPILE_COMMANDS EXCLUDE_FROM_ALL OUTPUT_ON_FAILURE EXTERNAL_SOURCE_DIR . CMAKE_ARGS "-DSOURCE_DIR=${_source_dir}" "-DOPENMPI_VERSION=${OPENMPI_VERSION}" BINARY_DIR build EXTRA_DEPENDS "${_download_stamp}" ) therock_cmake_subproject_provide_package(therock-openmpi MPI lib/cmake/openmpi) therock_cmake_subproject_activate(therock-openmpi) therock_provide_artifact(openmpi TARGET_NEUTRAL DESCRIPTOR artifact-openmpi.toml COMPONENTS dev lib run SUBPROJECT_DEPS therock-openmpi ) return() endif() include(CMakePackageConfigHelpers) cmake_minimum_required(VERSION 3.25) project(OpenMPI_BUILD VERSION ${OPENMPI_VERSION}) set(MPI_STAGE_DIR "${CMAKE_CURRENT_BINARY_DIR}/install") include(ProcessorCount) ProcessorCount(PAR_JOBS) if(NOT PAR_JOBS OR PAR_JOBS EQUAL 0) set(PAR_JOBS 1) endif() add_custom_target( build ALL WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" # 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 COMMAND ${CMAKE_COMMAND} -E chdir "${SOURCE_DIR}" perl autogen.pl --force COMMAND "${SOURCE_DIR}/configure" --prefix=${CMAKE_INSTALL_PREFIX} --libdir=${CMAKE_INSTALL_PREFIX}/lib --disable-silent-rules --enable-mpi-fortran=no COMMAND make -j ${PAR_JOBS} COMMAND make install DESTDIR="${MPI_STAGE_DIR}" VERBATIM ) install(DIRECTORY "${MPI_STAGE_DIR}${CMAKE_INSTALL_PREFIX}/" USE_SOURCE_PERMISSIONS DESTINATION . ) configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/mpi-config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/mpi-config.cmake" INSTALL_DESTINATION lib/cmake/openmpi NO_CHECK_REQUIRED_COMPONENTS_MACRO ) write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/mpi-config-version.cmake" VERSION "${PROJECT_VERSION}" COMPATIBILITY SameMajorVersion ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/mpi-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/mpi-config-version.cmake" DESTINATION lib/cmake/openmpi )