# -*- mode: cmake; coding: utf-8; cmake-tab-width: 4; indent-tabs-mode: nil; -*- vim:fenc=utf-8:ft=cmake:et:sw=4:ts=4:sts=4

if (ENABLE_SWIG_OCTAVE)
    include_directories(
        BEFORE
        ${CMAKE_CURRENT_SOURCE_DIR}/../../common/module
        ${CMAKE_CURRENT_BINARY_DIR}/../../common/module
        ${CMAKE_CURRENT_SOURCE_DIR}
        ${nds2-client_INCLUDE_DIRS}
        ${HDF5_INCLUDE_DIRS}
        ${OCTAVE_INCLUDE_DIRS}
        )

    set(INTERFACE_FILE "nds_octave.i")

    set(CMAKE_SWIG_FLAGS "-O")
    set_source_files_properties(${INTERFACE_FILE} PROPERTIES
        CPLUSPLUS ON
        SWIG_FLAGS "-includeall"
    )
    set_source_files_properties(nds2OCTAVE_wrap.cxx PROPERTIES
        GENERATED true
    )
    if ( COMMAND SWIG_ADD_LIBRARY )
        swig_add_library(
            nds2_octave 
            LANGUAGE octave
            SOURCES ${INTERFACE_FILE}
            )
    else( )
        swig_add_module(nds2_octave octave ${INTERFACE_FILE})
    endif( )
    swig_link_libraries(nds2_octave ${OCTAVE_LIBRARIES} nds::cxx)
    set_target_properties(nds2_octave PROPERTIES
        OUTPUT_NAME nds2
        LINKER_LANGUAGE CXX
    )
    if( NOT OCTAVE_INSTALL_DIR )
        exec_program(${OCTAVE_CONFIG_EXECUTABLE}
            ARGS --oct-site-dir
            OUTPUT_VARIABLE OCTAVE_SITE_DIR
            OUTPUT_STRIP_TRAILING_WHITESPACE )
        if ( OCTAVE_SITE_DIR MATCHES "^${CMAKE_INSTALL_PREFIX}.*$" )
            set( OCTAVE_INSTALL_DIR ${OCTAVE_SITE_DIR} CACHE PATH "Installation directory for Octave modules" )
        else( )
            set( OCTAVE_INSTALL_DIR ${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_BASENAME}/octave )
        endif( )
    endif( NOT OCTAVE_INSTALL_DIR )

    if ( ${OCTAVE_VERSION_STRING} VERSION_GREATER "4.0" )
        target_compile_features(nds2_octave PRIVATE
            cxx_variadic_macros
            )
    elseif ( ${OCTAVE_VERSION_STRING} VERSION_EQUAL "4.0" )
        target_compile_features(nds2_octave PRIVATE
            cxx_variadic_macros
            )
    endif ( ${OCTAVE_VERSION_STRING} VERSION_GREATER "4.0" )

  #======================================================================
  # Configuration information
  #======================================================================
  configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/nds2-client-octave.cfg.in
      ${CMAKE_CURRENT_BINARY_DIR}/nds2-client-octave.cfg
      @ONLY )
  #======================================================================
  # Installation Rules
  #======================================================================
  get_swig_property( nds2_module_filename MODULE_OUTPUT_NAME nds2_octave )

  if( NOT WIN32)
      install(
          FILES ${CMAKE_CURRENT_BINARY_DIR}/nds2-client-octave.cfg
          DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/${PROJECT_BASENAME}
          COMPONENT Octave
          )
  endif( NOT WIN32)

  install(
    FILES ${CMAKE_CURRENT_BINARY_DIR}/${nds2_module_filename}
    DESTINATION ${OCTAVE_INSTALL_DIR}
    COMPONENT Octave
  )


endif(ENABLE_SWIG_OCTAVE)
