]> Nutra Git (v2) - gamesguru/feather.git/commitdiff
support legacy Qt 5 flags, include src/CMakeLists.txt
authorgg <chown_tee@proton.me>
Thu, 15 Jan 2026 04:04:09 +0000 (23:04 -0500)
committergg <chown_tee@proton.me>
Thu, 15 Jan 2026 04:04:09 +0000 (23:04 -0500)
CMakeLists.txt
src/CMakeLists.txt

index 617a719624f4669cd306528ba28c80e969f2b3c4..8f2b83b4c4df71620cb638e344df8ab5c2d82496 100644 (file)
@@ -48,9 +48,10 @@ set(PACKAGE_URL "https://featherwallet.org/")
 set(COPYRIGHT_YEAR "2025")
 set(COPYRIGHT_HOLDERS "The Monero Project")
 
-cmake_policy(SET CMP0074 NEW)
+# Policies for better dependency finding
+cmake_policy(SET CMP0074 NEW) # find_package() uses <PackageName>_ROOT variables
 if(POLICY CMP0148)
-    cmake_policy(SET CMP0148 OLD)
+    cmake_policy(SET CMP0148 OLD) # Python modules
 endif()
 
 # Configurable options
@@ -304,6 +305,7 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MINGW_FLAG} -std=c11 ${C_SECURITY_FLAGS} $
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MINGW_FLAG} ${CXX_SECURITY_FLAGS} ${ANTI_AV_FLAGS}")
 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LD_SECURITY_FLAGS} ${STATIC_FLAGS}")
 
+# Ensure src sees all flags
 add_subdirectory(src)
 
 configure_file("${CMAKE_SOURCE_DIR}/contrib/installers/windows/setup.nsi.in" "${CMAKE_SOURCE_DIR}/contrib/installers/windows/setup.nsi" @ONLY)
index 1dcfc99077d80ff305708b6e92477b9bccd97e45..17d11cc522b2a4ff7a5abe3641b41d19cda4eaf5 100644 (file)
@@ -12,26 +12,46 @@ set(QT_COMPONENTS
         Network
         Svg
         WebSockets
-        SvgWidgets
 )
 
+# Qt6 has SvgWidgets separate, Qt5 includes it in Svg
+set(QT6_COMPONENTS ${QT_COMPONENTS} SvgWidgets)
+
 if (WITH_SCANNER)
     list(APPEND QT_COMPONENTS
             Multimedia
             MultimediaWidgets)
+    list(APPEND QT6_COMPONENTS Multimedia MultimediaWidgets)
 endif()
 
-IF (UNIX AND NOT APPLE)
-    list(APPEND QT_COMPONENTS WaylandClient)
+if (UNIX AND NOT APPLE)
+    list(APPEND QT6_COMPONENTS WaylandClient)
 endif()
 
-find_package(Qt6 REQUIRED COMPONENTS ${QT_COMPONENTS})
+# 1. Try to find complete Qt 6 (Quietly)
+find_package(Qt6 COMPONENTS ${QT6_COMPONENTS} QUIET)
+
+if (Qt6_FOUND)
+    message(STATUS "Qt 6 found! Building with Qt ${Qt6_VERSION}")
+    set(QT_MAJOR_VERSION 6)
+    set(QT_NAMESPACE "Qt6")
+else()
+    # 2. Fallback to Qt 5
+    message(STATUS "Qt 6 not found (or missing modules). Falling back to Qt 5...")
+    set(QT_MAJOR_VERSION 5)
+    set(QT_NAMESPACE "Qt5")
+    find_package(Qt5 REQUIRED COMPONENTS ${QT_COMPONENTS})
+endif()
 
 if (CHECK_UPDATES)
     add_subdirectory(openpgp)
 endif()
 
-qt_add_resources(RESOURCES assets.qrc assets_tor.qrc assets_docs.qrc)
+if (QT_MAJOR_VERSION EQUAL 6)
+    qt_add_resources(RESOURCES assets.qrc assets_tor.qrc assets_docs.qrc)
+else()
+    qt5_add_resources(RESOURCES assets.qrc assets_tor.qrc assets_docs.qrc)
+endif()
 
 # Compile source files (.h/.cpp)
 file(GLOB SOURCE_FILES
@@ -277,13 +297,12 @@ target_link_libraries(feather PRIVATE
         ${Boost_LIBRARIES}
         ${OPENSSL_LIBRARIES}
         ${EXTRA_LIBRARIES}
-        Qt::Core
-        Qt::Widgets
-        Qt::Gui
-        Qt::Network
-        Qt::Svg
-        Qt::WebSockets
-        Qt::SvgWidgets
+        ${QT_NAMESPACE}::Core
+        ${QT_NAMESPACE}::Widgets
+        ${QT_NAMESPACE}::Gui
+        ${QT_NAMESPACE}::Network
+        ${QT_NAMESPACE}::Svg
+        ${QT_NAMESPACE}::WebSockets
         Threads::Threads
         ${QRENCODE_LIBRARY}
         ${POLYSEED_LIBRARY}
@@ -292,6 +311,11 @@ target_link_libraries(feather PRIVATE
         ${ZLIB_LIBRARIES}
 )
 
+# Qt6 separates SvgWidgets; Qt5 bundles it. Link explicitly if Qt6.
+if (QT_MAJOR_VERSION EQUAL 6)
+    target_link_libraries(feather PRIVATE Qt6::SvgWidgets)
+endif()
+
 if(CHECK_UPDATES)
     target_link_libraries(feather PRIVATE openpgp)
 endif()
@@ -322,22 +346,24 @@ if (WITH_SCANNER)
     endif()
 
     target_link_libraries(feather PRIVATE
-            Qt::Multimedia
-            Qt::MultimediaWidgets
+            ${QT_NAMESPACE}::Multimedia
+            ${QT_NAMESPACE}::MultimediaWidgets
             ${ZXING_LIBRARIES}
             ${BCUR_LIBRARY}
     )
 endif()
 
 if(UNIX AND NOT APPLE)
-    target_link_libraries(feather PRIVATE Qt::WaylandClient)
+    if (QT_MAJOR_VERSION EQUAL 6)
+        target_link_libraries(feather PRIVATE Qt6::WaylandClient)
+    endif()
 endif()
 
-if(STATIC AND APPLE)
+if(STATIC AND APPLE AND QT_MAJOR_VERSION EQUAL 6)
     target_link_libraries(feather PRIVATE Qt6::QDarwinCameraPermissionPlugin)
 endif()
 
-if(STATIC AND UNIX AND NOT APPLE)
+if(STATIC AND UNIX AND NOT APPLE AND QT_MAJOR_VERSION EQUAL 6)
     target_link_libraries(feather PRIVATE Qt6::QComposePlatformInputContextPlugin)
     target_link_libraries(feather PRIVATE Qt6::QWaylandIntegrationPlugin)
 endif()
@@ -400,4 +426,6 @@ if(APPLE)
     file(COPY "${CMAKE_SOURCE_DIR}/src/assets/images/appicons/appicon.icns" DESTINATION "${CMAKE_SOURCE_DIR}/installed/feather.app/Contents/Resources/" )
 endif()
 
-qt_finalize_executable(feather)
+if (COMMAND qt_finalize_executable)
+    qt_finalize_executable(feather)
+endif()