# -*- mode: cmake -*-

set(EXTERNAL_SOURCE_DIR ${PROJECT_SOURCE_DIR}/external)
set(EXTERNAL_BUILD_DIR ${PROJECT_BINARY_DIR}/external/build)

include(ExternalProject)

set(HAVE_ARMCI FALSE)

if (DEFINED ARMCI)
  set(ARMCI_PREFIX ${ARMCI})
  find_package(ARMCI)
  if (NOT ARMCI_FOUND)
    message(FATAL_ERROR "ARMCI not found in ${ARMCI_PREFIX}")
  endif()
endif()

if (NOT HAVE_ARMCI)

  if (NOT HAVE_MPI)
    message(WARNING "MPI not found:  ARMCI will not be built")
  else()

    set(ARMCI_PREFIX ${EXTERNAL_BUILD_DIR}/armci)
    set(ARMCI_URL ${EXTERNAL_SOURCE_DIR}/armci.tar.gz)
    set(ARMCI_URL_HASH MD5=c59ac34c54dfff59aab3f3d19244071d)
    
    # set(ARMCI_URL http://www.hdfgroup.org/ftp/ARMCI/current/src/armci-1.8.10-patch1.tar.gz)
    # set(ARMCI_URL_HASH MD5=2147a289fb33c887464ad2b6c5a8ae4c)

    message("** Will build ARMCI from ${ARMCI_URL}")    

    set(ARMCI_CPPFLAGS "")
    if (MPI_INCLUDE_PATH)
      set(ARMCI_CPPFLAGS "-I${MPI_INCLUDE_PATH}")
    endif()

    set(ARMCI_MPICC "")
    if(MPI_C_COMPILER)
      set(ARMCI_MPICC "${MPI_C_COMPILER}")
    endif()

    ExternalProject_Add(
      armci
      PREFIX ${EXTERNAL_BUILD_DIR}/armci
      URL ${ARMCI_URL}
      URL_HASH ${ARMCI_URL_HASH}
      BUILD_IN_SOURCE 1
      CONFIGURE_COMMAND ./configure --prefix=${ARMCI_PREFIX}
        CC=${CMAKE_C_COMPILER} CFLAGS=-g
        CPPFLAGS=${ARMCI_CPPFLAGS}
        MPICC=${ARMCI_MPICC}
      BUILD_COMMAND make
      INSTALL_COMMAND make install
      )

    add_dependencies(External armci)
    set(HAVE_ARMCI TRUE)
    set(ARMCI_INCLUDE_DIRS ${ARMCI_PREFIX}/include)
    set(ARMCI_LIBRARIES ${ARMCI_PREFIX}/lib/libarmci.a)

  endif()

endif()

if (HAVE_ARMCI)
  include_directories(${ARMCI_INCLUDE_DIRS})
endif()
