message ("********INICIO*********")
project(LadybugCamera)

################################################################################
create_export(EXPORT_HDR ${PROJECT_NAME})

################################################################################
IF(WIN32)
	SET(LADYBUG_ROOT_DIR "$ENV{LADYBUG_ROOT}")
ELSE(WIN32)
	SET(LADYBUG_ROOT_DIR
		/usr/local                                      # Linux: default dir by CMake
		/usr                                            # Linux
		/opt/local                                      # OS X: default MacPorts location
		)
ENDIF(WIN32)

FIND_PATH(LADYBUG_INCLUDE_DIR
	NAMES "ladybug.h" "ladybuggeom.h" "ladybugGPS.h" "ladybugImageAdjustment.h" "ladybugrenderer.h" "ladybugsensors.h" "ladybugstream.h" "ladybugvideo.h" "pgrcameragui.h"
	PATHS "${LADYBUG_ROOT_DIRS}/include/"
	)

FIND_PATH(LADYBUG_LIB_DIR
	NAMES "ladybug.lib" "LadybugGUI.lib"
	PATHS "${LADYBUG_ROOT_DIRS}/lib/"
	)

# List of required modules
set(LADYBUG_MODULES "ladybug" "LadybugGUI")

set(LADYBUG_LIB_MISSING FALSE)
set(LADYBUG_LIBRARIES "")

# Check the presence of each module
foreach(module ${LADYBUG_MODULES})
	find_library(
		LADYBUG_${module}_LIB
		NAMES ${module}
		HINTS ${LADYBUG_LIB_DIR}
	)
	if(LADYBUG_${module}_LIB)
		list(APPEND LADYBUG_LIBRARIES general ${LADYBUG_${module}_LIB})
	else()
		message(SEND_ERROR "Cannot find Ladybug module ${module}")
		set(LADYBUG_LIB_MISSING TRUE)
	endif()
endforeach()

################################################################################
# Qt
set(QT_USE_QTXML true)
set(QT_USE_QTNETWORK true)
include(${QT_USE_FILE})

add_definitions(
    ${QT_DEFINITIONS}
)


#########################################################
# FIND OPENGL
#########################################################
find_package(OpenGL REQUIRED)
include_directories(${OpenGL_INCLUDE_DIRS})
link_directories(${OpenGL_LIBRARY_DIRS})
add_definitions(${OpenGL_DEFINITIONS})
if(NOT OPENGL_FOUND)
    message(ERROR " OPENGL not found!")
endif(NOT OPENGL_FOUND)

################################################################################
# Find dependencies
find_package(OpenCV REQUIRED)
if(OpenCV_FOUND)
    list(APPEND OpenCV_LIBS ${OpenCV_LIBRARIES})
    list(APPEND OpenCV_INCLUDE_DIR ${OpenCV_INCLUDE_DIRS})

#message ("Libs to add: ${OpenCV_LIBS}")

endif(OpenCV_FOUND)

################################################################################
# Include directories
include_directories(
    ${PACPUSINCLUDE_DIRECTORY}
    ${PROJECT_BINARY_DIR}
    ${QT_INCLUDE_DIR}
	${LADYBUG_INCLUDE_DIR}
	${OpenCV_INCLUDE_DIR}
)

################################################################################
# Link directories
link_directories(
    ${PACPUS_LIB_DIR}
	${LADYBUG_LIB_DIR}
	$ENV{OPENCV_LIB_DIR}
)
pacpus_plugin(PLUGIN_CPP PLUGIN_H ${PROJECT_NAME})

################################################################################
# FILES
set(HDRS
    ${EXPORT_HDR}
    ladybugComponent.h
)

set(SRCS
	ladybugComponent.cpp
    ${PLUGIN_CPP}
)

set(MOC_FILES
    #Ladybug.h
    ${PLUGIN_H}
)

set(UI_FILES
)

################################################################################
# Call moc, uic
qt_wrap_cpp(MOC_SRCS
    ${MOC_FILES}
)
qt_wrap_ui(UI_SRCS
    ${UI_FILES}
)

################################################################################
# BUILD and LINK
pacpus_add_library(${PROJECT_NAME} SHARED
    ${SRCS}
    ${HDRS}
    ${MOC_SRCS}
    ${UI_SRCS}
)

################################################################################
# LIBS
message(STATUS ${PACPUS_DEPENDENCIES_LIB}) 

set(LIBS
    ${PACPUS_LIBRARIES}
    ${QT_LIBRARIES}
	${PACPUS_DEPENDENCIES_LIB}
	${OpenCV_LIBS}
    optimized FileLib debug FileLib_d
    optimized PacpusLib debug PacpusLib_d
    optimized PacpusTools debug PacpusTools_d
	${LADYBUG_LIBRARIES}
	${OpenCV_LIBS}
)
if (WIN32)
    list(APPEND LIBS
        optimized ROAD_TIME debug ROAD_TIME_d
    )
endif()

################################################################################
# LINK
target_link_libraries(${PROJECT_NAME} ${LIBS})

message ("******* LIBS: ${INTERFACE_LINK_LIBRARIES} FIM LIBS********")

# PROPERTIES
set_target_properties(${PROJECT_NAME} PROPERTIES DEBUG_POSTFIX "_d")
# FOLDERS
pacpus_folder(${PROJECT_NAME} "components")

################################################################################
# INSTALL
pacpus_install(${PROJECT_NAME})

message ("*******FIM*******")

