#################################################
#   ___________    ____ ______  __ __  _____    #
#   \____ \__  \ _/ ___\\____ \|  |  \/  ___/   #
#   |  |_> > __ \\  \___|  |_> >  |  /\___ \    #
#   |   __(____  /\___  >   __/|____//____  >   #
#   |__|       \/     \/|__|              \/    #
#                                               #
#################################################
project(PacpusTools)

create_export(EXPORT_HDR ${PROJECT_NAME} "${PACPUS_INCLUDE_DIR}/Pacpus/PacpusTools")

################################################################################
# Compiler definitions
add_definitions(${QT_DEFINITIONS})

################################################################################
# DIRECTORIES
include_directories(
    ${QT_INCLUDE_DIR}
)

link_directories(
    ${PROJECT_BINARY_DIR}/../PacpusLib
	${PROJECT_BINARY_DIR}/../RoadTime
)

################################################################################
# FILES
set(HDRS
    ${EXPORT_HDR}
    ${PACPUS_INCLUDE_DIR}/Pacpus/PacpusTools/AsyncWorkerBase.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/PacpusTools/BinaryDecoder.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/PacpusTools/geodesie.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/PacpusTools/matrice.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/PacpusTools/PeriodicWorker.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/PacpusTools/SharedMemory.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/PacpusTools/PosixShMem.h
	${PACPUS_INCLUDE_DIR}/Pacpus/PacpusTools/Win32ShMem.h

    #${PACPUS_INCLUDE_DIR}/Pacpus/PacpusTools/pacpusStruct.h
    #${PACPUS_INCLUDE_DIR}/Pacpus/PacpusTools/PacpusSerialPort.h
)

set(SRCS
    src/matrice.cpp
    src/geodesie.cpp
    src/AsyncWorkerBase.cpp
    src/PeriodicWorker.cpp
    #src/PacpusSerialPort.cpp
    src/SharedMemory.cpp
)

IF(UNIX)
LIST(APPEND SRCS
	src/PosixShMem.cpp
	)
ENDIF(UNIX)

IF(WIN32)
LIST(APPEND SRCS
	src/Win32ShMem.cpp
	)
ENDIF(WIN32)

################################################################################
# QT
set(FILES_TO_MOC
    ${PACPUS_INCLUDE_DIR}/Pacpus/PacpusTools/AsyncWorkerBase.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/PacpusTools/PeriodicWorker.h
    #${PACPUS_INCLUDE_DIR}/Pacpus/PacpusTools/PacpusSerialPort.h
)

qt_wrap_cpp(
    PROJECT_MOC_SRCS
    ${FILES_TO_MOC}
)

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

# LIBS
set(OPT_LIBRARIES
    optimized PacpusLib debug PacpusLib_d
)

if(WIN32)
    LIST(APPEND OPT_LIBRARIES
        optimized ROAD_TIME debug ROAD_TIME_d
)
endif()

# LINK
target_link_libraries(${PROJECT_NAME}
    ${QT_LIBRARIES}
    ${PACPUS_DEPENDENCIES_LIB}
    ${OPT_LIBRARIES}
)

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

################################################################################
# FOLDER
pacpus_folder(${PROJECT_NAME} "libraries")
