cmake_minimum_required (VERSION 2.8.11)
project (HLJPSS C CXX)

#-----------------------------------------------------------------------------
# Instructions for use : Normal Build
#
# For standard build of HL JPSS.
#-----------------------------------------------------------------------------

if ("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
    MESSAGE(FATAL_ERROR "\nERROR! ${PROJECT_NAME} DOES NOT SUPPORT IN SOURCE BUILDS!\n"
      "CMAKE_CURRENT_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}"
      " == CMAKE_CURRENT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}\n"
      "NEXT STEPS:\n"
      "(1) Delete the CMakeCache.txt file and the CMakeFiles/ directory\n"
      "     under the source directory for ${PROJECT_NAME}, otherwise you\n"
      "     will not be able to configure ${PROJECT_NAME} correctly!\n"
      "      * For example, on linux machines do:\n"
      "        $ rm -r CMakeCache.txt CMakeFiles/\n"
      "(2) Create a different directory and configure ${PROJECT_NAME} in that directory.\n"
      "      * For example, on linux machines do:\n"
      "        $ mkdir MY_BUILD\n"
      "        $ cd MY_BUILD\n"
      "        $ cmake [OPTIONS] ..\n"
      )
endif ()

#-----------------------------------------------------------------------------
# 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 HDF5 in the Express IDE...
#
option (HDF5_USE_FOLDERS "Enable folder grouping of projects in IDEs." ON)
mark_as_advanced (HDF5_USE_FOLDERS)
if (HDF5_USE_FOLDERS)
  set_property (GLOBAL PROPERTY USE_FOLDERS ON)
endif (HDF5_USE_FOLDERS)

# Don't set the hdf5 library files as being imported from system. Fixes issues 
# when compiling the HL JPSS fortran library with cmake >3.0 and not being able 
# to find the hdf5 module files. This is because -isystem is used instead of -I 
# when specifying the directory containing the hdf5 modules.
#
set ( CMAKE_NO_SYSTEM_FROM_IMPORTED true)

#-----------------------------------------------------------------------------
# Set the core names of all the libraries
#-----------------------------------------------------------------------------
set (HLJPSS_C_LIB_CORENAME       "hdf5_hl_region")
set (HLJPSS_Fortran_LIB_CORENAME "hdf5_hl_region_fortran")

#-----------------------------------------------------------------------------
# Set the true names of all the libraries if customized by external project
#-----------------------------------------------------------------------------
set (HLJPSS_C_LIB_NAME           "${HLJPSS_C_LIB_CORENAME}")
set (HLJPSS_Fortran_LIB_NAME     "${HLJPSS_Fortran_LIB_CORENAME}")

#-----------------------------------------------------------------------------
# Set the target names of all the libraries
#-----------------------------------------------------------------------------
set (HLJPSS_C_LIB_TARGET          ${HLJPSS_C_LIB_CORENAME})
set (HLJPSS_Fortran_LIB_TARGET    ${HLJPSS_Fortran_LIB_CORENAME})

#-----------------------------------------------------------------------------
# Define some CMake variables for use later in the project
#-----------------------------------------------------------------------------
set (HLJPSS_RESOURCES_DIR        ${PROJECT_SOURCE_DIR}/config/cmake)
set (HDF_RESOURCES_DIR           ${PROJECT_SOURCE_DIR}/config/cmake)
set (HDF_RESOURCES_EXT_DIR       ${PROJECT_SOURCE_DIR}/config/cmake_ext_mod)
set (HLJPSS_SRC_DIR          	 ${PROJECT_SOURCE_DIR}/src)
set (HLJPSS_Fortran_SRC_DIR    	 ${PROJECT_SOURCE_DIR}/fortran/src)
set (HLJPSS_TEST_DIR          	 ${PROJECT_SOURCE_DIR}/test)
set (HLJPSS_Fortran_TEST_DIR   	 ${PROJECT_SOURCE_DIR}/fortran/test)
set (HLJPSS_EXAMPLES_DIR       	 ${PROJECT_SOURCE_DIR}/examples)
set (HLJPSS_Fortran_EXAMPLES_DIR ${PROJECT_SOURCE_DIR}/fortran/examples)

if (NOT HLJPSS_INSTALL_BIN_DIR)
  set (HLJPSS_INSTALL_BIN_DIR bin)
endif (NOT HLJPSS_INSTALL_BIN_DIR)
if (NOT HLJPSS_INSTALL_LIB_DIR)
  set (HLJPSS_INSTALL_LIB_DIR lib)
endif (NOT HLJPSS_INSTALL_LIB_DIR)
if (NOT HLJPSS_INSTALL_INCLUDE_DIR)
  set (HLJPSS_INSTALL_INCLUDE_DIR include)
endif (NOT HLJPSS_INSTALL_INCLUDE_DIR)
if (NOT HLJPSS_INSTALL_DATA_DIR)
  if (NOT WIN32)
    set (HLJPSS_INSTALL_DATA_DIR share)
    set (HLJPSS_INSTALL_CMAKE_DIR share/cmake)
  else (NOT WIN32)
    set (HLJPSS_INSTALL_DATA_DIR ".")
    set (HLJPSS_INSTALL_CMAKE_DIR cmake)
  endif (NOT WIN32)
endif (NOT HLJPSS_INSTALL_DATA_DIR)

#-----------------------------------------------------------------------------
# parse the full version number from H5public.h and include in H5_VERS_INFO
#-----------------------------------------------------------------------------
file (READ ${CMAKE_CURRENT_SOURCE_DIR}/VERSION _version_contents)
string (REGEX REPLACE ".*#define[ \t]+H5_VERS_MAJOR[ \t]+([0-9]*).*$"
    "\\1" HLJPSS_VERS_MAJOR ${_version_contents})
string (REGEX REPLACE ".*#define[ \t]+H5_VERS_MINOR[ \t]+([0-9]*).*$"
    "\\1" HLJPSS_VERS_MINOR ${_version_contents})
string (REGEX REPLACE ".*#define[ \t]+H5_VERS_RELEASE[ \t]+([0-9]*).*$"
    "\\1" HLJPSS_VERS_RELEASE ${_version_contents})
string (REGEX REPLACE ".*#define[ \t]+H5_VERS_SUBRELEASE[ \t]+\"([0-9A-Za-z._]*)\".*$"
    "\\1" HLJPSS_VERS_SUBRELEASE ${_version_contents})
#message (STATUS "VERSION: ${HLJPSS_VERS_MAJOR}.${HLJPSS_VERS_MINOR}.${HLJPSS_VERS_RELEASE}-${HLJPSS_VERS_SUBRELEASE}")

#-----------------------------------------------------------------------------
# parse the full soversion number from config/lt_vers.am and include in H5_SOVERS_INFO
#-----------------------------------------------------------------------------
set (HLJPSS_SOVERS_INTERFACE "1")
set (HLJPSS_SOVERS_MINOR "0")
set (HLJPSS_SOVERS_RELEASE "0")
#file (READ ${HLJPSS_PROJECT_DIR}/config/lt_vers.am _lt_vers_am_contents)
#string (REGEX REPLACE ".*LT_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$"
#    "\\1" HLJPSS_SOVERS_INTERFACE ${_lt_vers_am_contents})
#string (REGEX REPLACE ".*LT_VERS_REVISION[ \t]+=[ \t]+([0-9]*).*$"
#    "\\1" HLJPSS_SOVERS_MINOR ${_lt_vers_am_contents})
#string (REGEX REPLACE ".*LT_VERS_AGE[ \t]+=[ \t]+([0-9]*).*$"
#    "\\1" HLJPSS_SOVERS_RELEASE ${_lt_vers_am_contents})
MATH (EXPR HLJPSS_SOVERS_MAJOR ${HLJPSS_SOVERS_INTERFACE}-${HLJPSS_SOVERS_RELEASE})
message (STATUS "SOVERSION: ${HLJPSS_SOVERS_MAJOR}.${HLJPSS_SOVERS_RELEASE}.${HLJPSS_SOVERS_MINOR}")

#-----------------------------------------------------------------------------
# Basic HLJPSS stuff here
#-----------------------------------------------------------------------------
set (HLJPSS_PACKAGE "hljpss")
set (HLJPSS_PACKAGE_NAME "HLJPSS")
set (HLJPSS_PACKAGE_VERSION "${HLJPSS_VERS_MAJOR}.${HLJPSS_VERS_MINOR}.${HLJPSS_VERS_RELEASE}")
set (HLJPSS_PACKAGE_VERSION_MAJOR "${HLJPSS_VERS_MAJOR}.${HLJPSS_VERS_MINOR}")
set (HLJPSS_PACKAGE_VERSION_MINOR "${HLJPSS_VERS_RELEASE}")
if (NOT "${HLJPSS_VERS_SUBRELEASE}" STREQUAL "")
  set (HLJPSS_PACKAGE_VERSION_STRING "${HLJPSS_PACKAGE_VERSION}-${HLJPSS_VERS_SUBRELEASE}")
else (NOT "${HLJPSS_VERS_SUBRELEASE}" STREQUAL "")
  set (HLJPSS_PACKAGE_VERSION_STRING "${HLJPSS_PACKAGE_VERSION}")
endif (NOT "${HLJPSS_VERS_SUBRELEASE}" STREQUAL "")
set (HLJPSS_PACKAGE_STRING "${HLJPSS_PACKAGE_NAME} ${HLJPSS_PACKAGE_VERSION_STRING}")
set (HLJPSS_PACKAGE_TARNAME "${HLJPSS_PACKAGE}${HLJPSS_PACKAGE_EXT}")
set (HLJPSS_PACKAGE_URL "http://www.hdfgroup.org")
set (HLJPSS_PACKAGE_BUGREPORT "help@hdfgroup.org")

#-----------------------------------------------------------------------------
# Include some macros for reusable code
#-----------------------------------------------------------------------------
include (${HDF_RESOURCES_EXT_DIR}/HDFMacros.cmake)

#-----------------------------------------------------------------------------
# Setup output Directories
#-----------------------------------------------------------------------------
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."
)
set (CMAKE_Fortran_MODULE_DIRECTORY
    ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all fortran modules."
)

#-----------------------------------------------------------------------------
# Targets built within this project are exported at Install time for use
# by other projects using FindHLJPSS.
#-----------------------------------------------------------------------------
if (NOT HLJPSS_EXPORTED_TARGETS)
  set (HLJPSS_EXPORTED_TARGETS "hljpss-targets")
endif (NOT HLJPSS_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 HLJPSS as a sub-project within their build tree
#-----------------------------------------------------------------------------
set_global_variable (HLJPSS_LIBRARIES_TO_EXPORT "")
set_global_variable (HLJPSS_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 (${HLJPSS_RESOURCES_DIR}/ConfigureChecks.cmake)

set (CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)

#-----------------------------------------------------------------------------
# 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)
  add_definitions (-DH5HLR_DYNAMIC)
else (BUILD_SHARED_LIBS)
  set (CMAKE_POSITION_INDEPENDENT_CODE ON)
endif (BUILD_SHARED_LIBS)

add_definitions (-DBIG_LONGS -DSWAP)

#-----------------------------------------------------------------------------
# Option to Build Static executables
#-----------------------------------------------------------------------------
option (BUILD_STATIC_EXECS "Build Static Executables" OFF)
if (BUILD_STATIC_EXECS)
  if (NOT WIN32)
    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static")
  endif (NOT WIN32)
endif (BUILD_STATIC_EXECS)

#-----------------------------------------------------------------------------
# Include the main src and config directories
#-----------------------------------------------------------------------------
set (HLJPSS_INCLUDE_DIRECTORIES
    ${HLJPSS_SRC_DIR} 
    ${HLJPSS_BINARY_DIR}
    ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
)
INCLUDE_DIRECTORIES (${HLJPSS_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")
  add_definitions (-D_BIND_TO_CURRENT_VCLIBS_VERSION=1)
  add_definitions (-D_CRT_SECURE_NO_WARNINGS)
  add_definitions (-D_CONSOLE)
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)

#-----------------------------------------------------------------------------
# Compiler specific flags : Shouldn't there be compiler tests for these
#-----------------------------------------------------------------------------
if (CMAKE_COMPILER_IS_GNUCC)
  set (CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS} -std=c99 -fomit-frame-pointer -finline-functions -fno-common")
endif (CMAKE_COMPILER_IS_GNUCC)
if (CMAKE_COMPILER_IS_GNUCXX)
  set (CMAKE_CXX_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_CXX_FLAGS} -finline-functions -fno-common")
endif (CMAKE_COMPILER_IS_GNUCXX)

#-----------------------------------------------------------------------------
# Option to allow the user to disable compiler warnings
#-----------------------------------------------------------------------------
option (HDF_DISABLE_COMPILER_WARNINGS "Disable compiler warnings" OFF)
if (HDF_DISABLE_COMPILER_WARNINGS)
  # MSVC uses /w to suppress warnings.  It also complains if another
  # warning level is given, so remove it.
  if (MSVC)
    set (HDF_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)
    add_definitions (-D_CRT_SECURE_NO_WARNINGS)
  endif (WIN32)
  # Borland uses -w- to suppress warnings.
  if (BORLAND)
    set (HDF_WARNINGS_BLOCKED 1)
    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w-")
  endif (BORLAND)

  # Most compilers use -w to suppress warnings.
  if (NOT HDF_WARNINGS_BLOCKED)
    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w")
    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
  endif (NOT HDF_WARNINGS_BLOCKED)
endif (HDF_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 use threadsafe
# Note: Currently CMake only allows configuring of threadsafe on WINDOWS.
#-----------------------------------------------------------------------------
if (WIN32)
  option (HDF_ENABLE_THREADSAFE "Enable Threadsafety" OFF)
  if (HDF_ENABLE_THREADSAFE)
    # check for unsupported options
    if (HDF_ENABLE_PARALLEL)
      message (FATAL " **** Parallel and Threadsafe options are mutually exclusive **** ")
    endif (HDF_ENABLE_PARALLEL)
    set (H5_HAVE_WIN_THREADS 1)
    set (H5_HAVE_THREADSAFE 1)
  endif (HDF_ENABLE_THREADSAFE)
endif (WIN32)

#-----------------------------------------------------------------------------
# HDF5 support
#-----------------------------------------------------------------------------
set (CMAKE_MODULE_PATH ${HDF_RESOURCES_DIR} ${HDF_RESOURCES_EXT_DIR} ${CMAKE_MODULE_PATH})

if (NOT USE_SHARED_LIBS)
  set (HDF5_USE_STATIC_LIBRARIES 1)
endif (NOT USE_SHARED_LIBS)

#ADD_DEFINITIONS (-DH5_USE_18_API)

if (NOT HDF5_HDF5_HEADER)
  find_package (HDF5 NAMES ${HDF5_PACKAGE_NAME})
  if (NOT HDF5_FOUND)
    if (HDF_BUILD_FORTRAN)
      find_package (HDF5 COMPONENTS C HL Fortran Fortran_HL) # Legacy find
    else (HDF_BUILD_FORTRAN)
      find_package (HDF5 COMPONENTS C HL) # Legacy find
    endif (HDF_BUILD_FORTRAN)
#Legacy find_package does not set HDF5_TOOLS_DIR, so we set it here
    set(HDF5_TOOLS_DIR ${HDF5_LIBRARY_DIRS}/../bin)	
#Legacy find_package does not set HDF5_BUILD_SHARED_LIBS, so we set it here
    if (EXISTS "${HDF5_LIBRARY_DIRS}/libhdf5.so")
       set ( HDF5_BUILD_SHARED_LIBS 1)
    else (EXISTS "${HDF5_LIBRARY_DIRS}/libhdf5.so")
       set ( HDF5_BUILD_SHARED_LIBS 0)
    endif (EXISTS "${HDF5_LIBRARY_DIRS}/libhdf5.so")
  endif (NOT HDF5_FOUND)
  if (HDF5_FOUND)
    set (HDF5_HAVE_H5PUBCONF_H 1)
    set (HDF5_HAVE_HDF5 1)
    set (HDF5_HDF5_HEADER "h5pubconf.h")
    set (HDF5_INCLUDE_DIR_GEN ${HDF5_INCLUDE_DIR})
    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)
  else (HDF5_FOUND)
    message (FATAL_ERROR " HDF5 is Required for HL JPSS")
  endif (HDF5_FOUND)
else (NOT HDF5_HDF5_HEADER)
  # This project is being called from within another and HDF5 is already configured
  set (HDF5_HAVE_H5PUBCONF_H 1)
  set (HDF5_HAVE_HDF5 1)
endif (NOT HDF5_HDF5_HEADER)

add_executable (h5dump IMPORTED)
if (USE_SHARED_LIBS AND WIN32)
  set_property (TARGET h5dump PROPERTY IMPORTED_LOCATION "${HDF5_TOOLS_DIR}/h5dumpdll")
else (USE_SHARED_LIBS AND WIN32)
  set_property (TARGET h5dump PROPERTY IMPORTED_LOCATION "${HDF5_TOOLS_DIR}/h5dump")
endif (USE_SHARED_LIBS AND WIN32)
set (HDF5_DUMP_EXECUTABLE $<TARGET_FILE:h5dump>)

set (LINK_LIBS ${LINK_LIBS} ${HDF5_LIBRARIES})
INCLUDE_DIRECTORIES (${HDF5_INCLUDE_DIR})

if (HDF_BUILD_FORTRAN AND HDF5_BUILD_FORTRAN)
  if (HDF5_ENABLE_F2003)
    INCLUDE_DIRECTORIES (${HDF5_INCLUDE_DIR_FORTRAN})
  else (HDF5_ENABLE_F2003)
    message (FATAL_ERROR "HDF5 build requires Fortran 2003 enabled")
  endif (HDF5_ENABLE_F2003)
endif (HDF_BUILD_FORTRAN AND HDF5_BUILD_FORTRAN)

#-----------------------------------------------------------------------------
# Dashboard and Testing Settings
#-----------------------------------------------------------------------------
option (BUILD_TESTING "Build HL JPSS 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 (${PROJECT_SOURCE_DIR}/CTestConfig.cmake)
  configure_file (${HDF_RESOURCES_EXT_DIR}/CTestCustom.cmake ${PROJECT_BINARY_DIR}/CTestCustom.ctest @ONLY)
endif (BUILD_TESTING)

#-----------------------------------------------------------------------------
# Build HL JPSS C library
#-----------------------------------------------------------------------------
add_subdirectory (${HLJPSS_SRC_DIR} ${PROJECT_BINARY_DIR}/src)

INCLUDE_DIRECTORIES (${HLJPSS_SRC_DIR})
#-----------------------------------------------------------------------------
# Build C tests
#-----------------------------------------------------------------------------
add_subdirectory (${HLJPSS_TEST_DIR} ${PROJECT_BINARY_DIR}/test)

#-----------------------------------------------------------------------------
# Build C examples
#-----------------------------------------------------------------------------
add_subdirectory (${HLJPSS_EXAMPLES_DIR} ${PROJECT_BINARY_DIR}/examples)

#-----------------------------------------------------------------------------
# Build HL JPSS Fortran library
#-----------------------------------------------------------------------------
# Set default name mangling : overridden by Fortran detection in fortran dir
set (H5_FC_FUNC  "H5_FC_FUNC(name,NAME) name ## _")
set (H5_FC_FUNC_ "H5_FC_FUNC_(name,NAME) name ## _")
if (EXISTS "${HLJPSS_Fortran_SRC_DIR}" AND IS_DIRECTORY "${HLJPSS_Fortran_SRC_DIR}")
  option (HDF_BUILD_FORTRAN "Build FORTRAN support" OFF)
  if (HDF_BUILD_FORTRAN AND HDF5_BUILD_FORTRAN)	
    include (${HDF_RESOURCES_EXT_DIR}/HDFUseFortran.cmake)
    add_subdirectory (${HLJPSS_Fortran_SRC_DIR} ${PROJECT_BINARY_DIR}/fortran)

    INCLUDE_DIRECTORIES (${HLJPSS_Fortran_SRC_DIR})
    #-----------------------------------------------------------------------------
    # Build Fortran tests
    #-----------------------------------------------------------------------------
    add_subdirectory (${PROJECT_SOURCE_DIR}/fortran/test ${PROJECT_BINARY_DIR}/fortran/test)

    #-----------------------------------------------------------------------------
    # Build Fortran examples
    #-----------------------------------------------------------------------------
    add_subdirectory (${PROJECT_SOURCE_DIR}/fortran/examples ${PROJECT_BINARY_DIR}/fortran/examples)


  endif (HDF_BUILD_FORTRAN AND HDF5_BUILD_FORTRAN)
endif (EXISTS "${HLJPSS_Fortran_SRC_DIR}" AND IS_DIRECTORY "${HLJPSS_Fortran_SRC_DIR}")

include (CMakeInstallation.cmake)
