# Manyo Library MLF module

# Find OpenSSL
find_package(OpenSSL REQUIRED)

# Add Manyo MLF LibMany
add_library(MLF SHARED)
target_sources(MLF PRIVATE
    AcquireNeutronSourceImageInformation.cc
    AcquireNeutronSourceInformationBase.cc
    AcquireNeutronSourceInformationControlBase.cc
    AcquireNeutronSourceTextInformation.cc
    AdvScatAbsoBodyManagerMLF.cc
    ArrayOperation.cc
    AverageElementContainerMatrix.cc
    BinDataFileSectionReader.cc
    BoostXmlParser.cc
    ContainerViewer.cc
    EventDataMonitorBase.cc
    EventDataToHistogramBase.cc
    GnuplotInterface.cc
    MlfArraySlicer.cc
    MlfDetectorEfficiencyCorrection.cc
    MlfHeader.cc
    MlfMatrixSlicer.cc
    MlfPhysicalConstants.cc
    MlfScatAbsoBodyManager.cc
    OnLineGnuPlot.cc
    T0TreatToolsBase.cc
    )

target_compile_options(MLF PUBLIC ${MANYO_CXX_FLAGS})
if(OpenMP_FOUND)
    target_compile_definitions(MLF PUBLIC MULTH=${MANYO_MULTH})
endif()
# target_compile_features(MLF PUBLIC cxx_std_11)

target_include_directories(MLF PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../core ${Python_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${OPENSSL_INCLUDE_DIR})
target_link_directories(MLF PRIVATE ${CMAKE_INSTALL_PREFIX}/lib)
target_link_libraries(MLF Manyo OpenSSL::SSL)
target_link_options(MLF PRIVATE ${CMAKE_CXX_FLAGS} ${MANYO_CXX_FLAGS})

# message("Library = " ${CMAKE_INSTALL_PREFIX}/lib)
# message("Sources = " ${mlf_SRC})

# Set up swig
set_property(SOURCE MLF.i PROPERTY CPLUSPLUS ON)
set_property(SOURCE MLF.i PROPERTY INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/../core) # Error on "Swig compile MLF.i for python". This maybe set include path for MLF.i not CXX.

swig_add_library(ManyoMLF
    TYPE MODULE
    LANGUAGE python
    OUTPUT_DIR ${PROJECT_BINARY_DIR}/
    SOURCES MLF.i)
target_link_libraries(ManyoMLF MLF)


# Install library
install(TARGETS MLF
        RUNTIME DESTINATION bin
        LIBRARY DESTINATION ${MANYO_LIB_PATH})

install(FILES AcquireNeutronSourceImageInformation.hh
              AcquireNeutronSourceInformationBase.hh
              AcquireNeutronSourceInformationControlBase.hh
              AcquireNeutronSourceTextInformation.hh
              AdvScatAbsoBodyManagerMLF.hh
              ArrayOperation.hh
              AverageElementContainerMatrix.hh
              BinDataFileSectionReader.hh
              BoostXmlParser.hh
              ContainerViewer.hh
              EventDataMonitorBase.hh
              EventDataToHistogramBase.hh
              GnuplotInterface.hh
              MlfArraySlicer.hh
              MlfDetectorEfficiencyCorrection.hh
              MlfHeader.hh
              MlfMatrixSlicer.hh
              MlfPhysicalConstants.hh
              MlfScatAbsoBodyManager.hh
              OnLineGnuPlot.hh
              T0TreatToolsBase.hh
        DESTINATION include/manyo/MLF)

# Install Manyo folder for Python
install(TARGETS ManyoMLF LIBRARY DESTINATION ${MANYO_PATH}/Manyo/MLF)
install(FILES ${PROJECT_BINARY_DIR}/MLF.py DESTINATION ${MANYO_PATH}/Manyo/MLF)
install(FILES __init__.py DESTINATION ${MANYO_PATH}/Manyo/MLF)
install(FILES sample/ContainerViewer.py
              sample/GnuPlotFormat.py
              sample/ImageInformation.py
              sample/ManyoLibTest.py
              sample/TextInformation2.py
              sample/ValueInformation2.py
        DESTINATION share/Manyo/sample/MLF)
install(FILES database/all_nist_data.dat database/NistXsectData.xml
        DESTINATION share/Manyo/MLF/database)
