Index: trunk/FACT++/CMakeLists.txt
===================================================================
--- trunk/FACT++/CMakeLists.txt	(revision 19975)
+++ trunk/FACT++/CMakeLists.txt	(revision 19976)
@@ -229,9 +229,35 @@
 FIND_PACKAGE_HANDLE_STANDARD_ARGS(Boost FOUND_VAR Boost_FOUND REQUIRED_VARS Boost_INCLUDE_DIR Boost_LIBRARIES)
 
-# =============== QT4 ==============
+# =============== Qt4/Qt5 ==============
 IF(NOT TOOLS_ONLY OR VIEWER_ONLY)
 
-FIND_PACKAGE(Qt4 REQUIRED QtCore QtGui QtOpenGL QtSql QtXml)
-FIND_PACKAGE(Qwt REQUIRED)
+   IF (NOT FORCE_QT5)
+      FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui QtOpenGL QtSql QtXml QUIET)
+   ENDIF()
+
+   IF(Qt4_FOUND)
+      FIND_PACKAGE_MESSAGE(Qt4Found "Found Qt4 [Core Gui OpenGL Sql Xml]" "[${Qt4_FOUND}]")
+      SET(Qt Qt4)
+      SET(QtCore QtCore)
+      SET(QtGui QtGui)
+      SET(QtOpenGL QtOpenGL)
+      SET(QtSql QtSql)
+      SET(QtXml QtXml)
+      ADD_DEFINITIONS(-DHAVE_QT4)
+   ELSE()
+      IF (NOT FORCE_QT5)
+         FIND_PACKAGE_MESSAGE(Qt4NotFound "Qt4 [or one of: Core Gui OpenGL Sql Xml] NOT found, trying Qt5!" "[${Qt4_FOUND}]")
+      ENDIF()
+      FIND_PACKAGE(Qt5 COMPONENTS Core Gui OpenGL Sql Xml REQUIRED)
+      FIND_PACKAGE_MESSAGE(Qt5Found2 "Found Qt5: fact GUI will be disabled" "[${Qt5_FOUND}]")
+      SET(Qt Qt5)
+      SET(QtCore Core)
+      SET(QtGui Gui)
+      SET(QtOpenGL OpenGL)
+      SET(QtSql Sql)
+      SET(QtXml Xml)
+   ENDIF()
+
+   FIND_PACKAGE(Qwt REQUIRED)
 
 ENDIF(NOT TOOLS_ONLY OR VIEWER_ONLY)
@@ -318,4 +344,15 @@
 
 ENDIF(NOT NO_ROOT AND NOT VIEWER_ONLY)
+
+# Note that in root 5.34/38 (and maybe others?) the ROOT_xxx_FOUND macros are broken
+IF (NOT ROOT_GQt_FOUND)
+   FIND_LIBRARY(ROOT_GQt_LIBRARY NAMES GQt PATHS ${ROOT_LIBRARY_DIR})
+   IF (ROOT_GQt_LIBRARY)
+      FIND_PACKAGE_MESSAGE(RootQGtLib "Found libGQt: ${ROOT_GQt_LIBRARY}" "[${ROOT_GQt_LIBRARY}]")
+      SET(ROOT_GQt_FOUND 1)
+   ELSE()
+      FIND_PACKAGE_MESSAGE(RootQGt "ROOT: libGQt not found, fact GUI disabled!" "[${ROOT_GQt_FOUND}]")
+   ENDIF()
+ENDIF()
 
 # -lGui -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree
@@ -824,5 +861,5 @@
 
 ADD_EXECUTABLE(gcn src/gcn.cc)
-TARGET_LINK_LIBRARIES(gcn ${FACT++LIBS} Qt4::QtXml)
+TARGET_LINK_LIBRARIES(gcn ${FACT++LIBS} ${Qt}::${QtXml})
 MANPAGE(gcn "")
 
@@ -836,5 +873,5 @@
 
 ADD_EXECUTABLE(lidctrl src/lidctrl.cc)
-TARGET_LINK_LIBRARIES(lidctrl ${FACT++LIBS} Qt4::QtXml)
+TARGET_LINK_LIBRARIES(lidctrl ${FACT++LIBS} ${Qt}::${QtXml})
 MANPAGE(lidctrl "")
 
@@ -856,5 +893,5 @@
 
 ADD_EXECUTABLE(pwrctrl src/pwrctrl.cc src/HeadersPower.cc)
-TARGET_LINK_LIBRARIES(pwrctrl ${FACT++LIBS} Qt4::QtXml)
+TARGET_LINK_LIBRARIES(pwrctrl ${FACT++LIBS} ${Qt}::${QtXml})
 MANPAGE(pwrctrl "")
 
@@ -896,5 +933,5 @@
 
 ADD_EXECUTABLE(tngweather src/tngweather.cc)
-TARGET_LINK_LIBRARIES(tngweather ${FACT++LIBS} Qt4::QtXml)
+TARGET_LINK_LIBRARIES(tngweather ${FACT++LIBS} ${Qt}::${QtXml})
 MANPAGE(tngweather "")
 
@@ -911,15 +948,23 @@
 IF (NOT TOOLS_ONLY OR VIEWER_ONLY)
 
-INCLUDE_DIRECTORIES(${QWT_INCLUDE_DIR}/qwt-qt4 gui gui/RawEventsViewer)
+INCLUDE_DIRECTORIES(${QWT_INCLUDE_DIR} gui gui/RawEventsViewer)
 
 # --------------------------------------------------------
 
-QT4_WRAP_UI(VIEWER_QT_HEADERS gui/RawEventsViewer/viewer.ui)
-
-QT4_WRAP_CPP(VIEWER_QT_SOURCES
+IF(QT4_FOUND)
+   QT4_WRAP_UI(VIEWER_QT_HEADERS gui/RawEventsViewer/viewer.ui)
+   QT4_WRAP_CPP(VIEWER_QT_SOURCES
 	gui/RawEventsViewer/RawEventsViewer.h
 	gui/BasicGlCamera.h
 	gui/QCameraWidget.h
 	gui/Q3DCameraWidget.h)
+ELSE()
+   QT5_WRAP_UI(VIEWER_QT_HEADERS gui/RawEventsViewer/viewer.ui)
+   QT5_WRAP_CPP(VIEWER_QT_SOURCES
+	gui/RawEventsViewer/RawEventsViewer.h
+	gui/BasicGlCamera.h
+	gui/QCameraWidget.h
+	gui/Q3DCameraWidget.h)
+ENDIF()
 
 ADD_EXECUTABLE(viewer
@@ -933,7 +978,7 @@
 TARGET_LINK_LIBRARIES(viewer
 	${Boost_LIBRARIES} Configuration
-        Qt4::QtGui Qt4::QtOpenGL
+        ${Qt}::${QtGui} ${Qt}::${QtOpenGL}
         ${OPENGL_LIBRARIES} # OpenGL::GL OpenGL::GLU
-        qwt-qt4 ZLIB::ZLIB)
+        ${QWT_LIBRARY} ZLIB::ZLIB)
 
 #ENDIF(NOT TOOLS_ONLY OR VIEWER_ONLY)
@@ -941,5 +986,5 @@
 # --------------------------------------------------------
 
-IF(NOT VIEWER_ONLY AND ROOT_GQt_FOUND)
+IF(NOT VIEWER_ONLY AND ROOT_GQt_FOUND AND Qt4_FOUND)
 
 QT4_ADD_RESOURCES(FACT_QT_RESOURCES gui/design.qrc)
@@ -968,7 +1013,7 @@
 	${FACT++LIBS}
         ${ROOT_LIBRARIES}
-        Qt4::QtGui Qt4::QtOpenGL Qt4::QtSql
+        ${Qt}::${QtGui} ${Qt}::${QtOpenGL} ${Qt}::${QtSql}
         ${OPENGL_LIBRARIES} # OpenGL::GL OpenGL::GLU
-	qwt-qt4 ZLIB::ZLIB)
+	${QWT_LIBRARY} ZLIB::ZLIB)
 
 
@@ -986,5 +1031,5 @@
 #test_LDADD = libStateMachine.la libTools.la libTime.la libDim++.la libDim.la libConfiguration.la
 
-ENDIF(NOT VIEWER_ONLY AND ROOT_GQt_FOUND)
+ENDIF(NOT VIEWER_ONLY AND ROOT_GQt_FOUND AND Qt4_FOUND)
 ENDIF(NOT TOOLS_ONLY OR VIEWER_ONLY)
 
@@ -1027,5 +1072,5 @@
 
 	ADD_EXECUTABLE(beaglectrl famous/src/beaglectrl.cc)
-	TARGET_LINK_LIBRARIES(beaglectrl ${FACT++LIBS}  Qt4::QtXml)
+	TARGET_LINK_LIBRARIES(beaglectrl ${FACT++LIBS} ${Qt}::${QtXml})
  	MANPAGE(beaglectrl "")
 ENDIF()
Index: trunk/FACT++/cmake/FindQwt.cmake
===================================================================
--- trunk/FACT++/cmake/FindQwt.cmake	(revision 19975)
+++ trunk/FACT++/cmake/FindQwt.cmake	(revision 19976)
@@ -4,6 +4,7 @@
 # Try to locate the package in the default path
 # and in the path provided by pkg-config
-FIND_PATH(QWT_INCLUDE_DIR NAMES qwt-qt4/qwt.h PATHS ${QWT_INCLUDE_DIRS})
-FIND_LIBRARY(QWT_LIBRARY NAMES qwt-qt4 PATHS ${QWT_LIBRARY_DIRS})
+#FIND_PATH(QWT_INCLUDE_DIR NAMES qwt-qt4/qwt.h qwt/qwt.h PATHS ${QWT_INCLUDE_DIRS})
+FIND_PATH(QWT_INCLUDE_DIR NAMES qwt.h PATHS ${QWT_INCLUDE_DIRS} PATH_SUFFIXES qwt qwt-qt4)
+FIND_LIBRARY(QWT_LIBRARY NAMES qwt qwt-qt4 PATHS ${QWT_LIBRARY_DIRS})
 
 # Check if QWT_LIBARARY and QWT_INCLUDE_DIR is set
