cmake_minimum_required (VERSION 2.8.10)
PROJECT (HDFEOS5 C CXX)

#-----------------------------------------------------------------------------
# Instructions for use : Normal Build
#
# For standard build of HDFEOS5 libraries,tests and tools. 
# Run cmake using the HDFEOS5 source tree to generate a build tree.
# Enable/Disable options according to requirements and
# set CMAKE_INSTALL_PREFIX to the required install path.
# Make install can be used to install all components for system-wide use.
#
#-----------------------------------------------------------------------------
# Instructions for use : Sub-Project Build
#
# To include HDFEOS5 as a sub-project within another project. 
# Set HDFEOS5_EXTERNALLY_CONFIGURED to 1 in the parent project and
# supply values for the following variables...
#
# HDFEOS_EXPORTED_TARGETS :
#   Set this to the name of the targets variable which controls exports
#   If unset (because parent project does not support/use the 
#   INSTALL (EXPORT target...) syntax), then targets are not configured 
#   for export during install.
#
# HDFEOS5_LIB_DEPENDENCIES :
#   If the build of HDFEOS5 libs is being customized, then rules for the
#   dependencies of the HDFEOS5 libs may be 'incomplete', add additional
#   dependencies to this variable so that external projects pick them up
#
# HDFEOS5_EXTERNAL_LIB_PREFIX :
#   If the pa5rent project needs to install hdf libraries, but avoid 
#   name conflicts with system versions, then a prefix may be added
#   to ensure that the correct versions configured are used.
#
# Consider this example, it builds its own zlib
# library and tells HDFEOS5 to add it as a dependency - this ensures that
# any project making use of this build of HDFEOS5 will use the correct zlib
#
#   # Tell HDFEOS5 that we are manually overriding certain settings
#   SET (HDFEOS5_EXTERNALLY_CONFIGURED 1)
#   # Avoid duplicating names of installed libraries
#   SET (HDFEOS5_EXTERNAL_LIB_PREFIX "prj")
#   # Targets linking to the HDFEOS5 libs need to know their names
#   # if they are changed in the sub project, they should be here too
#   SET (HDFEOS5_LIB_NAME "prjHDFEOS5")
#   SET (HDFEOS5_MF_LIB_NAME "prjHDFEOS5_mf")
#   SET (HDFEOS5_LIBRARY "${HDFEOS5_LIB_NAME};${HDFEOS5_MF_LIB_NAME}")
#   # Export configuration to this export variable
#   SET (HDFEOS_EXPORTED_TARGETS "project-targets")
#
#   # Setup all necessary overrides for zlib so that HDFEOS5 uses our
#   # internally compiled zlib rather than any other version
#   IF (HDF_ENABLE_Z_LIB_SUPPORT)
#    # We must tell the main HDFEOS library that it depends on our zlib 
#     SET (HDFEOS5_LIB_DEPENDENCIES prjzlib)    
#     # Override the zlib header file
#     IF (PRJ_USE_SYSTEM_ZLIB)
#       SET (HEOS_ZLIB_HEADER "zlib.h")
#     ELSE (PRJ_USE_SYSTEM_ZLIB)
#      SET (HEOS_ZLIB_HEADER "prj_zlib.h")
#       # Set vars that FindZlib would have set if used in sub project
#       SET (ZLIB_INCLUDE_DIRS "${PRJ_ZLIB_INCLUDE_DIRS}")
#       SET (ZLIB_LIBRARIES prjzlib)
#     ENDIF (PRJ_USE_SYSTEM_ZLIB)
#  ENDIF (HDF_ENABLE_Z_LIB_SUPPORT)
#   
#   # Add the sub project
#   ADD_SUBDIRECTORY (Utilities/HDFEOS-1.2)
#   # Add the HDFEOS dirs to our include path
#   SET (HDFEOS5_INCLUDE_DIR 
#       ${PROJECT_SOURCE_DIR}/Utilities/HDFEOS-1.2/src
#       ${PROJECT_BINARY_DIR}/Utilities/HDFEOS-1.2
#   )
#
#-----------------------------------------------------------------------------

#-----------------------------------------------------------------------------
# Allow Visual Studio solution directories
#-----------------------------------------------------------------------------
# Provide a way for Visual Studio Express users to turn OFF the new FOLDER
# organization feature. Default to ON for non-Express users. Express users must
# explicitly turn off this option to build HDFEOS in the Express IDE...
#
OPTION (HDFEOS5_USE_FOLDERS "Enable folder grouping of projects in IDEs." ON)
MARK_AS_ADVANCED (HDFEOS5_USE_FOLDERS)
IF (HDFEOS5_USE_FOLDERS)
  SET_PROPERTY (GLOBAL PROPERTY USE_FOLDERS ON)
ENDIF (HDFEOS5_USE_FOLDERS)
OPTION (HDFEOS5_NO_PACKAGES "CPACK - Disable packaging" OFF)
MARK_AS_ADVANCED (HDFEOS5_NO_PACKAGES)

#-----------------------------------------------------------------------------
# Set the core names of all the libraries
#-----------------------------------------------------------------------------
SET (HDFEOS_GCTP_SRC_LIB_CORENAME     "Gctp")
SET (HDFEOS_SRC_LIB_CORENAME          "he5_hdfeos")

#-----------------------------------------------------------------------------
# Set the true names of all the libraries if customized by external project
#-----------------------------------------------------------------------------
SET (HDFEOS_GCTP_SRC_LIB_NAME     "${HDFEOS5_EXTERNAL_LIB_PREFIX}${HDFEOS_GCTP_SRC_LIB_CORENAME}")
SET (HDFEOS_SRC_LIB_NAME          "${HDFEOS5_EXTERNAL_LIB_PREFIX}${HDFEOS_SRC_LIB_CORENAME}")

#-----------------------------------------------------------------------------
# Set the target names of all the libraries
#-----------------------------------------------------------------------------
SET (HDFEOS_GCTP_SRC_LIB_TARGET     ${HDFEOS_GCTP_SRC_LIB_NAME})
SET (HDFEOS_SRC_LIB_TARGET          ${HDFEOS_SRC_LIB_NAME})

#-----------------------------------------------------------------------------
# Define some CMake variables for use later in the project
#-----------------------------------------------------------------------------
SET (EOS_RESOURCES_DIR          ${HDFEOS5_SOURCE_DIR}/config/cmake)
SET (HDFEOS_GCTP_SRC_DIR        ${HDFEOS5_SOURCE_DIR}/gctp/src)
SET (HDFEOS_GCTP_INC_DIR        ${HDFEOS5_SOURCE_DIR}/gctp/include)
SET (HDFEOS_SRC_DIR             ${HDFEOS5_SOURCE_DIR}/src)
SET (HDFEOS_INC_DIR             ${HDFEOS5_SOURCE_DIR}/include)
SET (HDFEOS_SAMPLES_SRC_DIR     ${HDFEOS5_SOURCE_DIR}/samples)

IF (NOT HDFEOS_INSTALL_BIN_DIR)
  SET (HDFEOS_INSTALL_BIN_DIR bin)
ENDIF (NOT HDFEOS_INSTALL_BIN_DIR)
IF (NOT HDFEOS_INSTALL_LIB_DIR)
  SET (HDFEOS_INSTALL_LIB_DIR lib)
ENDIF (NOT HDFEOS_INSTALL_LIB_DIR)
IF (NOT HDFEOS_INSTALL_INCLUDE_DIR)
  SET (HDFEOS_INSTALL_INCLUDE_DIR include)
ENDIF (NOT HDFEOS_INSTALL_INCLUDE_DIR)
IF (NOT HDFEOS_INSTALL_DATA_DIR)
  IF (NOT WIN32)
    SET (HDFEOS_INSTALL_DATA_DIR share)
    SET (HDFEOS_INSTALL_CMAKE_DIR share/cmake)
  ELSE (NOT WIN32)
    SET (HDFEOS_INSTALL_DATA_DIR ".")
    SET (HDFEOS_INSTALL_CMAKE_DIR cmake)
  ENDIF (NOT WIN32)
ENDIF (NOT HDFEOS_INSTALL_DATA_DIR)

#-----------------------------------------------------------------------------
# parse the full version number
#-----------------------------------------------------------------------------
FILE (READ ${HDFEOS_INC_DIR}/HE5_HdfEosDef.h _he5_hdfeosdef_h_contents)
STRING (REGEX REPLACE ".*#define[ \t]+HE5_HDFEOSVERSION[ \t]+\"([0-9]*.[0-9]*)\".*"
    "\\1" HDFEOS5_FULL_VERSION ${_he5_hdfeosdef_h_contents})
STRING (REGEX REPLACE ".*#define[ \t]+HE5_HDFEOSVERSION[ \t]+\"([0-9]*).*$"
    "\\1" HDFEOS5_VERS_MAJOR ${_he5_hdfeosdef_h_contents})
STRING (REGEX REPLACE ".*#define[ \t]+HE5_HDFEOSVERSION[ \t]+\"[0-9]*.([0-9]*).*$"
    "\\1" HDFEOS5_VERS_MINOR ${_he5_hdfeosdef_h_contents})
STRING (REGEX REPLACE ".*#define[ \t]+HE5_HDFEOSVERSION[ \t]+\"[0-9]*.[0-9]*.([0-9]*)\".*$"
    "\\1" HDFEOS5_VERS_RELEASE ${_he5_hdfeosdef_h_contents})
MESSAGE (STATUS "VERSION: ${HDFEOS5_VERSION}")
#SET (HDFEOS5_VERS_MAJOR 1)
#SET (HDFEOS5_VERS_MINOR 0)
#SET (HDFEOS5_VERS_RELEASE 0)
#MESSAGE (STATUS "VERSION: ${HDFEOS5_VERSION}")

#-----------------------------------------------------------------------------
# Basic HDFEOS stuff here
#-----------------------------------------------------------------------------
SET (HDFEOS5_PACKAGE "hdf-eos5")
SET (HDFEOS5_PACKAGE_NAME "hdf-eos5")
SET (HDFEOS5_PACKAGE_VERSION "${HDFEOS5_VERS_MAJOR}.${HDFEOS5_VERS_MINOR}.${HDFEOS5_VERS_RELEASE}")
SET (HDFEOS5_PACKAGE_VERSION_MAJOR "${HDFEOS5_VERS_MAJOR}.${HDFEOS5_VERS_MINOR}")
SET (HDFEOS5_PACKAGE_VERSION_MINOR "${HDFEOS5_VERS_RELEASE}")
SET (HDFEOS5_PACKAGE_STRING "${HDFEOS5_PACKAGE_NAME} ${HDFEOS5_PACKAGE_VERSION}")
SET (HDFEOS5_PACKAGE_TARNAME "hdf-eos5")
SET (HDFEOS5_PACKAGE_URL "http://www.hdfgroup.org")
SET (HDFEOS5_PACKAGE_BUGREPORT "help@hdfgroup.org")

#-----------------------------------------------------------------------------
# Include some macros for reusable code
#-----------------------------------------------------------------------------
INCLUDE (${EOS_RESOURCES_DIR}/EOSMacros.cmake)
INCLUDE (${EOS_RESOURCES_DIR}/HDFEOSMacros.cmake)
INCLUDE (${EOS_RESOURCES_DIR}/HDF5Macros.cmake)

#-----------------------------------------------------------------------------
# Setup output Directories
#-----------------------------------------------------------------------------
IF (NOT HDFEOS5_EXTERNALLY_CONFIGURED)
  SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY
      ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all Executables."
  )
  SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY
      ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all Libraries"
  )
  SET (CMAKE_ARCHIVE_OUTPUT_DIRECTORY
      ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all static libraries."
  )
ELSE (NOT HDFEOS5_EXTERNALLY_CONFIGURED)
  # if we are externally configured, but the project uses old cmake scripts
  # this may not be set and utilities like Hdetect will fail
  IF (NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY)
    SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
  ENDIF (NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY)
ENDIF (NOT HDFEOS5_EXTERNALLY_CONFIGURED)

#-----------------------------------------------------------------------------
# Targets built within this project are exported at Install time for use
# by other projects using FindEOS5.
#-----------------------------------------------------------------------------
IF (NOT HDFEOS_EXPORTED_TARGETS)
  SET (HDFEOS_EXPORTED_TARGETS "hdfeos5-targets")
ENDIF (NOT HDFEOS_EXPORTED_TARGETS)

#-----------------------------------------------------------------------------
# To include a library in the list exported by the project AT BUILD TIME,
# add it to this variable. This is NOT used by Make Install, but for projects
# which include HDFEOS as a sub-project within their build tree
#-----------------------------------------------------------------------------
SET_GLOBAL_VARIABLE (HDFEOS_LIBRARIES_TO_EXPORT "")
SET_GLOBAL_VARIABLE (HDFEOS_APPS_TO_EXPORT "")
SET (EXTERNAL_HEADER_LIST "")
SET (EXTERNAL_LIBRARY_LIST "")
SET (EXTERNAL_LIBRARYDLL_LIST "")

#-----------------------------------------------------------------------------
# Run all the CMake configuration tests for our build environment
#-----------------------------------------------------------------------------
INCLUDE (${EOS_RESOURCES_DIR}/ConfigureChecks.cmake)

#-----------------------------------------------------------------------------
# Option to use legacy naming for windows libs/programs, default is legacy
#-----------------------------------------------------------------------------
IF (WIN32 AND NOT CYGWIN)
  OPTION (HDFEOS5_LEGACY_NAMING "Use Legacy Names for Libraries and Programs" ON)
ENDIF (WIN32 AND NOT CYGWIN)

#-----------------------------------------------------------------------------
# Option to Build Shared/Static libs, default is static
#-----------------------------------------------------------------------------
OPTION (BUILD_SHARED_LIBS "Build Shared Libraries" OFF)
SET (LIB_TYPE STATIC)
IF (BUILD_SHARED_LIBS)
  SET (LIB_TYPE SHARED)
  SET (HDFEOS5_BUILT_AS_DYNAMIC_LIB 1)
  ADD_DEFINITIONS (-DHDFEOS5_BUILT_AS_DYNAMIC_LIB)
  ADD_DEFINITIONS (-DH5_BUILT_AS_DYNAMIC_LIB)
ELSE (BUILD_SHARED_LIBS)
  SET (HDFEOS5_BUILT_AS_STATIC_LIB 1)
  ADD_DEFINITIONS (-DHDFEOS5_BUILT_AS_STATIC_LIB)
  ADD_DEFINITIONS (-DH5_BUILT_AS_STATIC_LIB)
  IF (NOT WIN32)
    # should this be a user setting : Everyone uses it anyway ?
    ADD_DEFINITIONS (-DPIC)
  ENDIF (NOT WIN32)
ENDIF (BUILD_SHARED_LIBS)

IF (NOT USE_SHARED_LIBS)
  SET (HDFEOS5_USE_STATIC_LIBRARIES 1)
ENDIF (NOT USE_SHARED_LIBS)

ADD_DEFINITIONS (-DBIG_LONGS -DSWAP)
ADD_DEFINITIONS (-DHAVE_CONFIG_H)
IF (MSVC)
  ADD_DEFINITIONS (-DVISUAL_CPLUSPLUS)
ENDIF (MSVC)
IF (EOS_HAVE_F2CFORTRAN_MACRO)
  ADD_DEFINITIONS (-Df2cFortran)
ENDIF (EOS_HAVE_F2CFORTRAN_MACRO)

#-----------------------------------------------------------------------------
# Option to use code coverage
#-----------------------------------------------------------------------------
OPTION (HDF_ENABLE_COVERAGE "Enable code coverage for Libraries and Programs" OFF)
IF (HDF_ENABLE_COVERAGE)
    SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
    SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
    SET (LDFLAGS "${LDFLAGS} -fprofile-arcs -ftest-coverage")   
ENDIF (HDF_ENABLE_COVERAGE)

#-----------------------------------------------------------------------------
# Include the main src and config directories
#-----------------------------------------------------------------------------
SET (HDFEOS_INCLUDE_DIRECTORIES
    ${HDFEOS_GCTP_INC_DIR} 
    ${HDFEOS_INC_DIR} 
    ${HDFEOS5_BINARY_DIR}
    ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
)
INCLUDE_DIRECTORIES (${HDFEOS_INCLUDE_DIRECTORIES} )

#-----------------------------------------------------------------------------
# When building utility executables that generate other (source) files :
# we make use of the following variables defined in the root CMakeLists.
# Certain systems may add /Debug or /Release to output paths
# and we need to call the executable from inside the CMake configuration
#-----------------------------------------------------------------------------
SET (EXE_EXT "")
IF (WIN32)
  SET (EXE_EXT ".exe")
  IF (NOT CYGWIN)
    ADD_DEFINITIONS (-DBIND_TO_CURRENT_VCLIBS_VERSION=1)
    ADD_DEFINITIONS (-D_CRT_SECURE_NO_WARNINGS)
    ADD_DEFINITIONS (-D_CONSOLE)
  ENDIF (NOT CYGWIN)
ENDIF (WIN32)

IF (MSVC)
  SET (CMAKE_MFC_FLAG 0)
ENDIF (MSVC)

SET (MAKE_SYSTEM)
IF (CMAKE_BUILD_TOOL MATCHES "make")
  SET (MAKE_SYSTEM 1)
ENDIF (CMAKE_BUILD_TOOL MATCHES "make")

SET (CFG_INIT "/${CMAKE_CFG_INTDIR}")
IF (MAKE_SYSTEM)
  SET (CFG_INIT "")
ENDIF (MAKE_SYSTEM)

#-----------------------------------------------------------------------------
# Add some definitions for Debug Builds
#-----------------------------------------------------------------------------
IF (CMAKE_BUILD_TYPE MATCHES Debug)
  #-- NMake Makefiles will overwhelm the console with warnings if -Wall is used.
  IF (NOT WIN32)
    ADD_DEFINITIONS (-Wall)
  ENDIF (NOT WIN32)
ENDIF (CMAKE_BUILD_TYPE MATCHES Debug)

#-----------------------------------------------------------------------------
# Compiler specific flags : Shouldn't there be compiler tests for these
#-----------------------------------------------------------------------------
IF (CMAKE_COMPILER_IS_GNUCC)
  IF (CMAKE_BUILD_TYPE MATCHES Debug)
    SET (CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS} -std=c99 -finline-functions -fno-common")
  ELSE (CMAKE_BUILD_TYPE MATCHES Debug)
    SET (CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS} -std=c99 -fomit-frame-pointer -finline-functions -fno-common")
  ENDIF (CMAKE_BUILD_TYPE MATCHES Debug)
ENDIF (CMAKE_COMPILER_IS_GNUCC)
IF (CMAKE_COMPILER_IS_GNUCXX)
  IF (CMAKE_BUILD_TYPE MATCHES Debug)
    SET (CMAKE_CXX_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_CXX_FLAGS} -finline-functions -fno-common")
  ELSE (CMAKE_BUILD_TYPE MATCHES Debug)
    SET (CMAKE_CXX_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_CXX_FLAGS} -fomit-frame-pointer -finline-functions -fno-common")
  ENDIF (CMAKE_BUILD_TYPE MATCHES Debug)
ENDIF (CMAKE_COMPILER_IS_GNUCXX)

#-----------------------------------------------------------------------------
# Option to use 1.6.x API
#-----------------------------------------------------------------------------
OPTION (USE_HDF5_16_API_DEFAULT "Use the HDF5 1.6.x API by default" ON)
SET (H5_USE_16_API_DEFAULT 0)
IF (USE_HDF5_16_API_DEFAULT)
  SET (H5_USE_16_API_DEFAULT 1)
ENDIF (USE_HDF5_16_API_DEFAULT)

#-----------------------------------------------------------------------------
# Option to allow the user to disable compiler warnings
#-----------------------------------------------------------------------------
OPTION (HDFEOS5_DISABLE_COMPILER_WARNINGS "Disable compiler warnings" OFF)
IF (HDFEOS5_DISABLE_COMPILER_WARNINGS)
  # MSVC uses /w to suppress warnings.  It also complains if another
  # warning level is given, so remove it.
  IF (MSVC)
    SET (HDFEOS5_WARNINGS_BLOCKED 1)
    STRING (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
    SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /w")
    STRING (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
    SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /w")
  ENDIF (MSVC)
  IF (WIN32 AND NOT CYGWIN)
    ADD_DEFINITIONS (-D_CRT_SECURE_NO_WARNINGS)
  ENDIF (WIN32 AND NOT CYGWIN)
  # Borland uses -w- to suppress warnings.
  IF (BORLAND)
    SET (HDFEOS5_WARNINGS_BLOCKED 1)
    SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w-")
  ENDIF (BORLAND)

  # Most compilers use -w to suppress warnings.
  IF (NOT HDFEOS5_WARNINGS_BLOCKED)
    SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w")
    SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
  ENDIF (NOT HDFEOS5_WARNINGS_BLOCKED)
ENDIF (HDFEOS5_DISABLE_COMPILER_WARNINGS)

#-----------------------------------------------------------------------------
# This is in here to help some of the GCC based IDES like Eclipse
# and code blocks parse the compiler errors and warnings better.
#-----------------------------------------------------------------------------
IF (CMAKE_COMPILER_IS_GNUCC)
  SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fmessage-length=0")
ENDIF (CMAKE_COMPILER_IS_GNUCC)
IF (CMAKE_COMPILER_IS_GNUCXX)
  SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmessage-length=0")
ENDIF (CMAKE_COMPILER_IS_GNUCXX)

#-----------------------------------------------------------------------------
# Option to Enable MPI Parallel
#-----------------------------------------------------------------------------
SET (CMAKE_MODULE_PATH ${EOS_RESOURCES_DIR} ${CMAKE_MODULE_PATH})
OPTION (HDFEOS5_ENABLE_PARALLEL "Enable parallel build (requires MPI)" OFF)
IF (HDFEOS5_ENABLE_PARALLEL)
  INCLUDE (FindMPI)
  INCLUDE_DIRECTORIES (${MPI_C_INCLUDE_PATH})
  IF (MPI_C_FOUND)
    SET (HDFEOS5_HAVE_PARALLEL 1)
    # MPI checks, only do these if MPI_C_FOUND is true, otherwise they always fail
    # and once set, they are cached as false and not regenerated
    SET (CMAKE_REQUIRED_LIBRARIES "${MPI_C_LIBRARIES}" )
    CHECK_FUNCTION_EXISTS (MPI_File_get_size HDFEOS5_HAVE_MPI_GET_SIZE) 
    # Used by Fortran + MPI
    CHECK_SYMBOL_EXISTS (MPI_Comm_c2f "${MPI_C_INCLUDE_PATH}/mpi.h"  HDFEOS5_HAVE_MPI_MULTI_LANG_Comm)
    CHECK_SYMBOL_EXISTS (MPI_Info_c2f "${MPI_C_INCLUDE_PATH}/mpi.h"  HDFEOS5_HAVE_MPI_MULTI_LANG_Info)
  ENDIF (MPI_C_FOUND)
ENDIF (HDFEOS5_ENABLE_PARALLEL)

# Parallel IO usage requires MPI to be Linked and Included
IF (HDFEOS5_HAVE_PARALLEL)
  SET (LINK_LIBS ${LINK_LIBS} ${MPI_C_LIBRARIES})
  IF (MPI_C_LINK_FLAGS)
    SET (CMAKE_EXE_LINKER_FLAGS ${MPI_C_LINK_FLAGS} ${CMAKE_EXE_LINKER_FLAGS})
  ENDIF (MPI_C_LINK_FLAGS)
ENDIF (HDFEOS5_HAVE_PARALLEL)

INCLUDE (ExternalProject)
OPTION (HDFEOS5_ALLOW_EXTERNAL_SUPPORT "Allow External Library Building" "NO")
OPTION (ZLIB_USE_EXTERNAL "Use External Library Building for ZLIB" 0)
OPTION (SZIP_USE_EXTERNAL "Use External Library Building for SZIP" 0)
OPTION (HDF5_USE_EXTERNAL "Use External Library Building for HDF5" 0)
IF (HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
  SET (ZLIB_USE_EXTERNAL 1)
  SET (SZIP_USE_EXTERNAL 1)
  SET (HDF5_USE_EXTERNAL 1)
  IF (HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN")
    SET (ZLIB_URL ${ZLIB_SVN_URL})
    SET (SZIP_URL ${SZIP_SVN_URL})
    SET (HDF5_URL ${HDF5_SVN_URL})
  ELSEIF (HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
    IF (NOT TGZ_PATH)
      SET (TGZ_PATH ${HDFEOS5_SOURCE_DIR})
    ENDIF (NOT TGZ_PATH)
    SET (ZLIB_URL ${TGZ_PATH}/${ZLIB_TGZ_NAME})
    SET (SZIP_URL ${TGZ_PATH}/${SZIP_TGZ_NAME})
    SET (HDF5_URL ${TGZ_PATH}/${HDF5_TGZ_NAME})
  ENDIF (HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN")
ENDIF (HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")

#-----------------------------------------------------------------------------
# Option for ZLib support
#-----------------------------------------------------------------------------
OPTION (HDFEOS5_ENABLE_Z_LIB_SUPPORT "Enable Zlib Filters" ON)

#-----------------------------------------------------------------------------
# Option for SzLib support
#-----------------------------------------------------------------------------
OPTION (HDFEOS5_ENABLE_SZIP_SUPPORT "Use SZip Filter" OFF)
IF (HDFEOS5_ENABLE_SZIP_SUPPORT)
  OPTION (HDFEOS5_ENABLE_SZIP_ENCODING "Use SZip Encoding" OFF)
ENDIF (HDFEOS5_ENABLE_SZIP_SUPPORT)

#-----------------------------------------------------------------------------
# HDF5 support
#-----------------------------------------------------------------------------
IF (NOT BUILD_SHARED_LIBS)
  SET (HDF5_USE_STATIC_LIBRARIES 1)
ENDIF (NOT BUILD_SHARED_LIBS)
IF (NOT HEOS_HDF5_HEADER)
  IF (NOT HDF5_USE_EXTERNAL)
    FIND_PACKAGE (HDF5 NAMES ${HDF5_PACKAGE_NAME}${HDFEOS5_PACKAGE_EXT})
    IF (NOT HDF5_FOUND)
      FIND_PACKAGE (HDF5) # Legacy find
    ENDIF (NOT HDF5_FOUND)
  ENDIF (NOT HDF5_USE_EXTERNAL)
  IF (HDF5_FOUND)
    MESSAGE (STATUS "HDF5 found: INC=${HDF5_INCLUDE_DIR} TOOLS=${HDF5_TOOLS_DIR}")
    IF ((NOT USE_SHARED_LIBS AND HDF5_BUILD_SHARED_LIBS) OR (USE_SHARED_LIBS AND NOT HDF5_BUILD_SHARED_LIBS))
      MESSAGE (STATUS "HDF5 build type does match requested type")
    ENDIF ((NOT USE_SHARED_LIBS AND HDF5_BUILD_SHARED_LIBS) OR (USE_SHARED_LIBS AND NOT HDF5_BUILD_SHARED_LIBS))
    IF (HDF5_BUILD_SHARED_LIBS)
      ADD_DEFINITIONS (-DH5_BUILT_AS_DYNAMIC_LIB)
    ELSE (HDF5_BUILD_SHARED_LIBS)
      ADD_DEFINITIONS (-DH5_BUILT_AS_STATIC_LIB)
    ENDIF (HDF5_BUILD_SHARED_LIBS)
    SET (HEOS_HAVE_H5PUBCONF_H 1)
    SET (HEOS_HAVE_HDF5 1)
    SET (HEOS_HDF5_HEADER "h5pubconf.h")
    SET (HDF5_INCLUDE_DIR_GEN ${HDF5_INCLUDE_DIR})
    SET (HDF5_INCLUDE_DIRS ${HDF5_INCLUDE_DIR})
  ELSE (HDF5_FOUND)
    IF (HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
      EXTERNAL_HDF5_LIBRARY (${HDFEOS5_ALLOW_EXTERNAL_SUPPORT} ${LIB_TYPE})
      SET (HEOS_HAVE_H5PUBCONF_H 1)
      SET (HEOS_HAVE_HDF5 1)
      SET (HEOS_HDF5_HEADER "h5pubconf.h")
      MESSAGE (STATUS "HDF5 is built")
      IF (BUILD_SHARED_LIBS)
        ADD_DEFINITIONS (-DH5_BUILT_AS_DYNAMIC_LIB)
      ELSE (BUILD_SHARED_LIBS)
        ADD_DEFINITIONS (-DH5_BUILT_AS_STATIC_LIB)
      ENDIF (BUILD_SHARED_LIBS)
    ELSE (HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
      MESSAGE (FATAL_ERROR " HDF5 is Required for  HDFEOS")
    ENDIF (HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
  ENDIF (HDF5_FOUND)
ELSE (NOT HEOS_HDF5_HEADER)
  # This project is being called from within another and HDF5 is already configured
  SET (HEOS_HAVE_H5PUBCONF_H 1)
  SET (HEOS_HAVE_HDF5 1)
ENDIF (NOT HEOS_HDF5_HEADER)
IF (NOT TARGET "h5diff")
  ADD_EXECUTABLE (h5diff IMPORTED)
  IF (USE_SHARED_LIBS AND WIN32)
    SET_PROPERTY (TARGET h5diff PROPERTY IMPORTED_LOCATION "${HDF5_TOOLS_DIR}/h5diffdll")
  ELSE (USE_SHARED_LIBS AND WIN32)
    SET_PROPERTY (TARGET h5diff PROPERTY IMPORTED_LOCATION "${HDF5_TOOLS_DIR}/h5diff")
  ENDIF (USE_SHARED_LIBS AND WIN32)
  SET (HDF5_DIFF_EXECUTABLE $<TARGET_FILE:h5diff>)
ENDIF (NOT TARGET "h5diff")
SET (LINK_LIBS ${LINK_LIBS} ${HDF5_LIBRARIES})
INCLUDE_DIRECTORIES (${HDF5_INCLUDE_DIRS})

#-----------------------------------------------------------------------------
# Option for external libraries
#-----------------------------------------------------------------------------
OPTION (HDFEOS5_PACKAGE_EXTLIBS "CPACK - include external libraries" OFF)
IF (HDFEOS5_PACKAGE_EXTLIBS)
  IF (HDF5_FOUND)
    PACKAGE_HDF5_LIBRARY (${HDFEOS5_ALLOW_EXTERNAL_SUPPORT})
  ENDIF (HDF5_FOUND)
ENDIF (HDFEOS5_PACKAGE_EXTLIBS)

#-----------------------------------------------------------------------------
# Build utility to copy and strip X lines of file
#-----------------------------------------------------------------------------
IF (BUILD_TESTING)
  SET (XLATE_UTILITY "xlatefile")
  ADD_EXECUTABLE(${XLATE_UTILITY} ${EOS_RESOURCES_DIR}/xlatefile.c)
ENDIF (BUILD_TESTING)

#-----------------------------------------------------------------------------
# Dashboard and Testing Settings
#-----------------------------------------------------------------------------
OPTION (BUILD_TESTING "Build HDFEOS Unit Testing" OFF)
IF (BUILD_TESTING)
  SET (DART_TESTING_TIMEOUT 1200
      CACHE INTEGER
      "Timeout in seconds for each test (default 1200=20minutes)"
  )
  ENABLE_TESTING ()
  INCLUDE (CTest)
  INCLUDE (${HDFEOS5_SOURCE_DIR}/CTestConfig.cmake)
  CONFIGURE_FILE (${EOS_RESOURCES_DIR}/CTestCustom.cmake ${HDFEOS5_BINARY_DIR}/CTestCustom.ctest @ONLY)
ENDIF (BUILD_TESTING)

#-----------------------------------------------------------------------------
# Add the HDFEOS Library Target to the build
#-----------------------------------------------------------------------------
ADD_SUBDIRECTORY (${HDFEOS5_SOURCE_DIR}/gctp ${PROJECT_BINARY_DIR}/gctp)
ADD_SUBDIRECTORY (${HDFEOS5_SOURCE_DIR}/src ${PROJECT_BINARY_DIR}/src)

IF (HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
  IF (HDF5_FOUND AND HDF5_USE_EXTERNAL)
    ADD_DEPENDENCIES (${HDFEOS_SRC_LIB_TARGET} HDF5)
  ENDIF (HDF5_FOUND AND HDF5_USE_EXTERNAL)
ENDIF (HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")

#-----------------------------------------------------------------------------
# Option to build Fortran bindings/tests/samples
#-----------------------------------------------------------------------------
OPTION (HDFEOS_BUILD_FORTRAN "Build FORTRAN support" ON)
IF (HDFEOS_BUILD_FORTRAN AND HDF5_BUILD_FORTRAN)
  INCLUDE (${EOS_RESOURCES_DIR}/HDF5UseFortran.cmake)
ENDIF (HDFEOS_BUILD_FORTRAN AND HDF5_BUILD_FORTRAN)

#-----------------------------------------------------------------------------
# Add the samples tests to the build
#-----------------------------------------------------------------------------
OPTION (HDFEOS5_BUILD_SAMPLES  "Build HDFEOS5 Testdrivers" OFF)
IF (HDFEOS5_BUILD_SAMPLES)
  IF (BUILD_TESTING)
    IF (NOT HDFEOS5_EXTERNALLY_CONFIGURED)
      ADD_SUBDIRECTORY(${HDFEOS5_SOURCE_DIR}/samples ${PROJECT_BINARY_DIR}/samples)
    ENDIF (NOT HDFEOS5_EXTERNALLY_CONFIGURED)
  ENDIF (BUILD_TESTING)
ENDIF (HDFEOS5_BUILD_SAMPLES)

#-----------------------------------------------------------------------------
# Option to build HDFEOS Testdrivers
#-----------------------------------------------------------------------------
OPTION (HDFEOS5_BUILD_TESTDRIVERS  "Build HDFEOS5 Testdrivers" OFF)
IF (HDFEOS5_BUILD_TESTDRIVERS)
  IF (BUILD_TESTING)
    IF (EXISTS "${HDFEOS5_SOURCE_DIR}/testdrivers" AND IS_DIRECTORY "${HDFEOS5_SOURCE_DIR}/testdrivers")
      ADD_SUBDIRECTORY (${HDFEOS5_SOURCE_DIR}/testdrivers ${PROJECT_BINARY_DIR}/testdrivers)
    ENDIF (EXISTS "${HDFEOS5_SOURCE_DIR}/testdrivers" AND IS_DIRECTORY "${HDFEOS5_SOURCE_DIR}/testdrivers")
  ENDIF (BUILD_TESTING)
ENDIF (HDFEOS5_BUILD_TESTDRIVERS)

#-----------------------------------------------------------------------------
# Generate the HE5_config.h file containing user settings needed by compilation
#-----------------------------------------------------------------------------
CONFIGURE_FILE (${EOS_RESOURCES_DIR}/HE5_config.h.in      ${PROJECT_BINARY_DIR}/HE5_config.h @ONLY)

#-----------------------------------------------------------------------------
# Add Target(s) to CMake Install for import into other projects
#-----------------------------------------------------------------------------
IF (NOT HDFEOS5_EXTERNALLY_CONFIGURED)
  INSTALL (
      EXPORT ${HDFEOS_EXPORTED_TARGETS}
      DESTINATION ${HDFEOS_INSTALL_CMAKE_DIR}/${HDFEOS5_PACKAGE}
      FILE ${HDFEOS5_PACKAGE}${HDFEOS5_PACKAGE_EXT}-targets.cmake
      COMPONENT configinstall
  )
ENDIF (NOT HDFEOS5_EXTERNALLY_CONFIGURED)

#-----------------------------------------------------------------------------
# Export all exported targets to the build tree for use by parent project
#-----------------------------------------------------------------------------
IF (NOT HDFEOS5_EXTERNALLY_CONFIGURED)
  EXPORT (
      TARGETS ${HDFEOS_LIBRARIES_TO_EXPORT} ${HDFEOS5_LIB_DEPENDENCIES}
      FILE ${HDFEOS5_PACKAGE}${HDFEOS5_PACKAGE_EXT}-targets.cmake
  )
ENDIF (NOT HDFEOS5_EXTERNALLY_CONFIGURED)

#-----------------------------------------------------------------------------
# Configure the hdfeos-config.cmake file for the build directory
#-----------------------------------------------------------------------------
SET (HDFEOS5_INCLUDES_BUILD_TIME
    ${HDFEOS_INC_DIR}
    ${HDFEOS5_BINARY_DIR}
)
SET (HDFEOS5_VERSION_STRING @HDFEOS5_PACKAGE_VERSION@)
SET (HDFEOS5_VERSION_MAJOR  @HDFEOS5_PACKAGE_VERSION_MAJOR@)
SET (HDFEOS5_VERSION_MINOR  @HDFEOS5_PACKAGE_VERSION_MINOR@)

CONFIGURE_FILE (
    ${EOS_RESOURCES_DIR}/hdfeos5-config.cmake.build.in 
    ${HDFEOS5_BINARY_DIR}/${HDFEOS5_PACKAGE}${HDFEOS5_PACKAGE_EXT}-config.cmake @ONLY
)

#-----------------------------------------------------------------------------
# Configure the FindHDFEOS.cmake file for the install directory
#-----------------------------------------------------------------------------
IF (NOT HDFEOS5_EXTERNALLY_CONFIGURED)
  CONFIGURE_FILE (
      ${EOS_RESOURCES_DIR}/FindHDFEOS5.cmake.in 
      ${HDFEOS5_BINARY_DIR}/CMakeFiles/FindHDFEOS5${HDFEOS5_PACKAGE_EXT}.cmake @ONLY
  )
  INSTALL (
      FILES ${HDFEOS5_BINARY_DIR}/CMakeFiles/FindHDFEOS5${HDFEOS5_PACKAGE_EXT}.cmake
      DESTINATION ${HDFEOS_INSTALL_CMAKE_DIR}/${HDFEOS5_PACKAGE}
      COMPONENT configinstall
  )
ENDIF (NOT HDFEOS5_EXTERNALLY_CONFIGURED)

#-----------------------------------------------------------------------------
# Configure the hdfeos-config.cmake file for the install directory
#-----------------------------------------------------------------------------
IF (NOT HDFEOS5_EXTERNALLY_CONFIGURED)
  CONFIGURE_FILE (
      ${EOS_RESOURCES_DIR}/hdfeos5-config.cmake.install.in
      ${HDFEOS5_BINARY_DIR}/CMakeFiles/${HDFEOS5_PACKAGE}${HDFEOS5_PACKAGE_EXT}-config.cmake @ONLY
  )
  INSTALL (
      FILES ${HDFEOS5_BINARY_DIR}/CMakeFiles/${HDFEOS5_PACKAGE}${HDFEOS5_PACKAGE_EXT}-config.cmake
      DESTINATION ${HDFEOS_INSTALL_CMAKE_DIR}/${HDFEOS5_PACKAGE}
      COMPONENT configinstall
  )
ENDIF (NOT HDFEOS5_EXTERNALLY_CONFIGURED)

#-----------------------------------------------------------------------------
# Configure the hdfeos-config-version .cmake file for the install directory
#-----------------------------------------------------------------------------
IF (NOT HDFEOS5_EXTERNALLY_CONFIGURED)
  CONFIGURE_FILE (
      ${EOS_RESOURCES_DIR}/hdfeos5-config-version.cmake.in
      ${HDFEOS5_BINARY_DIR}/CMakeFiles/${HDFEOS5_PACKAGE}${HDFEOS5_PACKAGE_EXT}-config-version.cmake @ONLY
  )
  INSTALL (
      FILES ${HDFEOS5_BINARY_DIR}/CMakeFiles/${HDFEOS5_PACKAGE}${HDFEOS5_PACKAGE_EXT}-config-version.cmake
      DESTINATION ${HDFEOS_INSTALL_CMAKE_DIR}/cmake/${HDFEOS5_PACKAGE}
      COMPONENT configinstall
  )
ENDIF (NOT HDFEOS5_EXTERNALLY_CONFIGURED)

#-----------------------------------------------------------------------------
# Add Document File(s) to CMake Install
#-----------------------------------------------------------------------------
IF (NOT HDFEOS5_EXTERNALLY_CONFIGURED)
  IF (EXISTS "${HDFEOS5_SOURCE_DIR}/doc" AND IS_DIRECTORY "${HDFEOS5_SOURCE_DIR}/doc")
    SET (doc_files
        ${HDFEOS5_SOURCE_DIR}/doc/README
    )
    INSTALL (
        FILES ${doc_files}
        DESTINATION ${HDFEOS_INSTALL_DATA_DIR}/release_docs
        COMPONENT hdfeosdocuments
    )
  ENDIF (EXISTS "${HDFEOS5_SOURCE_DIR}/doc" AND IS_DIRECTORY "${HDFEOS5_SOURCE_DIR}/doc")
ENDIF (NOT HDFEOS5_EXTERNALLY_CONFIGURED)

#-----------------------------------------------------------------------------
# Set the cpack variables
#-----------------------------------------------------------------------------
SET (CPACK_PACKAGE_VENDOR "HDF_Group")
SET (CPACK_PACKAGE_DESCRIPTION_SUMMARY "HDFEOS5 Installation")
SET (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/doc/README")
SET (CPACK_PACKAGE_NAME "${HDFEOS5_PACKAGE_NAME}")
SET (CPACK_PACKAGE_INSTALL_DIRECTORY "${HDFEOS5_PACKAGE_NAME}")
SET (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${HDFEOS5_PACKAGE_NAME}-${HDFEOS5_PACKAGE_VERSION}-${LIB_TYPE}")
SET (CPACK_PACKAGE_VERSION "${HDFEOS5_PACKAGE_VERSION}")
SET (CPACK_PACKAGE_VERSION_MAJOR "${HDFEOS5_PACKAGE_VERSION_MAJOR}")
SET (CPACK_PACKAGE_VERSION_MINOR "${HDFEOS5_PACKAGE_VERSION_MINOR}")
SET (CPACK_PACKAGE_VERSION_PATCH "")
SET (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/doc/README")
SET (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/doc/README")
SET (CPACK_PACKAGE_RELOCATABLE TRUE)

IF (WIN32)
  SET (CPACK_MONOLITHIC_INSTALL ON)
  SET (CPACK_NSIS_CONTACT "${HDFEOS5_PACKAGE_BUGREPORT}")
  SET (CPACK_NSIS_MODIFY_PATH ON)
  SET (CPACK_NSIS_PACKAGE_NAME "HDFEOS ${HDFEOS5_PACKAGE_VERSION}")
ELSE (WIN32)
  SET (CPACK_PACKAGING_INSTALL_PREFIX "/usr")
  SET (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON)

  SET (CPACK_DEBIAN_PACKAGE_SECTION "Libraries")
  SET (CPACK_DEBIAN_PACKAGE_MAINTAINER "${HDFEOS5_PACKAGE_BUGREPORT}")
    
  SET (CPACK_RPM_COMPONENT_INSTALL ON)
  SET (CPACK_RPM_PACKAGE_GROUP "Development/Tools")
  SET (CPACK_RPM_PACKAGE_LICENSE "BSD-style")
  SET (CPACK_RPM_PACKAGE_URL "${HDFEOS5_PACKAGE_URL}")
  SET (CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "/sbin/ldconfig")
  SET (CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "/sbin/ldconfig")
  SET (CPACK_RPM_POST_INSTALL_SCRIPT_FILE "/sbin/ldconfig")
  SET (CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE "/sbin/ldconfig")
  SET (CPACK_STRIP_FILES "${HDFEOS_LIBRARIES_TO_EXPORT};${HDFEOS_APPS_TO_EXPORT};${EXTERNAL_LIBRARY_LIST}")
ENDIF (WIN32)

INCLUDE(InstallRequiredSystemLibraries)

  SET (CPACK_INSTALL_CMAKE_PROJECTS "${HDFEOS5_BINARY_DIR};HDFEOS;ALL;/")
  
  IF (HDFEOS5_PACKAGE_EXTLIBS)
    IF (HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
      IF (HDF5_FOUND AND HDF5_USE_EXTERNAL)
        SET (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${HDF5_INCLUDE_DIR_GEN};HDF5;libraries;/")
        SET (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${HDF5_INCLUDE_DIR_GEN};HDF5;headers;/")
        SET (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${HDF5_INCLUDE_DIR_GEN};HDF5;configinstall;/")
        IF (ZLIB_USE_EXTERNAL)
          SET (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${ZLIB_INCLUDE_DIR_GEN};zlib;libraries;/")
          SET (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${ZLIB_INCLUDE_DIR_GEN};zlib;headers;/")
          SET (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${ZLIB_INCLUDE_DIR_GEN};zlib;configinstall;/")
        ENDIF (ZLIB_USE_EXTERNAL)
        IF (SZIP_USE_EXTERNAL)
          SET (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${SZIP_INCLUDE_DIR_GEN};szip;libraries;/")
          SET (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${SZIP_INCLUDE_DIR_GEN};szip;headers;/")
          SET (CPACK_INSTALL_CMAKE_PROJECTS "${CPACK_INSTALL_CMAKE_PROJECTS};${SZIP_INCLUDE_DIR_GEN};szip;configinstall;/")
        ENDIF (SZIP_USE_EXTERNAL)
      ENDIF (HDF5_FOUND AND HDF5_USE_EXTERNAL)
    ENDIF (HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "SVN" OR HDFEOS5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ")
  ENDIF (HDFEOS5_PACKAGE_EXTLIBS)

INCLUDE (CPack)

#-----------------------------------------------------------------------------
# Now list the cpack commands
#-----------------------------------------------------------------------------
CPACK_ADD_COMPONENT (applications 
    DISPLAY_NAME "HDFEOS5 Applications" 
    DEPENDS libraries
    GROUP Applications
)
CPACK_ADD_COMPONENT (libraries 
    DISPLAY_NAME "HDFEOS5 Libraries"
    GROUP Runtime
)
CPACK_ADD_COMPONENT (headers 
    DISPLAY_NAME "HDFEOS5 Headers" 
    DEPENDS libraries
    GROUP Development
)
CPACK_ADD_COMPONENT (hdfeosdocuments 
    DISPLAY_NAME "HDFEOS5 Documents"
    GROUP Documents
)
CPACK_ADD_COMPONENT (configinstall 
    DISPLAY_NAME "HDFEOS5 CMake files" 
    DEPENDS libraries
    GROUP Development
)

IF (HDFEOS5_BUILD_TESTDRIVERS)
  CPACK_ADD_COMPONENT (toolsapplications 
      DISPLAY_NAME "HDFEOS5 TESTDRIVERS Applications" 
      DEPENDS toolslibraries
      GROUP Applications
  )
  CPACK_ADD_COMPONENT (toolslibraries 
      DISPLAY_NAME "HDFEOS5 TESTDRIVERS Libraries" 
      DEPENDS libraries
      GROUP Runtime
  )
  CPACK_ADD_COMPONENT (toolsheaders 
      DISPLAY_NAME "HDFEOS5 TESTDRIVERS Headers" 
      DEPENDS toolslibraries
      GROUP Development
  )
ENDIF (HDFEOS5_BUILD_TESTDRIVERS)
