From 4ac767d54cf03a94026d9931a1bd38047cf44e71 Mon Sep 17 00:00:00 2001
From: Armorial <thienan.cao@ensiie.fr>
Date: Thu, 13 Oct 2022 19:38:37 +0200
Subject: [PATCH] Begin to use Qt6 instead of Qt5

---
 CMakeLists.txt                    | 24 +++++++++---------------
 inc/lektor/internal/os.h          |  4 ++--
 src/module/qt_window/mpvwidget.hh |  2 +-
 to_install                        |  2 ++
 4 files changed, 14 insertions(+), 18 deletions(-)
 create mode 100644 to_install

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6e394f2e..6d637221 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -101,6 +101,7 @@ set(Clang_C_FLAGS
 )
 set(Clang_CXX_FLAGS
     $<$<COMPILE_LANGUAGE:CXX>:-Wno-c++98-compat-pedantic>
+    $<$<COMPILE_LANGUAGE:CXX>:-Wno-c++20-compat>
     $<$<COMPILE_LANGUAGE:CXX>:-Wno-redundant-parens>
     $<$<COMPILE_LANGUAGE:CXX>:-Wno-inconsistent-missing-override>
     $<$<COMPILE_LANGUAGE:CXX>:-Wno-suggest-override>
@@ -120,8 +121,7 @@ find_library(MPV_LIBRARY        mpv                   REQUIRED)
 find_library(SQLITE3_LIBRARY    sqlite3               REQUIRED version>=3.31.0)   # tested with 3.34.1
 
 find_package(CURL                                     REQUIRED HTTP HTTPS)        # tested with 7.74.0
-find_package(QT NAMES Qt6 Qt5      COMPONENTS Widgets REQUIRED)
-find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED)
+find_package(Qt6      COMPONENTS REQUIRED Widgets OpenGL)
 
 set(CMAKE_AUTOUIC ON)
 set(CMAKE_AUTOMOC ON)
@@ -281,20 +281,15 @@ add_custom_command(OUTPUT ${SQL_GENERATED_FILE}
     COMMENT "Generating SQL included files to embed them"
 )
 
-if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
     qt_add_executable(lektord
         MANUAL_FINALIZATION
         ${lektord_SOURCES}
         ${SQL_GENERATED_FILE}
     )
-else()
-    add_executable(lektord
-        ${lektord_SOURCES}
-        ${SQL_GENERATED_FILE}
-    )
-endif()
 add_executable(lkt  ${lkt_SOURCES})
 
+set_property(TARGET lektord PROPERTY CXX_STANDARD 20)
+
 set(MANPAGES_COMMANDS)
 if(GENERATE_MANPAGES)
     message(STATUS "Generating manpages")
@@ -318,7 +313,8 @@ target_link_libraries(lektord PRIVATE
     ${CMAKE_DL_LIBS}
     ${SQLITE3_LIBRARY}
     ${CURL_LIBRARIES}
-    Qt${QT_VERSION_MAJOR}::Widgets
+    Qt::Widgets
+    Qt::OpenGL
 )
 target_link_libraries(lkt PRIVATE
     ${OpenMP_C_LIBRARIES}
@@ -351,8 +347,6 @@ target_compile_options(lkt PRIVATE
     ${${CMAKE_C_COMPILER_ID}_${CMAKE_C_COMPILER_ID}_C_FLAGS}
 )
 
-set_property(TARGET lektord PROPERTY CXX_STANDARD 20)
-
 set_directory_properties(PROPERTIES EP_PREFIX ${CMAKE_BINARY_DIR}/Rust)
 
 ExternalProject_Add(amadeus_rs
@@ -384,7 +378,8 @@ add_dependencies(lektord liblektor_rs)
 target_link_libraries(lektord
     PRIVATE
     "${CMAKE_SOURCE_DIR}/src/rust/target/${RUST_BUILD_TYPE}/liblektor_rs.a"
-    Qt${QT_VERSION_MAJOR}::Widgets
+    Qt::Widgets
+    Qt::OpenGL
 )
 
 ###                    ###
@@ -414,6 +409,5 @@ foreach(CMD IN LISTS MANPAGE_COMMANDS)
     )
 endforeach()
 
-if(QT_VERSION_MAJOR EQUAL 6)
     qt_finalize_executable(lektord)
-endif()
+
diff --git a/inc/lektor/internal/os.h b/inc/lektor/internal/os.h
index c2f6d62d..49611b52 100644
--- a/inc/lektor/internal/os.h
+++ b/inc/lektor/internal/os.h
@@ -74,12 +74,12 @@ enum {
 typedef void (*function_ptr)(void);
 
 /* Attributes */
-#define noreturn             __attribute__((noreturn))
+// #define noreturn             __attribute__((noreturn))
 #define UNUSED               __attribute__((unused))
 #define UNUSED_FUNCTION      UNUSED
 #define CONSTRUCTOR_FUNCTION __attribute__((constructor)) static void
 #define DESTRUCTOR_FUNCTION  __attribute__((destructor)) static void
-#define EXIT_FUNCTION        noreturn void
+#define EXIT_FUNCTION        __attribute__((noreturn)) void
 #define PRIVATE_FUNCTION     UNUSED_FUNCTION static inline
 #define FALLTHROUGH          __attribute__((fallthrough))
 
diff --git a/src/module/qt_window/mpvwidget.hh b/src/module/qt_window/mpvwidget.hh
index 4814bd79..31a5b1b7 100644
--- a/src/module/qt_window/mpvwidget.hh
+++ b/src/module/qt_window/mpvwidget.hh
@@ -1,6 +1,6 @@
 #pragma once
 
-#include <QtWidgets/QOpenGLWidget>
+#include <QtOpenGLWidgets/QOpenGLWidget>
 #include <mpv/client.h>
 #include <mpv/render_gl.h>
 #include <QtGui>
diff --git a/to_install b/to_install
new file mode 100644
index 00000000..f1dc015b
--- /dev/null
+++ b/to_install
@@ -0,0 +1,2 @@
+qt6-base qt6-declarative qt6-imageformats qt6-location qt6-multimedia qt6-quickcontrols2 qt6-sensors qt6-speech qt6-svg qt6-tools qt6-translations qt6-virtualkeyboard qt6-wayland qt6-webchannel qt6-webengine
+
-- 
GitLab