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

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

################################################################################
add_definitions(
    -DQT_NO_KEYWORDS
    ${QT_DEFINITIONS}
)

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

################################################################################
# LINK
link_directories(
    ${PROJECT_BINARY_DIR}/../RoadTime
    ${PROJECT_BINARY_DIR}/../FileLib
)

################################################################################
# FILES
set(PROJECT_HDRS
    ${EXPORT_HDR}

    ColorSeverityFormatter.hpp

    ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/cstdint.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/ComponentBase.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/ComponentFactory.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/ComponentFactoryBase.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/ComponentManager.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/Log.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/pacpus.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/PacpusApplication.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/PacpusException.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/road_time.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/XmlComponentConfig.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/XmlConfigFile.h

    ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/ConnectionBase.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/InputOutputBase.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/InputOutputInterface.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/PacpusEvent.h
 #   ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/pacpusStruct.h
)

set(PROJECT_SRCS
    ComponentBase.cpp
    ComponentFactoryBase.cpp
    ComponentManager.cpp
    ConnectionBase.cpp
    InputOutputBase.cpp
    Log.cpp
    PacpusApplication.cpp
    PacpusException.cpp
 #   PacpusStruct.cpp
    XmlComponentConfig.cpp
    XmlConfigFile.cpp
)

set(FILES_TO_MOC
    ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/InputOutputBase.h
    ${PACPUS_INCLUDE_DIR}/Pacpus/kernel/PacpusEvent.h
)

qt_wrap_cpp(PROJECT_MOC_SRCS
    ${FILES_TO_MOC}
)
 
################################################################################
# BUILD AND LINK
pacpus_add_library(${PROJECT_NAME} SHARED
    ${PROJECT_HDRS}
    ${PROJECT_SRCS}
    ${PROJECT_MOC_SRCS}
)

if(UNIX)
    set(OPT_LIBRARIES optimized FileLib debug FileLib_d)
else()
    set(OPT_LIBRARIES optimized ROAD_TIME debug ROAD_TIME_d)
endif()

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

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

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