# TerraHidro
# Alexandre Copertino Jardim (alexandre@dpi.inpe.br)
# ----------------------------------------------------------------------------

cmake_minimum_required(VERSION 2.8)

#set ( TERRALIB_INSTALL_DIR "$ENV{T4_INSTALL_DIR}" )
set ( TERRALIB_INSTALL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../install" )

#set ( TERRALIB_DIR "$ENV{T4_DIR}" )
set ( TERRALIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../terralib" )
set ( terralib_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../terralib/build/cmake" )
#set ( CMAKE_PREFIX_PATH "D:/TerraHidro2010/dev/terralib" )

set ( TVPLGS_DIR "${TERRALIB_DIR}/terraViewPlugins")
set ( TERRA_HIDRO_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../.." )
set ( CMAKE_INSTALL_PREFIX "${TERRALIB_INSTALL_DIR}/bin/plugins" )

set( PROJECT_BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../bin" )

install( TARGETS ${PROJ_NAME} DESTINATION ${TERRALIB_INSTALL_DIR}/bin/plugins )
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${TERRALIB_DIR}/build/cmake/Release/plugins )
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${TERRALIB_DIR}/build/cmake/Debug/plugins )  

set( CMAKE_MODULE_PATH ${TERRALIB_DIR}/build/cmake/common )
include( ${TERRALIB_DIR}/build/cmake/common/CMakeUtils.cmake )
getTePath( T4_DP_INC T4_DP_LIB )
message( ${T4_DP_LIB} )

include_directories ( ${TERRALIB_DIR}/terraViewPlugins/base )

SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE})
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG})  
#set (PROJ_TVPLGS_DIR "${TVPLGS_DIR}/terrahidro") # change this if terralib is somewhere else

set ( PROJ_NAME "TerraHidro" )

project ( ${PROJ_NAME} )

#set ( TE_DIRS terralib;terralib/kernel;terralib/utils;terralib/functions;terralib/dtm;terralib/stat;terralib/image_processing;terralib/drivers/shapelib;shapelib;terralib/drivers/DXF;libdxf;terralib/drivers/spl;libspl;terralib/drivers/qt;terralib/drivers/qwt;terralib/drivers/SQLite;terralib/drivers/SQLite/sqlite3;terralib/drivers/PostgreSQL;terralib/drivers/Firebird;terralib/drivers/Firebird/ibpp/core;terralib/drivers/libjpeg;terralib/drivers/gdal;../terraView/include;../terraView )
#foreach( TDIR ${TE_DIRS} )
#	list ( APPEND TE_INCLUDE_DIRS ${TERRALIB_INSTALL_DIR}/include/${TDIR} )
##endforeach()

#set ( TE_LIBS ${TERRALIB_INSTALL_DIR}/install/lib )

#if( (NOT DEFINED TE_DIRS) OR  (NOT DEFINED TE_LIBS) ) 
	find_package ( terralib REQUIRED )
#endif()

# terra hidro source files
#cpps
#boost  classification  config  edition  flow  functions  kernel  mgb
FILE ( GLOB SRCS ${TERRA_HIDRO_DIR}/src/boost/*.cpp;
 ${TERRA_HIDRO_DIR}/src/classification/*.cpp;
 ${TERRA_HIDRO_DIR}/src/config/*.cpp;
 ${TERRA_HIDRO_DIR}/src/edition/*.cpp;
 ${TERRA_HIDRO_DIR}/src/flow/*.cpp;
 ${TERRA_HIDRO_DIR}/src/functions/*.cpp;
 ${TERRA_HIDRO_DIR}/src/kernel/*.cpp;
 ${TERRA_HIDRO_DIR}/src/mgb/*.cpp;
 ${TERRA_HIDRO_DIR}/src/morphometricVariables/*.cpp
 ${TERRA_HIDRO_DIR}/src/dem/*.cpp
 )
#headers
FILE ( GLOB HEADERS ${TERRA_HIDRO_DIR}/src/boost/*.h;
 ${TERRA_HIDRO_DIR}/src/classification/*.h;
 ${TERRA_HIDRO_DIR}/src/config/*.h;
 ${TERRA_HIDRO_DIR}/src/edition/*.h;
 ${TERRA_HIDRO_DIR}/src/flow/*.h;
 ${TERRA_HIDRO_DIR}/src/flow/*.hpp;
 ${TERRA_HIDRO_DIR}/src/functions/*.h;
 ${TERRA_HIDRO_DIR}/src/kernel/*.h;
 ${TERRA_HIDRO_DIR}/src/mgb/*.h;
 ${TERRA_HIDRO_DIR}/src/morphometricVariables/*.h
 ${TERRA_HIDRO_DIR}/src/dem/*.h
 )

#Qt files
#Requires Qt3 multi-threaded
set(QT_MT_REQUIRED, TRUE)
FIND_PACKAGE(Qt3 REQUIRED)

include_directories (
	${TE_INCLUDE_DIRS}
	${QT_INCLUDE_DIR}
	${CMAKE_CURRENT_BINARY_DIR}
	${TERRA_HIDRO_DIR}/src/boost
	${TERRA_HIDRO_DIR}/src/boost/algorithms
	${TERRA_HIDRO_DIR}/src/classification
	${TERRA_HIDRO_DIR}/src/config
	${TERRA_HIDRO_DIR}/src/edition
	${TERRA_HIDRO_DIR}/src/flow
	${TERRA_HIDRO_DIR}/src/functions
	${TERRA_HIDRO_DIR}/src/kernel
	${TERRA_HIDRO_DIR}/src/mgb
	${TERRA_HIDRO_DIR}/src/morphometricVariables
	${TERRA_HIDRO_DIR}/src/dem
	${TERRALIB_DIR}/terraView	
	${TERRALIB_DIR}/build/cmake/terraViewCore
)

set (
	TO_MOC
	${TERRA_HIDRO_DIR}/src/config/HidroPlugin.h
	${TERRA_HIDRO_DIR}/src/config/HidroPluginStarter.h
)


file( GLOB UI_FILES ${TERRA_HIDRO_DIR}/ui/*.ui )
file( GLOB H_UI_FILES ${TERRA_HIDRO_DIR}/ui/*.h )
#message ( "UI_FILES" )
#message ( ${UI_FILES} )
QT_WRAP_UI( ${PROJ_NAME} HDRS uiFiles ${UI_FILES} )
QT_WRAP_CPP ( ${PROJ_NAME} moc_files ${TO_MOC} )


source_group( "Generated Files\\Header" FILES ${HDRS} )
source_group( "Generated Files\\Source" FILES ${moc_files} ${uiFiles} )
source_group( "UI Files" FILES ${UI_FILES} ${H_UI_FILES} )
set (IMGDIR ${TERRA_HIDRO_DIR}/ui/images )
set (IMGGEN_FILE ${PROJECT_BINARY_DIR}/qimages_src.cpp)
set (IMG_COL ${CMAKE_CURRENT_BINARY_DIR}/qimages.imgcol)

generateImgCol( ${PROJ_NAME} ${IMG_COL} ${IMGDIR} ${IMGGEN_FILE} )

list ( APPEND SRCS ${IMGGEN_FILE} )
#list( APPEND TSLIST "kmlplugin_sp" "kmlplugin_pt" )

set (PRO_FILENAME ${TERRA_HIDRO_DIR}/${PROJ_NAME}.pro )
foreach( TS ${TSLIST})
	set ( TSFILES "${TSFILES} ${TERRA_HIDRO_DIR}/${TS}.ts" )
endforeach()

generatePRO( ${PRO_FILENAME} "${HEADERS}" "${SRCS}" "${UI_FILES}" "${TSFILES}" )

foreach( TS ${TSLIST})
	set ( QMFILE "${TRANSLATION_DIR_DEBUG}/${TS}.qm" )
	set ( TSFILE "${TERRA_HIDRO_DIR}/${TS}.ts" )
	generateTS( ${TSFILE} ${PRO_FILENAME} )
	generateQM( ${TSFILE} ${QMFILE} )
	FILE ( COPY ${QMFILE} DESTINATION ${TRANSLATION_DIR_RELEASE} )
endforeach()
# # -----------------------------------

add_definitions ( ${QT_DEFINITIONS} -DQT_THREAD_SUPPORT )
add_definitions ( -DTDK_KMLASDLL )

add_library ( ${PROJ_NAME} SHARED ${SRCS} ${HEADERS} ${HDRS} ${uiFiles} ${moc_files} ${H_UI_FILES} ${UI_FILES} )

FIND_PACKAGE( QWT REQUIRED )

SET( LIBS ${PROJ_NAME} ) 

#IF( WIN32 )	
#	list( APPEND LIBS ${TERRALIB_DIR}/build/cmake/Debug/terralib.lib )
#	list( APPEND LIBS ${TERRALIB_DIR}/build/cmake/Debug/terralib_spl.lib )
#	list( APPEND LIBS ${TERRALIB_DIR}/build/cmake/Debug/terraViewCore.lib )
	list( APPEND LIBS ${QT_QTMAIN_LIBRARY} )
	list( APPEND LIBS ${QT_QT_LIBRARY} )
	list( APPEND LIBS ${QWT_LIBRARY} )
	#list( APPEND TE_LIBS ${TERRALIB_DIR}/build/Debug/terralib_shp.lib )
	#list( APPEND TE_LIBS ${TERRALIB_DIR}/build/Debug/terralib_shp.lib )
#ELSE()		
#	list ( APPEND TE_BINS ${TERRALIB_DIR}/build/Release/libterralib_spl.so )
#ENDIF()

#message( ${LIBS} )

target_link_libraries ( ${LIBS} ${TE_LIBRARIES} )