set(NICAFEMTO_VERSION 73178f31c1b8811fda19e77c89ca3b5944f3d4b8)

set(NICAFEMTO_SRC_URL "https://git.cbm.gsi.de/f.uhlig/nicafemto.git")
set(NICAFEMTO_DESTDIR "${CMAKE_BINARY_DIR}/external/NICAFEMTO-prefix")
set(JSROOT_SRC_URL "https://github.com/root-project/jsroot.git")
set(JSROOT_VERSION "5.7.1")


list(APPEND NICA_LIB_LIST "NicaAna" "NicaCut" "NicaDataFormat" "NicaFeatures" "NicaFemto")
list(APPEND NICA_LIB_LIST "NicaFlow" "NicaFluct" "NicaGen" "NicaSpectra")

download_project_if_needed(PROJECT         NicaFemto_source
                           GIT_REPOSITORY  ${NICAFEMTO_SRC_URL}
                           GIT_TAG         ${NICAFEMTO_VERSION}
                           SOURCE_DIR      ${CMAKE_CURRENT_SOURCE_DIR}/NicaFemto
                          )

If(ProjectUpdated)
  File(REMOVE_RECURSE ${NICAFEMTO_DESTDIR})
  Message("NicaFemto source directory was changed so build directory was deleted")
EndIf()

If(USE_DIFFERENT_COMPILER)
  Set(EXTRA_ARGS "-DUSE_DIFFERENT_COMPILER=TRUE")
Else()
  Set(EXTRA_ARGS "")
EndIf()

ExternalProject_Add(NICAFEMTO
  BUILD_IN_SOURCE 0
  SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/NicaFemto
  BUILD_BYPRODUCTS ${NICAFEMTO_LIBRARY}
  LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1
  CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env SIMPATH=${SIMPATH} FAIRROOTPATH=${FAIRROOTPATH}
             ${CMAKE_COMMAND}
             -G ${CMAKE_GENERATOR}
             -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
             -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
             -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
             -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
             -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
             -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
             -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}
             -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
             -DCMAKE_MODULE_PATH=${CMAKE_SOURCE_DIR}/cmake/modules
	     -DJSROOT=${CMAKE_CURRENT_SOURCE_DIR}
             -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON
             "${EXTRA_ARGS}"
             ${CMAKE_CURRENT_SOURCE_DIR}/NicaFemto
  INSTALL_COMMAND  ${CMAKE_COMMAND} --build . --target install
)

add_library(NicaFeatures SHARED IMPORTED  GLOBAL)
set_target_properties(NicaFeatures PROPERTIES 
  IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}NicaFeatures${CMAKE_SHARED_LIBRARY_SUFFIX} 
  INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR}/include
  )
add_dependencies(NicaFeatures NICAFEMTO)


add_library(NicaDataFormat SHARED IMPORTED  GLOBAL)
set_target_properties(NicaDataFormat PROPERTIES
  IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}NicaDataFormat${CMAKE_SHARED_LIBRARY_SUFFIX}
  INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR}/include
  )
add_dependencies(NicaDataFormat NICAFEMTO)


add_library(NicaGen SHARED IMPORTED  GLOBAL)
set_target_properties(NicaGen PROPERTIES
  IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}NicaGen${CMAKE_SHARED_LIBRARY_SUFFIX}
  INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR}/include
  )
add_dependencies(NicaGen NICAFEMTO)


add_library(NicaCut SHARED IMPORTED  GLOBAL)
set_target_properties(NicaCut PROPERTIES
  IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}NicaCut${CMAKE_SHARED_LIBRARY_SUFFIX}
  INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR}/include
  )
add_dependencies(NicaCut NICAFEMTO)


add_library(NicaAna SHARED IMPORTED  GLOBAL)
set_target_properties(NicaAna PROPERTIES
  IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}NicaAna${CMAKE_SHARED_LIBRARY_SUFFIX}
  INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR}/include
  )
add_dependencies(NicaAna NICAFEMTO)


foreach(LIB_NAME ${NICA_LIB_LIST})
  if(APPLE)
    Install( FILES
    "${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}${LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
    "${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}${LIB_NAME}.0${CMAKE_SHARED_LIBRARY_SUFFIX}"
    "${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}${LIB_NAME}.1${CMAKE_SHARED_LIBRARY_SUFFIX}"
    "${CMAKE_BINARY_DIR}/lib/G__${LIB_NAME}Dict_rdict.pcm"
    "${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}${LIB_NAME}.rootmap"
  DESTINATION lib)
  else()
    Install( FILES
      "${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}${LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
      "${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}${LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.0"
      "${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}${LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.1"
      "${CMAKE_BINARY_DIR}/lib/G__${LIB_NAME}Dict_rdict.pcm"
      "${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}${LIB_NAME}.rootmap"
    DESTINATION lib)
  endif()
endforeach(LIB_NAME)

## addditional stuff
Install(FILES ${CMAKE_BINARY_DIR}/bin/nica-report
	          ${CMAKE_BINARY_DIR}/bin/nica-merger
        DESTINATION bin
)

Install(DIRECTORY
		${CMAKE_CURRENT_SOURCE_DIR}/jsroot
		${CMAKE_CURRENT_SOURCE_DIR}/NicaFemto/features/nicafemto_plus
        DESTINATION share
)