PROJECT (INTROLAB-VNH2SP30)

cmake_minimum_required(VERSION 2.6)

########################
# Configurations
########################

SET(VERSION 1.0.0)
SET(CPACK_PACKAGE_VERSION "${VERSION}")
SET(CPACK_PACKAGE_VERSION_MAJOR "1")
SET(CPACK_PACKAGE_VERSION_MINOR "0")
SET(CPACK_PACKAGE_VERSION_PATCH "0")

SET(CMAKE_BUILD_TYPE Release )

IF(WIN32)
	MESSAGE( STATUS "Windows version: " ${CMAKE_SYSTEM})
	SET(CMAKE_INSTALL_PREFIX "$ENV{SYSTEMDRIVE}/VNH2SP30-${CMAKE_BUILD_TYPE}")
	MESSAGE( STATUS "Install directory is : " ${CMAKE_INSTALL_PREFIX})
ELSE(WIN32)
	SET(CMAKE_INSTALL_PREFIX "/usr/local")
ENDIF(WIN32)


#finding qt
find_package(Qt4 REQUIRED)


INCLUDE(InstallRequiredSystemLibraries)


# the next line sets up include and link directories and defines some variables that we will use.
# you can modify the behavior by setting some variables, e.g.
#   set(QT_USE_OPENGL TRUE)
# -> this will cause cmake to include and link against the OpenGL module

SET(QT_USE_QTNETWORK TRUE)
SET(QT_USE_QTSVG TRUE)

include(${QT_USE_FILE})


SET(VNH2SP30_SRCS
	DriveView.cpp
	MainWindow.cpp
	SerialDriver.cpp
	qextserialbase.cpp       
	qextserialport.cpp
	qextserialenumerator.cpp
	SerialMessage.cpp
)

SET(VNH2SP30_HEADERS 
	DriveView.h
	SharedVariables.h
	MainWindow.h
	SerialDriver.h
	qextserialenumerator.h 
	qextserialbase.h       
	qextserialport.h
	CANMessage.h
	SerialMessage.h
)

SET(VNH2SP30_UIS
	DriveView.ui
	MainWindow.ui
	MLA.ui
	MRA.ui
	MRN.ui
)

SET(qrc 

)

#POSIX/UNIX SPECIFIC FILES & DEFINES
IF (UNIX)
    ADD_DEFINITIONS(-D_TTY_POSIX_)
        SET(VNH2SP30_SRCS ${VNH2SP30_SRCS} posix_qextserialport.cpp)
        SET(VNH2SP30_HEADERS ${VNH2SP30_HEADERS} posix_qextserialport.h)
ENDIF(UNIX)

#WINDOWS SPECIFIC FILES & DEFINES
IF (WIN32)
        SET(VNH2SP30_SRCS ${VNH2SP30_SRCS} win_qextserialport.cpp)
        SET(VNH2SP30_HEADERS ${VNH2SP30_HEADERS} win_qextserialport.h)
ENDIF(WIN32)


# generate rules for building source files from the resources
QT4_ADD_RESOURCES(SRCS_QRC ${qrc})

SET (QTVERSION "${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}")

SET (QT_DLL
	"C:/Qt/${QTVERSION}/bin/Qt3Support4.dll"
	"C:/Qt/${QTVERSION}/bin/QtAssistantClient4.dll"
	"C:/Qt/${QTVERSION}/bin/QtCore4.dll"
	"C:/Qt/${QTVERSION}/bin/QtDesigner4.dll"
	"C:/Qt/${QTVERSION}/bin/QtDesignerComponents4.dll"
	"C:/Qt/${QTVERSION}/bin/QtGui4.dll"
	"C:/Qt/${QTVERSION}/bin/QtHelp4.dll"
	"C:/Qt/${QTVERSION}/bin/QtNetwork4.dll"
	"C:/Qt/${QTVERSION}/bin/QtOpenGL4.dll"
	"C:/Qt/${QTVERSION}/bin/QtScript4.dll"
	"C:/Qt/${QTVERSION}/bin/QtSql4.dll"
	"C:/Qt/${QTVERSION}/bin/QtSvg4.dll"
	"C:/Qt/${QTVERSION}/bin/QtTest4.dll"
	"C:/Qt/${QTVERSION}/bin/QtWebKit4.dll"
	"C:/Qt/${QTVERSION}/bin/QtXml4.dll"
	"./qwt/WIN32/lib/qwt5.dll"
	"C:/MinGW/bin/mingwm10.dll"
)

#This will generate ui_* for Qt
QT4_WRAP_UI(VNH2SP30_UI_SRCS ${VNH2SP30_UIS})

#This will generate moc_* for Qt
QT4_WRAP_CPP(VNH2SP30_MOC_SRCS ${VNH2SP30_HEADERS})

#include files
IF (WIN32)
	INCLUDE_DIRECTORIES({QT_INCLUDE_DIR} ./qwt/WIN32/include)
	add_executable(VNH2SP30 ${VNH2SP30_SRCS} main.cpp ${VNH2SP30_MOC_SRCS} ${VNH2SP30_UI_SRCS} ${SRCS_QRC} ${VNH2SP30_HEADERS} )
	set_target_properties(VNH2SP30 PROPERTIES LINK_FLAGS "--enable-auto-import")
	target_link_libraries(VNH2SP30  ${QT_LIBRARIES} -L./qwt/WIN32/lib -lqwt5)
	
	INSTALL(TARGETS VNH2SP30 DESTINATION bin)
	
	#Install DLLS
	INSTALL( FILES ${QT_DLL} DESTINATION bin)
	
	
	########################
	# Packaging stuff
	########################
	SET(CPACK_SOURCE_GENERATOR "ZIP")
	SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING.txt")
	SET(CPACK_PACKAGE_NAME "VNH2SP30")
	SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "VNH2SP30")
	SET(CPACK_PACKAGE_VENDOR "Dominic Letourneau")
	SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.txt")
	SET(CPACK_PACKAGE_CONTACT "dominic.letourneau@usherbrooke.ca")
	SET(CPACK_PACKAGE_INSTALL_DIRECTORY "VNH2SP30")
	SET(CPACK_NSIS_URL_INFO_ABOUT "http://introlab.gel.usherbrooke.ca")
	SET(CPACK_NSIS_CONTACT "dominic.letourneau@usherbrooke.ca")
	SET(CPACK_NSIS_MODIFY_PATH ON)
	SET(CPACK_PACKAGE_EXECUTABLES "VNH2SP30" "VNH2SP30")
	
	INCLUDE(CPack)


ENDIF (WIN32)

IF (APPLE)
	INCLUDE_DIRECTORIES({QT_INCLUDE_DIR} ./qwt/OSX/include)
	add_executable(VNH2SP30 ${VNH2SP30_SRCS} main.cpp ${VNH2SP30_MOC_SRCS} ${VNH2SP30_UI_SRCS} ${SRCS_QRC} ${VNH2SP30_HEADERS} )
	set_target_properties(VNH2SP30 PROPERTIES LINK_FLAGS "--enable-auto-import")
	target_link_libraries(VNH2SP30  ${QT_LIBRARIES} -L./qwt/OSX/lib -lqwt)
ENDIF (APPLE)

