# - Find the Hurricane includes and libraries.
# The following variables are set if Hurricane is found.  If HURRICANE is not
# found, HURRICANE_FOUND is set to false.
#  HURRICANE_FOUND        - True when the Hurricane include directory is found.
#  HURRICANE_INCLUDE_DIR - the path to where the Hurricane include files are.
#  HURRICANE_LIBRARIES - The path to where the Hurricane library files are.


SET(HURRICANE_INCLUDE_PATH_DESCRIPTION "The directory containing the Hurricane include files. E.g /usr/local/include or /asim/coriolis/include")
SET(HURRICANE_LIBRARY_PATH_DESCRIPTION "The directory containing the Hurricane library files. E.g /usr/local/lib or /asim/coriolis/lib")
SET(HURRICANE_DIR_MESSAGE              "Set the HURRICANE_INCLUDE_DIR cmake cache entry to the ${HURRICANE_INCLUDE_PATH_DESCRIPTION}")

# don't even bother under WIN32
IF(UNIX)

  SET(HURRICANE_DIR_SEARCH $ENV{HURRICANE_TOP})
  IF(HURRICANE_DIR_SEARCH)
    FILE(TO_CMAKE_PATH ${HURRICANE_DIR_SEARCH} HURRICANE_DIR_SEARCH)
  ENDIF(HURRICANE_DIR_SEARCH)

  #
  # Look for an installation.
  #
  FIND_PATH(HURRICANE_INCLUDE_PATH NAMES hurricane/Cell.h PATHS
    # Look in other places.
    ${HURRICANE_DIR_SEARCH}
    PATH_SUFFIXES include
    # Help the user find it if we cannot.
    DOC "${HURRICANE_INCLUDE_PATH_DESCRIPTION}"
  )

  FIND_LIBRARY(HURRICANE_LIBRARY_PATH
    NAMES hurricane
    PATHS ${HURRICANE_DIR_SEARCH}
    PATH_SUFFIXES lib
    # Help the user find it if we cannot.
    DOC "${HURRICANE_LIBRARY_PATH_DESCRIPTION}"
  )

  FIND_LIBRARY(HURRICANE_STATIC_LIBRARY_PATH
    NAMES hurricane-static
    PATHS ${HURRICANE_DIR_SEARCH}
    PATH_SUFFIXES lib
    # Help the user find it if we cannot.
    DOC "${HURRICANE_LIBRARY_PATH_DESCRIPTION}"
  )

  FIND_PATH(HURRICANE_GRAPHICAL_INCLUDE_PATH
    NAMES hurricane/viewer/CellViewer.h hurricane/viewer/HInspectorWidget.h
    PATHS ${HURRICANE_DIR_SEARCH}
    PATH_SUFFIXES include
    # Help the user find it if we cannot.
    DOC "${HURRICANE_LIBRARY_PATH_DESCRIPTION}"
  )

  FIND_LIBRARY(HURRICANE_GRAPHICAL_LIBRARY_PATH
    NAMES hviewer 
    PATHS ${HURRICANE_DIR_SEARCH}
    PATH_SUFFIXES lib
    # Help the user find it if we cannot.
    DOC "${HURRICANE_LIBRARY_PATH_DESCRIPTION}"
  )

  FIND_LIBRARY(HURRICANE_GRAPHICAL_STATIC_LIBRARY_PATH
    NAMES hviewer-static 
    PATHS ${HURRICANE_DIR_SEARCH}
    PATH_SUFFIXES lib
    # Help the user find it if we cannot.
    DOC "${HURRICANE_LIBRARY_PATH_DESCRIPTION}"
  )

  FIND_PATH(HURRICANE_PYTHON_INCLUDE_PATH
    NAMES hurricane/isobar/PyCell.h
    PATHS ${HURRICANE_DIR_SEARCH}
    PATH_SUFFIXES include
    # Help the user find it if we cannot.
    DOC "${HURRICANE_LIBRARY_PATH_DESCRIPTION}"
  )

  FIND_LIBRARY(HURRICANE_PYTHON_LIBRARY_PATH
    NAMES isobar 
    PATHS ${HURRICANE_DIR_SEARCH}
    PATH_SUFFIXES lib
    # Help the user find it if we cannot.
    DOC "${HURRICANE_LIBRARY_PATH_DESCRIPTION}"
  )

  # Assume we didn't find it.
  SET(HURRICANE_FOUND "NOTFOUND")
  SET(HURRICANE_STATIC_FOUND "NOTFOUND")
  SET(HURRICANE_GRAPHICAL_FOUND "NOTFOUND")
  SET(HURRICANE_GRAPHICAL_STATIC_FOUND "NOTFOUND")
  SET(HURRICANE_PYTHON_FOUND "NOTFOUND")

  IF(HURRICANE_INCLUDE_PATH)
  IF(HURRICANE_LIBRARY_PATH)
      SET(HURRICANE_FOUND "YES")
      SET(HURRICANE_INCLUDE_DIR
        ${HURRICANE_INCLUDE_PATH}
      )
      SET(HURRICANE_LIBRARIES
        ${HURRICANE_LIBRARY_PATH}
      )
  ENDIF(HURRICANE_LIBRARY_PATH)
  IF(HURRICANE_STATIC_LIBRARY_PATH)
      SET(HURRICANE_STATIC_FOUND "YES")
      SET(HURRICANE_INCLUDE_DIR
        ${HURRICANE_INCLUDE_PATH}
      )
      SET(HURRICANE_STATIC_LIBRARIES
        ${HURRICANE_STATIC_LIBRARY_PATH}
      )
  ENDIF(HURRICANE_STATIC_LIBRARY_PATH)
  ENDIF(HURRICANE_INCLUDE_PATH)

  IF(HURRICANE_GRAPHICAL_INCLUDE_PATH)
  IF(HURRICANE_GRAPHICAL_LIBRARY_PATH)
    SET(HURRICANE_GRAPHICAL_FOUND "YES")
    SET(HURRICANE_GRAPHICAL_INCLUDE_DIR
      ${HURRICANE_GRAPHICAL_INCLUDE_PATH}
    )
    SET(HURRICANE_GRAPHICAL_LIBRARIES
      ${HURRICANE_GRAPHICAL_LIBRARY_PATH}
    )
  ENDIF(HURRICANE_GRAPHICAL_LIBRARY_PATH)
  IF(HURRICANE_GRAPHICAL_STATIC_LIBRARY_PATH)
    SET(HURRICANE_GRAPHICAL_STATIC_FOUND "YES")
    SET(HURRICANE_GRAPHICAL_INCLUDE_DIR
      ${HURRICANE_GRAPHICAL_INCLUDE_PATH}
    )
    SET(HURRICANE_GRAPHICAL_STATIC_LIBRARIES
      ${HURRICANE_GRAPHICAL_STATIC_LIBRARY_PATH}
    )
  ENDIF(HURRICANE_GRAPHICAL_STATIC_LIBRARY_PATH)
  ENDIF(HURRICANE_GRAPHICAL_INCLUDE_PATH)

  IF(HURRICANE_PYTHON_INCLUDE_PATH)
  IF(HURRICANE_PYTHON_LIBRARY_PATH)
    SET(HURRICANE_PYTHON_FOUND "YES")
    SET(HURRICANE_PYTHON_INCLUDE_DIR
      ${HURRICANE_PYTHON_INCLUDE_PATH}
    )
    SET(HURRICANE_PYTHON_LIBRARIES
      ${HURRICANE_PYTHON_LIBRARY_PATH}
    )
  ENDIF(HURRICANE_PYTHON_LIBRARY_PATH)
  ENDIF(HURRICANE_PYTHON_INCLUDE_PATH)

  IF(HURRICANE_FOUND OR HURRICANE_STATIC_FOUND)
    IF(NOT HURRICANE_FIND_QUIETLY)
      MESSAGE(STATUS "Found HURRICANE : ${HURRICANE_LIBRARIES}")
    ENDIF(NOT HURRICANE_FIND_QUIETLY)
  ELSE(HURRICANE_FOUND OR HURRICANE_STATIC_FOUND)
    IF(HURRICANE_FIND_REQUIRED)
        MESSAGE(FATAL_ERROR "HURRICANE was not found. ${HURRICANE_DIR_MESSAGE}")
    ENDIF(HURRICANE_FIND_REQUIRED)
  ENDIF(HURRICANE_FOUND OR HURRICANE_STATIC_FOUND)

  MARK_AS_ADVANCED(
    HURRICANE_INCLUDE_PATH
    HURRICANE_LIBRARY_PATH
    HURRICANE_STATIC_LIBRARY_PATH
    HURRICANE_GRAPHICAL_INCLUDE_PATH
    HURRICANE_GRAPHICAL_LIBRARY_PATH
    HURRICANE_GRAPHICAL_STATIC_LIBRARY_PATH
    HURRICANE_PYTHON_INCLUDE_PATH
    HURRICANE_PYTHON_LIBRARY_PATH
  )

ENDIF(UNIX)