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
)
