summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt134
1 files changed, 38 insertions, 96 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5e1b550..8bbbb20 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,9 +1,21 @@
################################################################################
# General
################################################################################
+cmake_minimum_required(VERSION 3.15 FATAL_ERROR)
+
+set(pvs2_BUILD_TYPES Release Debug)
+get_property(multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+if(multi_config)
+ set(CMAKE_CONFIGURATION_TYPES "${pvs2_BUILD_TYPES}" CACHE STRING "list of supported configuration types" FORCE)
+else()
+ set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build Type of the project.")
+ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "${pvs2_BUILD_TYPES}")
+ if(NOT CMAKE_BUILD_TYPE IN_LIST pvs2_BUILD_TYPES)
+ message(FATAL_ERROR "Invalid build type '${CMAKE_BUILD_TYPE}'. Possible values:\n ${pvs2_BUILD_TYPES}")
+ endif()
+endif()
PROJECT(pvs2)
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12 FATAL_ERROR)
SET(EXTRA_C_FLAGS "" CACHE STRING "Additional options to pass to C compiler")
SET(EXTRA_CXX_FLAGS "" CACHE STRING "Additional options to pass to C++ compiler")
@@ -15,7 +27,11 @@ SET(CMAKE_CXX_FLAGS_RELEASE "-O2")
# -Wshadow spams too much :/
SET(CMAKE_CXX_STANDARD 11)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11 ${EXTRA_C_FLAGS}")
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 ${EXTRA_CXX_FLAGS}")
+SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-multichar -Wno-error=deprecated-declarations ${EXTRA_CXX_FLAGS}" )
+
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_AUTORCC ON)
+set(CMAKE_AUTOUIC ON)
# local cmake modules
SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
@@ -26,14 +42,13 @@ FIND_PACKAGE(X11 REQUIRED)
FIND_PACKAGE(VNC REQUIRED)
SET(CMAKE_INCLUDE_CURRENT_DIR ON)
-SET(CMAKE_AUTOMOC ON)
# some includes
-INCLUDE_DIRECTORIES(
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_CURRENT_BINARY_DIR}
- ${X11_INCLUDE_DIR}
-)
+#INCLUDE_DIRECTORIES(
+# ${CMAKE_CURRENT_SOURCE_DIR}
+# ${CMAKE_CURRENT_BINARY_DIR}
+# ${X11_INCLUDE_DIR}
+#)
IF(X11_Xscreensaver_FOUND)
ADD_DEFINITIONS(-DX11_Xscreensaver_FOUND)
@@ -78,20 +93,27 @@ FILE(GLOB PVSCLIENT_SRCS
################################################################################
# .ui files
-FILE(GLOB PVSMGR_UIS
- gui/server_normal/*.ui
+FILE(GLOB_RECURSE PVSMGR_UIS
+ src/server/*.ui
)
-FILE(GLOB PVSCLIENT_UIS
- gui/client/*.ui
+FILE(GLOB_RECURSE PVSCLIENT_UIS
+ src/client/*.ui
)
# .qrc files
+# Copy these to build dir since the paths inside are relative, and this is where the translations end up
+configure_file(res/pvsmgr_ts.qrc ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
+configure_file(res/pvsclient_ts.qrc ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
+
FILE(GLOB PVSMGR_RC_SRCS
- pvsmgr.qrc
+ res/pvsmgr.qrc
+ ${CMAKE_CURRENT_BINARY_DIR}/pvsmgr_ts.qrc
+
)
FILE(GLOB PVSCLIENT_RC_SRCS
- pvsclient.qrc
+ res/pvsclient.qrc
+ ${CMAKE_CURRENT_BINARY_DIR}/pvsclient_ts.qrc
)
# i18n
@@ -103,57 +125,12 @@ FILE(GLOB PVSCLIENT_TSS
i18n/client/*.ts
)
-
-# this will run uic on .ui files
-QT5_WRAP_UI(PVSMGR_UI_HDRS ${PVSMGR_UIS})
-QT5_WRAP_UI(PVSCLIENT_UI_HDRS ${PVSCLIENT_UIS})
-
-# this will run moc
-#QT4_WRAP_CPP(PVSMGR_MOC_SRCS ${PVSMGR_MOC_HDRS})
-#QT4_WRAP_CPP(PVSCLIENT_MOC_SRCS ${PVSCLIENT_MOC_HDRS})
-
-option(UPDATE_TRANSLATIONS "Update .ts files (WARNING: make clean will delete the .ts files!)" OFF)
-
if(PVSMGR_TSS)
-
- if (UPDATE_TRANSLATIONS)
- set(FILES_TO_TRANSLATE ${PVSMGR_SRCS} ${PVSMGR_UIS})
- QT5_CREATE_TRANSLATION(PVSMGR_QMS ${FILES_TO_TRANSLATE} ${PVSMGR_TSS} OPTIONS -noobsolete)
- message(STATUS ".tr files have been updated")
- else (UPDATE_TRANSLATIONS)
- QT5_ADD_TRANSLATION(PVSMGR_QMS ${PVSMGR_TSS})
- endif (UPDATE_TRANSLATIONS)
- # # write a resource file for qm files
- # set(resource_file_content "<RCC>\n <qresource prefix=\"/\">\n")
- # foreach(file ${PVSMGR_QMS})
- # get_filename_component(filename ${file} NAME)
- # set(resource_file_content "${resource_file_content} <file>${filename}</file>\n")
- # endforeach(file)
- # set(resource_file_content "${resource_file_content} </qresource>\n</RCC>\n")
- # file(WRITE "${CMAKE_BINARY_DIR}/ts_pvsmgr.qrc" "${resource_file_content}")
- # set(PVSMGR_RESOURCES ${PVSMGR_RESOURCES} "${CMAKE_BINARY_DIR}/ts_pvsmgr.qrc")
-
+ QT5_CREATE_TRANSLATION(PVSMGR_QMS ${PVSMGR_UIS} ${PVSMGR_SRCS} ${PVSMGR_TSS} OPTIONS -noobsolete)
endif(PVSMGR_TSS)
if(PVSCLIENT_TSS)
-
- if (UPDATE_TRANSLATIONS)
- set(FILES_TO_TRANSLATE ${PVSCLIENT_SRCS} ${PVSCLIENT_UIS})
- QT5_CREATE_TRANSLATION(PVSCLIENT_QMS ${FILES_TO_TRANSLATE} ${PVSCLIENT_TSS} OPTIONS -noobsolete)
- message(STATUS ".tr files have been updated")
- else (UPDATE_TRANSLATIONS)
- QT5_ADD_TRANSLATION(PVSCLIENT_QMS ${PVSCLIENT_TSS})
- endif (UPDATE_TRANSLATIONS)
- # # write a resource file for qm files
- # set(resource_file_content "<RCC>\n <qresource prefix=\"/\">\n")
- # foreach(file ${PVSCLIENT_QMS})
- # get_filename_component(filename ${file} NAME)
- # set(resource_file_content "${resource_file_content} <file>${filename}</file>\n")
- # endforeach(file)
- # set(resource_file_content "${resource_file_content} </qresource>\n</RCC>\n")
- # file(WRITE "${CMAKE_BINARY_DIR}/ts_pvsclient.qrc" "${resource_file_content}")
- # set(PVSCLIENT_RESOURCES ${PVSCLIENT_RESOURCES} "${CMAKE_BINARY_DIR}/ts_pvsclient.qrc")
-
+ QT5_CREATE_TRANSLATION(PVSCLIENT_QMS ${PVSCLIENT_UIS} ${PVSCLIENT_SRCS} ${PVSCLIENT_TSS} OPTIONS -noobsolete)
endif(PVSCLIENT_TSS)
# this will run rcc on .qrc files
@@ -167,8 +144,6 @@ QT5_ADD_RESOURCES(PVSCLIENT_RCS ${PVSCLIENT_RC_SRCS})
ADD_EXECUTABLE(pvsmgr
${PVSMGR_SRCS}
${PVSMGR_RCS}
-# ${PVSMGR_MOC_SRCS}
- ${PVSMGR_UI_HDRS}
${PVSMGR_RC_SRCS}
${PVSMGR_QMS}
)
@@ -176,8 +151,6 @@ ADD_EXECUTABLE(pvsmgr
ADD_EXECUTABLE(pvsclient
${PVSCLIENT_SRCS}
${PVSCLIENT_RCS}
-# ${PVSCLIENT_MOC_SRCS}
- ${PVSCLIENT_UI_HDRS}
${PVSCLIENT_RC_SRCS}
${PVSCLIENT_QMS}
)
@@ -188,7 +161,6 @@ TARGET_LINK_LIBRARIES(pvsmgr
Qt5::Widgets
Qt5::Svg
Qt5::X11Extras
-# ${VNC_LIBRARIES}
${X11_LIBRARIES}
${X11_Xscreensaver_LIB}
)
@@ -204,33 +176,3 @@ SET_PROPERTY(TARGET pvsmgr PROPERTY COMPILE_DEFINITIONS MAINWINDOW_USE_NORMALGUI
# install
INSTALL(TARGETS pvsmgr pvsclient RUNTIME DESTINATION bin)
-#INSTALL(PROGRAMS misc/pvs-vncsrv DESTINATION bin)
-#INSTALL(FILES misc/pvsclient.conf misc/pvsmgr.conf DESTINATION /etc/openslx)
-#INSTALL(FILES misc/pvsclient.desktop DESTINATION /etc/xdg/autostart)
-
-# uninstall
-CONFIGURE_FILE(
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Uninstall.cmake"
- "${CMAKE_CURRENT_BINARY_DIR}/cmake/Uninstall.cmake"
- IMMEDIATE @ONLY
-)
-ADD_CUSTOM_TARGET(uninstall
- "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake/Uninstall.cmake"
-)
-
-# package
-SET( CPACK_GENERATOR "DEB" )
-SET( CPACK_SET_DESTDIR "ON" )
-SET( CPACK_PACKAGE_NAME "pvs" )
-SET( CPACK_PACKAGE_VERSION_MAJOR "3" )
-SET( CPACK_PACKAGE_VERSION_MINOR "1" )
-SET( CPACK_PACKAGE_VERSION_PATCH "2" )
-SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY "Pool Video Switch" )
-SET( CPACK_PACKAGE_DESCRIPTION "")
-SET( CPACK_PACKAGE_CONTACT "Johann Latocha <johann@latocha.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 )