##################################################
###               CURRENT TARGET               ###
##################################################

SET( TARGET_TOBII TobiiSDK )

##################################################
###                 DIRECTORIES                ###
##################################################

##################################################
# THE ROOT PATH
SET( CURRENT_DIR ${CMAKE_CURRENT_LIST_DIR} )

##################################################
# FOLDERS FROM WHICH WE BUILD THE SOURCES

SET( SOURCES_DIR	${CURRENT_DIR}				)
SET( DATA_DIR		${SOURCES_DIR}/Data			)
SET( DEVICE_DIR		${SOURCES_DIR}/Device		)
SET( FILEDEVICE_DIR ${DEVICE_DIR}/FileDevice	)
SET( SERVER_DIR		${SOURCES_DIR}/Server		)
SET( STREAM_DIR		${SOURCES_DIR}/Stream		)

##################################################
# DESTINATION FOLDERS

# for the headers:
SET( HEADERS_DIR_ROOT		${BUILD_DIR}/Includes/${TARGET_TOBII}	)
SET( HEADERS_DIR_DATA		${HEADERS_DIR_ROOT}/Data				)
SET( HEADERS_DIR_DEVICE		${HEADERS_DIR_ROOT}/Device				)
SET( HEADERS_DIR_FILEDEVICE	${HEADERS_DIR_DEVICE}/FileDevice		)
SET( HEADERS_DIR_SERVER		${HEADERS_DIR_ROOT}/Server				)
SET( HEADERS_DIR_STREAM		${HEADERS_DIR_ROOT}/Stream				)

##################################################
# CREATE DESTINATION FOLDERS
FILE( MAKE_DIRECTORY ${HEADERS_DIR_ROOT} )
FILE( MAKE_DIRECTORY ${HEADERS_DIR_DATA} )
FILE( MAKE_DIRECTORY ${HEADERS_DIR_DEVICE} )
FILE( MAKE_DIRECTORY ${HEADERS_DIR_FILEDEVICE} )
FILE( MAKE_DIRECTORY ${HEADERS_DIR_SERVER} )
FILE( MAKE_DIRECTORY ${HEADERS_DIR_STREAM} )

##################################################
###                 COPY HEADERS               ###
##################################################

##################################################
# DATA HEADERS

FILE ( GLOB DATA_HEADERS ${DATA_DIR}/*.hpp ${DATA_DIR}/*.hxx )
FILE ( COPY ${DATA_HEADERS} DESTINATION ${HEADERS_DIR_DATA} )

##################################################
# DEVICE HEADERS

FILE ( GLOB DEVICE_HEADERS ${DEVICE_DIR}/*.hpp ${DEVICE_DIR}/*.hxx )
FILE ( COPY ${DEVICE_HEADERS} DESTINATION ${HEADERS_DIR_DEVICE} )

##################################################
# FILE DEVICE HEADERS

FILE ( GLOB FILEDEVICE_HEADERS ${FILEDEVICE_DIR}/*.hpp ${FILEDEVICE_DIR}/*.hxx )
FILE ( COPY ${FILEDEVICE_HEADERS} DESTINATION ${HEADERS_DIR_FILEDEVICE} )

##################################################
# SERVER HEADERS

FILE ( GLOB SERVER_HEADERS ${SERVER_DIR}/*.hpp ${SERVER_DIR}/*.hxx )
FILE ( COPY ${SERVER_HEADERS} DESTINATION ${HEADERS_DIR_SERVER} )

##################################################
# STREAM HEADERS

FILE ( GLOB STREAM_HEADERS ${STREAM_DIR}/*.hpp ${STREAM_DIR}/*.hxx )
FILE ( COPY ${STREAM_HEADERS} DESTINATION ${HEADERS_DIR_STREAM} )

##################################################
# TOBIISDK HEADERS

FILE ( GLOB TOBIISDK_HEADERS ${SOURCES_DIR}/*.hpp ${SOURCES_DIR}/*.hxx )
FILE ( COPY ${TOBIISDK_HEADERS} DESTINATION ${HEADERS_DIR_ROOT} )

##################################################
# INCLUDE THEM
INCLUDE_DIRECTORIES (
	${HEADERS_DIR_ROOT}
	${LIBRARIES_INCLUDE_DIRS}
)

##################################################
###                 FIND SOURCES               ###
##################################################

FILE (
	GLOB_RECURSE
	TOBIISDK_SOURCES_FILES
	${SOURCES_DIR}/*.cpp
	${SOURCES_DIR}/*.hpp
	${SOURCES_DIR}/*.hxx
)

##################################################
###               BUILD & ARCHIVE              ###
##################################################

SET( CMAKE_AUTOMOC ON )

ADD_LIBRARY(
	${TARGET_TOBII}
	STATIC
	${TOBIISDK_SOURCES_FILES}
)

TARGET_LINK_LIBRARIES(
	${TARGET_TOBII}
	${LIBRARIES_LIST}
)

SET_TARGET_PROPERTIES(
	${TARGET_TOBII}
	PROPERTIES
	ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIBRARIES_DIR}
)

##################################################
# ADD THIS LIBRARY TO THE GLOBAL LIST OF LIBRARIES

LIST ( APPEND ${LIBRARIES_LIST} ${TARGET_TOBII} )

##################################################