# -*- mode: cmake; conding: utf-8; cmake-tab-width: 4; indent-tabs-mode: nil; -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
if ( NOT DEFINED ENABLE_SWIG_PYTHON3 OR ENABLE_SWIG_PYTHON3 )
  if ( NOT PYTHON3_VERSION )
    set(PYTHON3_VERSION 3)
  endif ()

  #======================================================================
  # Find python and key modules
  #======================================================================

  cx_python(
      VERSION ${PYTHON3_VERSION}
      PREFIX PYTHON3 )
  cx_python_module(
      MODULE numpy REQUIRED
      PREFIX PYTHON3 )

  if (PYTHON3LIBS_FOUND)

      include( ${CMAKE_SOURCE_DIR}/python/test/testsuite.cmake )

      if (PYTHON3LIBS_FOUND AND PYTHON3_NUMPY_INCLUDE_PATH)

          set( ENABLE_SWIG_PYTHON3 "yes"
              CACHE INTERNAL "Enable building of SWIG bindings for Python 3" )

      endif(PYTHON3LIBS_FOUND AND PYTHON3_NUMPY_INCLUDE_PATH)

      include_directories(
          BEFORE
          ${CMAKE_CURRENT_SOURCE_DIR}
          ${PROJECT_SOURCE_DIR}/python/module
          ${PROJECT_BINARY_DIR}/python/module
          ${PROJECT_SOURCE_DIR}/common/module
          ${PROJECT_BINARY_DIR}/common/module
          ${PROJECT_BINARY_DIR}/src/client
          ${nds2-client_INCLUDE_DIRS}
          ${PYTHON3_NUMPY_INCLUDE_PATH}
          ${PYTHON3_INCLUDE_PATH}
          )

      set(INTERFACE_FILE "${PROJECT_SOURCE_DIR}/python/module/nds_python.i")


      cx_swig_python_module(
          PREFIX         PYTHON3
          INTERFACE_FILE ${INTERFACE_FILE}
          MODULE         nds2
          LINK_LIBRARIES nds::cxx
          )
      set( NDS_PYTHON_VERSION_MAJOR ${PYTHON3_VERSION_MAJOR} )
      set( NDS_PYTHON_VERSION_MINOR ${PYTHON3_VERSION_MINOR} )

      #======================================================================
      # Configuration file rules
      #======================================================================
      configure_file( ${PROJECT_SOURCE_DIR}/python/module/nds2-client-python.cfg.in
          ${CMAKE_CURRENT_BINARY_DIR}/nds2-client-py${PYTHON3_VERSION_MAJOR}${PYTHON3_VERSION_MINOR}.cfg
          @ONLY )
      #======================================================================
      # Installation Rules
      #======================================================================
      if ( NOT WIN32 )
          install(
              FILES ${CMAKE_CURRENT_BINARY_DIR}/nds2-client-py${PYTHON3_VERSION_MAJOR}${PYTHON3_VERSION_MINOR}.cfg
              DESTINATION "${CMAKE_INSTALL_FULL_SYSCONFDIR}/${PROJECT_BASENAME}"
              COMPONENT Python3
              )

      endif( NOT WIN32 )

      #======================================================================
      # Do unit tests to verify the interface
      #======================================================================
      do_python_tests(
          PREFIX            PYTHON3
          NAMESPACE         python3
          PYTHON_MODULE_DIR ${CMAKE_CURRENT_BINARY_DIR}
          TEST_SOURCE_DIR   ${CMAKE_SOURCE_DIR}/python/test
          )
  endif( )

  #======================================================================
  # Provide additional information regarding components
  #======================================================================

  cpack_add_component(Python3
      DISPLAY_NAME "Python 3.x extensions"
      DESCRIPTION
        "Pieces needed to use the nds2 client from Python 3.x"
      GROUP Runtime)

endif ( )
