#
#  Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
#
#  This file is part of the TerraLib - a Framework for building GIS enabled applications.
#
#  TerraLib is free software: you can redistribute it and/or modify
#  it under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation, either version 3 of the License,
#  or (at your option) any later version.
#
#  TerraLib is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#  GNU Lesser General Public License for more details.
#
#  You should have received a copy of the GNU Lesser General Public License
#  along with TerraLib. See COPYING. If not, write to
#  TerraLib Team at <terralib-team@terralib.org>.
#
#
#  Description: CMake script for the TerraLib Java binding.
#
#  Author: Gilberto Ribeiro de Queiroz <gribeiro@dpi.inpe.br>
#          Frederico Augusto T. Bede <frederico.bede@funcate.org.br>
#

include(${SWIG_USE_FILE})

include_directories(SYSTEM ${Boost_INCLUDE_DIR})

if(WIN32)
  add_definitions(-DLUA_BUILD_AS_DLL)
  if(MSVC)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj /Gy")
	find_library(LUA_LIBRARY_DEBUG
                 NAMES luad
                 HINTS
                 ENV LUA_DIR
                 PATH_SUFFIXES lib)
	set(LUA_LIBRARIES optimized ${LUA_LIBRARIES} debug ${LUA_LIBRARY_DEBUG})
	set(CMAKE_DEBUG_POSTFIX "")
  endif()
endif()

include(${terralib_SOURCE_DIR}/terralib_conf.cmake)

set(SWIG_MAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/terralib/binding/swig/TerraLibLUA.i")

file(GLOB TERRALIB_SWIG_SCRIPT_FILE ${SWIG_MAIN_FILE})

file(GLOB TERRALIB_OTHER_SCRIPT_FILES
  ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/terralib/binding/swig/common/*.i
  ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/terralib/binding/swig/lua/*.i
  )

include_directories (
  "${TERRALIB_ABSOLUTE_ROOT_DIR}/src"
  "${CMAKE_BINARY_DIR}"
  "${Boost_INCLUDE_DIR}"
  "${LUA_INCLUDE_DIR}"
)

set (CMAKE_SWIG_OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/src" CACHE PATH "Directory for swig output.")

set(TERRALIB_LIBRARIES_DEPENDENCIES terralib_mod_common
									terralib_mod_datatype
									terralib_mod_srs
									terralib_mod_geometry
									terralib_mod_raster
									terralib_mod_dataaccess
									terralib_mod_st
									terralib_mod_cellspace
									terralib_mod_maptools
									terralib_mod_attributefill_core
									terralib_mod_mnt_core
									terralib_mod_ws_ogc_wms_client
									terralib_mod_ws_ogc_wms_dataaccess
									${Boost_FILESYSTEM_LIBRARY}
									${Boost_SYSTEM_LIBRARY}
									${Boost_THREAD_LIBRARY}
									${LUA_LIBRARIES})

if(TERRALIB_DEFINE_RPATH)
  ADD_EXTERNAL_LIBRARY_TO_RPATH("terralib_mod_binding_lua" ${TERRALIB_LIBRARIES_DEPENDENCIES})
endif()

if(${CMAKE_VERSION} VERSION_GREATER "3.10")
  set_property(SOURCE ${TERRALIB_SWIG_SCRIPT_FILE} PROPERTY CPLUSPLUS ON)
  set_property(SOURCE ${TERRALIB_SWIG_SCRIPT_FILE} PROPERTY SWIG_MODULE_NAME terralib_mod_binding_lua)
  set_property(SOURCE ${TERRALIB_SWIG_SCRIPT_FILES} PROPERTY SWIG_MODULE_NAME terralib_mod_binding_lua)
  set_property(SOURCE ${TERRALIB_SWIG_SCRIPT_FILES} PROPERTY CPLUSPLUS OFF)

  SWIG_ADD_LIBRARY(
    terralib_mod_binding_lua
    TYPE SHARED
    LANGUAGE lua
    SOURCES ${TERRALIB_SWIG_SCRIPT_FILE}
  )
else()
  set (CMAKE_SWIG_FLAGS "-c++")
  set_source_files_properties(${TERRALIB_SWIG_SCRIPT_FILE} PROPERTIES CPLUSPLUS ON CMAKE_SWIG_FLAGS "-includeall")

  SWIG_ADD_MODULE(terralib_mod_binding_lua lua ${TERRALIB_SWIG_SCRIPT_FILE})
endif()

SWIG_LINK_LIBRARIES(terralib_mod_binding_lua ${TERRALIB_LIBRARIES_DEPENDENCIES})

set_target_properties(terralib_mod_binding_lua PROPERTIES PREFIX "")

install(TARGETS terralib_mod_binding_lua
        RUNTIME DESTINATION ${TERRALIB_DESTINATION_RUNTIME} COMPONENT runtime
        LIBRARY DESTINATION ${TERRALIB_DESTINATION_LIBRARY} COMPONENT runtime
        ARCHIVE DESTINATION ${TERRALIB_DESTINATION_ARCHIVE} COMPONENT runtime)
