# -*- 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 ( NOT DEFINED ENABLE_SWIG_PYTHON3 OR ENABLE_SWIG_PYTHON3 )
  if ( NOT DEFINED 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_CURRENT_SOURCE_DIR}/../test/testsuite.cmake )

      if (PYTHON3LIBS_FOUND AND PYTHON3_NUMPY_INCLUDE_PATH)

          set( ENABLE_SWIG_PYTHON3 "yes"
              CACHE BOOL "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
          ${CMAKE_CURRENT_SOURCE_DIR}/../module
          ${CMAKE_CURRENT_BINARY_DIR}/../module
          ${CMAKE_CURRENT_SOURCE_DIR}/../../common/module
          ${CMAKE_CURRENT_BINARY_DIR}/../../common/module
          ${nds2-client_INCLUDE_DIRS}
          ${PYTHON3_NUMPY_INCLUDE_PATH}
          ${PYTHON3_INCLUDE_PATH}
          )

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


      set( NDS_PYTHON_VERSION_MAJOR ${PYTHON3_VERSION_MAJOR} )
      set( NDS_PYTHON_VERSION_MINOR ${PYTHON3_VERSION_MINOR} )
      set( PYTHON_MODULE_INSTALL_DIR ${PYTHON${PYTHON3_VERSION_MAJOR}${PYTHON3_VERSION_MINOR}_MODULE_INSTALL_DIR} )
      set( PYTHON_EXTMODULE_INSTALL_DIR ${PYTHON${PYTHON3_VERSION_MAJOR}${PYTHON3_VERSION_MINOR}_EXTMODULE_INSTALL_DIR} )

      cx_swig_python_module(
          PREFIX         PYTHON3
          INTERFACE_FILE ${INTERFACE_FILE}
          MODULE         nds2
          LINK_LIBRARIES nds::cxx
          SWIG_FLAGS "-py3" "-shadow" "-importall" "-Wall" "-threads" "-O"
          )
      set( NDS_PYTHON_VERSION_MAJOR ${PYTHON3_VERSION_MAJOR} )
      set( NDS_PYTHON_VERSION_MINOR ${PYTHON3_VERSION_MINOR} )
      set( PYTHON_MODULE_INSTALL_DIR ${PYTHON${PYTHON3_VERSION_MAJOR}${PYTHON3_VERSION_MINOR}_MODULE_INSTALL_DIR} )
      set( PYTHON_EXTMODULE_INSTALL_DIR ${PYTHON${PYTHON3_VERSION_MAJOR}${PYTHON3_VERSION_MINOR}_EXTMODULE_INSTALL_DIR} )

      #======================================================================
      # 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_CURRENT_SOURCE_DIR}/../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 ( )
