#-----------------------------------------------------------------------------
# Compiles the HL JPSS C library
#-----------------------------------------------------------------------------

cmake_minimum_required (VERSION 2.8.10)
project (HLJPSS_F90_SRC C Fortran)

#-----------------------------------------------------------------------------
# configure def file for shared libs on windows
if (WIN32)
  if (BUILD_SHARED_LIBS)
    if (MSVC)
      configure_file (${HLJPSS_F90_SRC_SOURCE_DIR}/HLJPSS_fortrandll.def.in ${HLJPSS_F90_SRC_BINARY_DIR}/hdf5_fortrandll.def @ONLY)
    endif (MSVC)
  endif (BUILD_SHARED_LIBS)
endif (WIN32)

#-----------------------------------------------------------------------------
# Define Sources
#-----------------------------------------------------------------------------
set (hljpss_COBJ
	hl_region_H5LRf.c  hl_region_H5LTf.c
)
set_source_files_properties (hljpss_COBJ PROPERTIES LANGUAGE C)

set (hljpss_FOBJ
	h5hl_region.f90
	hl_region_H5LRff.f90
	hl_region_H5LTff.f90
)
set_source_files_properties (hljpss_FOBJ PROPERTIES LANGUAGE Fortran)

add_library (${HLJPSS_Fortran_LIB_TARGET}_c OBJECT ${hljpss_COBJ})
add_library (${HLJPSS_Fortran_LIB_TARGET} ${LIB_TYPE} ${hljpss_FOBJ} $<TARGET_OBJECTS:${HLJPSS_Fortran_LIB_TARGET}_c>)
set (SHARED_LINK_FLAGS " ")
if (WIN32)
  if (BUILD_SHARED_LIBS)
    if (MSVC)
      set (SHARED_LINK_FLAGS "/DLL /DEF:${HLJPSS_F90_SRC_BINARY_DIR}/hdf5_fortrandll.def")
    endif (MSVC)
  endif (BUILD_SHARED_LIBS)
endif (WIN32)
TARGET_FORTRAN_PROPERTIES (${HLJPSS_Fortran_LIB_TARGET} " " ${SHARED_LINK_FLAGS})
set_target_properties (${HLJPSS_Fortran_LIB_TARGET} PROPERTIES LINKER_LANGUAGE Fortran) 
target_link_libraries (${HLJPSS_Fortran_LIB_TARGET} ${HLJPSS_C_LIB_TARGET} ${LINK_LIBS})
HDF_SET_LIB_OPTIONS (${HLJPSS_Fortran_LIB_TARGET} ${HLJPSS_Fortran_LIB_NAME} ${LIB_TYPE})

#-----------------------------------------------------------------------------
# Add file(s) to CMake Install
#-----------------------------------------------------------------------------
install (
    FILES 
        ${HLJPSS_F90_SRC_SOURCE_DIR}/hl_regionf90proto.h
    DESTINATION 
        ${HLJPSS_INSTALL_INCLUDE_DIR}
    COMPONENT 
        fortheaders
)

if (WIN32)
  install (
      FILES
          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/hl_region_h5lr.mod
          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/hl_region_h5lt.mod
          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5hl_region.mod
          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/hl_region_h5lr.mod
          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/hl_region_h5lt.mod
          ${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}/h5hl_region.mod
      DESTINATION
          ${HLJPSS_INSTALL_INCLUDE_DIR}
      COMPONENT
          fortheaders
  )
else (WIN32)
  install (
      FILES
          ${CMAKE_Fortran_MODULE_DIRECTORY}/hl_region_h5lr.mod
          ${CMAKE_Fortran_MODULE_DIRECTORY}/hl_region_h5lt.mod
          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5hl_region.mod
          ${CMAKE_Fortran_MODULE_DIRECTORY}/hl_region_h5lr.mod
          ${CMAKE_Fortran_MODULE_DIRECTORY}/hl_region_h5lt.mod
          ${CMAKE_Fortran_MODULE_DIRECTORY}/h5hl_region.mod
      DESTINATION
          ${HLJPSS_INSTALL_INCLUDE_DIR}
      COMPONENT
          fortheaders
  )
endif (WIN32)

#-----------------------------------------------------------------------------
# Add Target(s) to CMake Install for import into other projects
#-----------------------------------------------------------------------------
if (HLJPSS_EXPORTED_TARGETS)
  if (BUILD_SHARED_LIBS)
    INSTALL_TARGET_PDB (${HLJPSS_Fortran_LIB_TARGET} ${HLJPSS_INSTALL_LIB_DIR} fortlibraries)
  endif (BUILD_SHARED_LIBS)

  install (
      TARGETS
          ${HLJPSS_Fortran_LIB_TARGET}
      EXPORT
          ${HLJPSS_EXPORTED_TARGETS}
      LIBRARY DESTINATION ${HLJPSS_INSTALL_LIB_DIR} COMPONENT fortlibraries
      ARCHIVE DESTINATION ${HLJPSS_INSTALL_LIB_DIR} COMPONENT fortlibraries
      RUNTIME DESTINATION ${HLJPSS_INSTALL_BIN_DIR} COMPONENT fortlibraries
  )
endif (HLJPSS_EXPORTED_TARGETS)
