project(CanGateway)
################################################################################

add_definitions( -DCANGATEWAY_EXPORTS )
add_definitions( -DDBTRAWCANREADER_EXPORTS )

# ========================================
# Configure qt4
# ========================================
#if(QT4_FOUND)
#  set(QT_USE_QTXML true)
#  set(QT_USE_QTNETWORK true)
#  include(${QT_USE_FILE})
#else()
#  message(ERROR "Qt4 needed")
#endif()

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

# ========================================
# Include directories
# ========================================
include_directories(
  ${PROJECT_BINARY_DIR}
  ${QT_INCLUDE_DIR}
)

# ========================================
# Link directories
# ========================================
link_directories( 
	${PACPUS_LIB_DIR}
	${CanGateway_SOURCE_DIR}/driver/libs
	${CanGateway_SOURCE_DIR}/driver/libs/kvaser/MS
)


pacpus_plugin(PLUGIN_CPP PLUGIN_H ${PROJECT_NAME} )

# ========================================
# List of sources
# ========================================
set(
    PROJECT_SRCS
	CanFrameBase.h
    	CanDecoderBase.cpp
    	CanDecoderBase.h
    	CanGateway.cpp
    	CanGateway.h
    	CanSubscription.cpp
    	CanSubscription.h
    	Win32CanInterface.cpp
    	Win32CanInterface.h
	DbtRawCanReader.h
    	DbtRawCanReader.cpp
	structureCan.h
	#driver/KVaserCanDriver.cpp
	#driver/KVaserCanDriver.h
    ${PLUGIN_CPP}
)

if(WIN32)
    list(APPEND PROJECT_SRCS
        # Works only on Windows XP
		#driver/VectorCanDriver.cpp
        #driver/VectorCanDriver.h
        
		driver/XLVectorCanDriver.cpp
        driver/XLVectorCanDriver.h
	driver/PeakCanDriverWin.h
	driver/PeakCanDriverWin.cpp
    )
endif(WIN32)
if(UNIX)
    list(APPEND PROJECT_SRCS
#        driver/PeakCanDriver.cpp
        driver/PeakCanDriver.h
	driver/igepCanDriver.h
	driver/igepCanDriver.cpp
    )
endif(UNIX)

# ========================================
# Files to MOC
# ========================================

set(
    FILES_TO_MOC
    CanGateway.h
    DbtRawCanReader.h
    ${PLUGIN_H}
)

set(
    UI_FILES
)

# ========================================
# Call MOC
# ========================================
qt_wrap_cpp(
    PROJECT_MOC_SRCS
    ${FILES_TO_MOC}
)

qt_wrap_ui(
    PROJECT_UI_SRCS
    ${UI_FILES}
)

# ========================================
# Build a library
# ========================================
pacpus_add_library(
    ${PROJECT_NAME} SHARED
    ${PROJECT_SRCS}
    ${PROJECT_MOC_SRCS}
    ${PROJECT_UI_SRCS}
)

# ========================================
# Libraries
# ========================================
if(WIN32)
    set(LIBS
        # add your specific libraries to link here
        
		# Works only on Windows XP
		#optimized vcandm32.lib  debug vcandm32.lib
        optimized vxlapi.lib    debug vxlapi.lib
		optimized PCANBasic.lib debug PCANBasic.lib
		#optimized canlib32.lib  debug canlib32.lib
    )
endif(WIN32)

if(UNIX)
    set(LIBS
        # add your specific libraries to link here
        # pcan
        canlib
    )
endif(UNIX)

# All the platform
target_link_libraries(
    ${PROJECT_NAME}
    ${PACPUS_LIBRARIES}
    ${QT_LIBRARIES}
    ${PACPUS_DEPENDENCIES_LIB}
    ${LIBS}
    #optimized PacpusTools debug PacpusTools_d
)
pacpus_folder(${PROJECT_NAME} "components")

# ========================================
# Install
# ========================================
# install plugin
pacpus_install(${PROJECT_NAME})
# install headers
install(
    DIRECTORY
        ${CanGateway_SOURCE_DIR}
    DESTINATION
        ${PACPUS_INSTALL_DIR}/include
    FILES_MATCHING PATTERN "*.h"
)
# if WIN32 install driver dependencies
