summaryrefslogblamecommitdiffstats
path: root/CMakeLists.txt
blob: e364528910498dbd44dd0751b01da861aaf88a53 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13












                                                                                

                                   

















                                                              








                                       














































                                                                                
                                               






















































































































































































                                                                                          
        














                           
           

















                                                                                
 





















































                                      

                                                                                     
           


                                                                                     




                                                                            
                                                  


                                                                                              
                                

                               

                                      
                                      


                                                                                    
                                                                                                                                                            




                                                            
################################################################################
# General
################################################################################

# set project's name
PROJECT( pvs )

# cmake min version
CMAKE_MINIMUM_REQUIRED( VERSION 2.6.2 )

# set compiler optimizations for debug and release
SET(CMAKE_BUILD_TYPE Debug)
SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -Wall")
SET(CMAKE_CXX_FLAGS_RELEASE "-O2" )
#-march=native -DQT_NO_DEBUG_OUTPUT

# local cmake modules
SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR})

#Test
SET(CMAKE_EDIT_COMMAND ${CMAKE_SOURCE_DIR})

# this command finds libraries and sets all required variables
FIND_PACKAGE( Qt4 4.5.0 REQUIRED )
FIND_PACKAGE( X11 REQUIRED )
FIND_PACKAGE( VNC REQUIRED )

# some includes
INCLUDE_DIRECTORIES(
    ${CMAKE_SOURCE_DIR}
    ${CMAKE_BINARY_DIR}
)

IF(WIN32)
    SET(sysdep_suffix _Win32)
	INCLUDE_DIRECTORIES(
        /c/KDE4/tmp/LibVNCServer-0.9.7/
    )
ELSEIF(UNIX)
    SET(sysdep_suffix _X11)
ENDIF(WIN32)

################################################################################
# Variables
################################################################################

# with SET() command you can change variables or define new ones.
# we define PVSMGR_SRCS variable that contains a list of all .cpp files
SET( PVSMGR_SRCS
    src/pvsmgr.cpp
    src/core/pvsClient.cpp
    src/core/pvsConnectionManager.cpp
    src/core/vncConnection.cpp
    src/core/pvsServer.cpp
    src/gui/mainWindow.cpp
    src/gui/connectionWindow.cpp
    src/gui/frame.cpp
    src/util/vncClientThread.cpp
    src/gui/connectionFrame.cpp
    src/gui/connectionList.cpp
    src/gui/profileDialog.cpp
    src/gui/dialog.cpp
    src/gui/serverChatDialog.cpp
    src/gui/projectionDialog.cpp
    src/gui/serverFileTransfert.cpp
    src/net/pvsMsg.cpp
    src/net/pvsListenServer.cpp
    src/net/pvsClientConnection.cpp
    src/net/pvsServiceBroadcast.cpp
    src/util/consoleLogger.cpp
    src/util/pvsSettingsManager.cpp
    src/util/util.cpp
    src/net/SslServer.cpp
    src/util/CertManager.cpp
    src/util/TextFile.cpp
    src/util/serviceDiscoveryUtil.cpp
    src/gui/aboutDialog.cpp
)

# pvs
SET( PVS_SRCS
    src/pvsDaemon.cpp
    src/pvs.cpp
    src/net/pvsMsg.cpp
    src/core/pvsChatMsg.cpp
    src/net/pvsServerConnection.cpp
    src/net/pvsLocalhostCommunicator.cpp
    src/util/util.cpp
    src/util/consoleLogger.cpp
    src/util/clientGUIUtils${sysdep_suffix}.cpp
    src/util/pvsSettingsManager.cpp
    src/core/pvsChatClient.cpp
    src/net/pvsServiceDiscovery.cpp
    src/net/pvsDiscoveredServer.cpp
    src/util/TextFile.cpp
    src/util/serviceDiscoveryUtil.cpp
)

# pvsgui
SET( PVSGUI_SRCS
    src/pvsgui.cpp
    src/gui/clientConfigDialog.cpp
    src/gui/clientFileSendDialog.cpp
    src/gui/clientFileReceiveDialog.cpp
    src/gui/clientChatDialog.cpp
    src/gui/clientVNCViewer.cpp
    src/gui/clientInfoDialog.cpp
    src/util/vncClientThread.cpp
    src/util/TextFile.cpp
    src/gui/aboutDialog.cpp
)


################################################################################
# Qt
################################################################################

# some .ui files (Qt)
SET( PVSMGR_UIS
    src/gui/ui/mainwindow.ui
    src/gui/ui/profileDialog.ui
    src/gui/ui/dialog.ui
    src/gui/ui/projectionDialog.ui
    src/gui/ui/aboutDialog.ui
    src/gui/ui/serverChatDialog.ui
    src/gui/ui/clientFileSendDialog.ui
)

SET( PVSMGRTOUCH_UIS
    src/gui/ui/mainwindowtouch.ui
    src/gui/ui/profileDialog.ui
    src/gui/ui/dialog.ui
    src/gui/ui/projectionDialog.ui
    src/gui/ui/aboutDialog.ui
    src/gui/ui/serverChatDialog.ui
)

SET( PVSGUI_UIS
    src/gui/ui/clientConfigDialog.ui
    src/gui/ui/clientFileSendDialog.ui
    src/gui/ui/clientFileReceiveDialog.ui
    src/gui/ui/clientChatDialog.ui
    src/gui/ui/clientInfoDialog.ui
    src/gui/ui/aboutDialog.ui
    src/gui/ui/clientToolbar.ui
    src/gui/ui/clientNicklistDialog.ui
)

# resource file (Qt)
SET( PVSMGR_RCS
    pvsmgr.qrc
)

SET( PVS_RCS
    pvs.qrc
)

SET( PVSGUI_RCS
    pvsgui.qrc
)

# includes all header files that should be treated with moc (Qt)
SET( PVSMGR_MOC_HDRS
    src/gui/mainWindow.h
    src/gui/connectionWindow.h
    src/gui/frame.h
    src/util/vncClientThread.h
    src/gui/connectionList.h
    src/gui/connectionFrame.h
    src/gui/profileDialog.h
    src/gui/dialog.h
    src/gui/projectionDialog.h    
    src/gui/serverChatDialog.h
    src/gui/serverFileTransfert.h
    src/net/pvsClientConnection.h
    src/net/pvsListenServer.h
    src/core/pvsClient.h
    src/core/vncConnection.h
    src/net/pvsServiceBroadcast.h
    src/net/SslServer.h
    src/gui/aboutDialog.h
)

SET( PVS_MOC_HDRS
    src/pvs.h
    src/net/pvsLocalhostCommunicator.h
    src/net/pvsServerConnection.h
    src/net/pvsServiceDiscovery.h
    src/net/pvsDiscoveredServer.h
)

SET( PVSGUI_MOC_HDRS
    src/pvsgui.h
    src/gui/clientConfigDialog.h
    src/gui/clientFileSendDialog.h
    src/gui/clientFileReceiveDialog.h
    src/gui/clientChatDialog.h
    src/gui/clientVNCViewer.h
    src/gui/clientInfoDialog.h
    src/util/vncClientThread.h
    src/gui/aboutDialog.h
)

# i18n (Qt)
SET( PVSMGR_TSS
    i18n/pvsmgr_de_DE.ts
    i18n/pvsmgr_fr_FR.ts
    i18n/pvsmgr_es_MX.ts
    i18n/pvsmgr_ar_JO.ts
    i18n/pvsmgr_pl_PL.ts
)

SET( PVS_TSS
    i18n/pvs_de_DE.ts
    i18n/pvs_fr_FR.ts
    i18n/pvs_es_MX.ts
    i18n/pvs_ar_JO.ts
    i18n/pvs_pl_PL.ts
)

SET( PVSGUI_TSS
    i18n/pvsgui_de_DE.ts
    i18n/pvsgui_fr_FR.ts
    i18n/pvsgui_es_MX.ts
    i18n/pvsgui_ar_JO.ts
    i18n/pvsgui_pl_PL.ts
)


# by default only QtCore and QtGui modules are enabled
# other modules must be enabled like this:
SET( QT_USE_QTDBUS TRUE )
SET( QT_USE_QTNETWORK TRUE )

# add some useful macros and variables
# (QT_USE_FILE is a variable defined by FIND_PACKAGE( Qt4 ) that contains
# a path to CMake script)
INCLUDE( ${QT_USE_FILE} )

# this command will generate rules that will run rcc on all files from 
# PVSCLIENTGUI_RCS. in result PVSCLIENTGUI_RC_SRCS variable will contain paths 
# to files produced by rcc  
QT4_ADD_RESOURCES( PVSMGR_RC_SRCS ${PVSMGR_RCS} )
QT4_ADD_RESOURCES( PVS_RC_SRCS ${PVS_RCS} )
QT4_ADD_RESOURCES( PVSGUI_RC_SRCS ${PVSGUI_RCS} )

# this will run uic on .ui files:
QT4_WRAP_UI( PVSMGR_UI_HDRS ${PVSMGR_UIS} )
QT4_WRAP_UI( PVSMGRTOUCH_UI_HDRS ${PVSMGRTOUCH_UIS} )
QT4_WRAP_UI( PVSGUI_UI_HDRS ${PVSGUI_UIS} )

# this will run moc:
QT4_WRAP_CPP( PVSMGR_MOC_SRCS ${PVSMGR_MOC_HDRS} )
QT4_WRAP_CPP( PVS_MOC_SRCS ${PVS_MOC_HDRS} )
QT4_WRAP_CPP( PVSGUI_MOC_SRCS ${PVSGUI_MOC_HDRS} )

# run qdbuscpp2xml
QT4_GENERATE_DBUS_INTERFACE( src/pvs.h org.openslx.pvs.xml )

# run qdbusxml2cpp
QT4_ADD_DBUS_ADAPTOR( PVS_SRCS ${CMAKE_BINARY_DIR}/org.openslx.pvs.xml src/pvs.h PVS )
QT4_ADD_DBUS_INTERFACE( PVSGUI_SRCS ${CMAKE_BINARY_DIR}/org.openslx.pvs.xml pvsinterface )

# i18n, run lupdate and lrelease)
QT4_CREATE_TRANSLATION( PVSMGR_QMS ${PVSMGR_SRCS} ${PVSMGR_UI_HDRS} ${PVSMGR_TSS} )
QT4_CREATE_TRANSLATION( PVS_QMS ${PVS_SRCS} ${PVS_TSS} )
QT4_CREATE_TRANSLATION( PVSGUI_QMS ${PVSGUI_SRCS} ${PVSGUI_UI_HDRS} ${PVSGUI_TSS} )

################################################################################
# Build
################################################################################

## here we instruct CMake to build our executable from all of the source files
if(UNIX)
ADD_EXECUTABLE( pvsmgr 
    ${PVSMGR_SRCS}
    ${PVSMGR_MOC_SRCS}
    ${PVSMGR_UI_HDRS}
    ${PVSMGR_RC_SRCS}
    ${PVSMGR_QMS}
)

ADD_EXECUTABLE( pvsmgrtouch
    ${PVSMGR_SRCS}
    ${PVSMGR_MOC_SRCS}
    ${PVSMGRTOUCH_UI_HDRS}
    ${PVSMGR_RC_SRCS}
    ${PVSMGR_QMS}
)
ENDIF(UNIX)

ADD_EXECUTABLE( pvs 
    ${PVS_SRCS}
    ${PVS_MOC_SRCS}
    ${PVS_RC_SRCS}
    ${PVS_QMS}
)

ADD_EXECUTABLE( pvsgui
    ${PVSGUI_SRCS}
    ${PVSGUI_MOC_SRCS}
    ${PVSGUI_UI_HDRS}
    ${PVSGUI_RC_SRCS}
    ${PVSGUI_QMS}
)

# last thing we have to do is to tell CMake what libraries our executable needs,
# luckily FIND_PACKAGE prepared variables for us:

IF(WIN32)
    TARGET_LINK_LIBRARIES( pvsmgr
        
    )
ELSEIF(UNIX)
TARGET_LINK_LIBRARIES( pvsmgr
        ${QT_LIBRARIES}
        ${VNC_LIBRARIES}
        ${X11_LIBRARIES}
    )
ENDIF(WIN32)

IF(WIN32)
    TARGET_LINK_LIBRARIES( pvsmgrtouch
        
    )
ELSEIF(UNIX)
    TARGET_LINK_LIBRARIES( pvsmgrtouch
        ${QT_LIBRARIES}
        ${VNC_LIBRARIES}
        ${X11_LIBRARIES}
    )
ENDIF(WIN32)

IF(WIN32)
    TARGET_LINK_LIBRARIES( pvs
        ${QT_LIBRARIES}
        ${VNC_LIBRARIES}
        advapi32
        ws2_32
    )
ELSEIF(UNIX)
    TARGET_LINK_LIBRARIES( pvs
        ${QT_LIBRARIES}
        ${VNC_LIBRARIES}
        ${X11_LIBRARIES}
    )
ENDIF(WIN32)

IF(WIN32)
    TARGET_LINK_LIBRARIES( pvsgui
        ${QT_LIBRARIES}
        ${VNC_LIBRARIES}
        #advapi32
        ws2_32
    )
ELSEIF(UNIX)
    TARGET_LINK_LIBRARIES( pvsgui
        ${QT_LIBRARIES}
        ${VNC_LIBRARIES}
    )
ENDIF(WIN32)

IF(UNIX)
SET_PROPERTY(TARGET pvsmgrtouch PROPERTY COMPILE_DEFINITIONS MAINWINDOW_USE_TOUCHGUI)
SET_PROPERTY(TARGET pvsmgr PROPERTY COMPILE_DEFINITIONS MAINWINDOW_USE_NORMALGUI)  
ENDIF(UNIX)

# add install target to our makefile
CONFIGURE_FILE( org.openslx.pvs.service ${CMAKE_BINARY_DIR}/org.openslx.pvs.service )
IF(WIN32)
    INSTALL( TARGETS pvs pvsgui RUNTIME DESTINATION bin )
ELSEIF(UNIX)
    INSTALL( TARGETS pvsmgr pvs pvsgui pvsmgrtouch RUNTIME DESTINATION bin )
ENDIF(WIN32)
INSTALL( PROGRAMS misc/pvs-vncsrv DESTINATION bin)
INSTALL( FILES ${CMAKE_BINARY_DIR}/org.openslx.pvs.service DESTINATION share/dbus-1/services )

# add package target to our makefile
SET( CPACK_GENERATOR "DEB;RPM" )
SET( CPACK_SET_DESTDIR "ON" )
SET( CPACK_PACKAGE_NAME "pvs" )
SET( CPACK_PACKAGE_VERSION_MAJOR "2" )
SET( CPACK_PACKAGE_VERSION_MINOR "0" )
SET( CPACK_PACKAGE_VERSION_PATCH "3" )
SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY "Pool Video Switch" )
SET( CPACK_PACKAGE_DESCRIPTION "")
SET( CPACK_PACKAGE_CONTACT "Simon Wittenberg <wittenb@informatik.uni-freiburg.de>" )
SET( CPACK_DEBIAN_PACKAGE_DEPENDS "libvncserver0 (>= 0.9.3.dfsg.1-2), libqtgui4 (>= 4:4.5.3-4), libqt4-dbus (>= 4:4.5.3-4), libqt4-network (>= 4:4.5.3-4)" )
SET( CPACK_DEBIAN_PACKAGE_ARCHITECTURE "i386" )
SET( CPACK_DEBIAN_PACKAGE_SECTION "Network" )
SET( CPACK_DEBIAN_PACKAGE_PRIORITY "optional" )
SET( CPACK_DEBIAN_PACKAGE_RECOMMENDS "x11vnc (>= 0.9.9-1)" )
INCLUDE( CPack ) # must be last!