Files
gwenhywfar/0002-Support-building-for-Qt6.patch
Christophe Marin f73cc9307c - Add patches for Qt 6 support:
* 0001-Fix-name-of-output-variable.patch
  * 0002-Support-building-for-Qt6.patch
  * 0003-Adjusted-expression-to-work-correclty-using-Qt5-and-.patch
  * 0004-Add-missing-files-to-AC_CONFIG_FILES.patch
  * 0005-Prevent-configuration-for-Qt5-and-Qt6-at-the-same-ti.patch
  * 0006-Improve-configuration-on-systems-with-Qt5-and-Qt6-in.patch
  * 0007-Remove-debug-output.patch
- Spec cleanup

- Add patch:
  * gwenhywfar-gcc15.patch

OBS-URL: https://build.opensuse.org/package/show/Office/gwenhywfar?expand=0&rev=59
2025-06-27 08:29:02 +00:00

407 lines
14 KiB
Diff

From 19643821b41833544cbe2822e18da589673f1b24 Mon Sep 17 00:00:00 2001
From: Thomas Baumgart <thb@net-bembel.de>
Date: Mon, 16 Jun 2025 20:12:10 +0200
Subject: [PATCH 2/7] Support building for Qt6
---
gui/qt5/Makefile.am | 22 ++--
gui/qt5/gwengui-qt5-config.cmake.in | 18 +--
gui/qt5/gwengui-qt5.pc.in | 8 +-
gui/qt5/gwengui-qt6-config-version.cmake.in | 1 +
gui/qt5/gwengui-qt6-config.cmake.in | 1 +
gui/qt5/gwengui-qt6.pc.in | 1 +
gwenhywfar-config.cmake.in | 10 ++
m4/ax_have_qt.m4 | 128 ++++++++++++++------
8 files changed, 129 insertions(+), 60 deletions(-)
create mode 120000 gui/qt5/gwengui-qt6-config-version.cmake.in
create mode 120000 gui/qt5/gwengui-qt6-config.cmake.in
create mode 120000 gui/qt5/gwengui-qt6.pc.in
diff --git a/gui/qt5/Makefile.am b/gui/qt5/Makefile.am
index 96787b2..f7462a3 100644
--- a/gui/qt5/Makefile.am
+++ b/gui/qt5/Makefile.am
@@ -5,26 +5,26 @@ qt5_moc = @QT_MOC@
qt5_uic = @QT_UIC@
pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = gwengui-qt5.pc
+pkgconfig_DATA = gwengui-qt@QT_MAJOR_VERSION@.pc
-cmakeconfigdir = $(libdir)/cmake/gwengui-qt5-@GWENHYWFAR_VERSION_MAJOR@.@GWENHYWFAR_VERSION_MINOR@
-cmakeconfig_DATA = gwengui-qt5-config.cmake gwengui-qt5-config-version.cmake
+cmakeconfigdir = $(libdir)/cmake/gwengui-qt@QT_MAJOR_VERSION@-@GWENHYWFAR_VERSION_MAJOR@.@GWENHYWFAR_VERSION_MINOR@
+cmakeconfig_DATA = gwengui-qt@QT_MAJOR_VERSION@-config.cmake gwengui-qt@QT_MAJOR_VERSION@-config-version.cmake
-lib_LTLIBRARIES=libgwengui-qt5.la
+lib_LTLIBRARIES=libgwengui-qt@QT_MAJOR_VERSION@.la
noinst_PROGRAMS=libtest
noinst_HEADERS=
-libgwengui_qt5_la_LIBADD=$(QT_LIBS) $(top_builddir)/src/$(gwenhywfar_internal_libname) $(builddir)/../cpp/libgwengui-cpp.la
-libgwengui_qt5_la_LDFLAGS=-no-undefined -version-info \
+libgwengui_qt@QT_MAJOR_VERSION@_la_LIBADD=$(QT_LIBS) $(top_builddir)/src/$(gwenhywfar_internal_libname) $(builddir)/../cpp/libgwengui-cpp.la
+libgwengui_qt@QT_MAJOR_VERSION@_la_LDFLAGS=-no-undefined -version-info \
$(GWENHYWFAR_SO_CURRENT):$(GWENHYWFAR_SO_REVISION):$(GWENHYWFAR_SO_AGE)
-libgwengui_qt5_la_SOURCES=\
+libgwengui_qt@QT_MAJOR_VERSION@_la_SOURCES=\
qt5dialogbox.cpp \
qt5_gui.cpp \
qt5_gui_dialog.cpp
-nodist_libgwengui_qt5_la_SOURCES=
+nodist_libgwengui_qt@QT_MAJOR_VERSION@_la_SOURCES=
nodist_noinst_HEADERS=
@@ -67,7 +67,7 @@ EXTRA_DIST=$(UI_FILES) \
w_spinbox.cpp
libtest_SOURCES=libtest.cpp
-libtest_LDADD=libgwengui-qt5.la $(top_builddir)/src/$(gwenhywfar_internal_libname) $(QT_LIBS) \
+libtest_LDADD=libgwengui-qt@QT_MAJOR_VERSION@.la $(top_builddir)/src/$(gwenhywfar_internal_libname) $(QT_LIBS) \
$(top_builddir)/gui/cpp/libgwengui-cpp.la \
$(builddir)/../testdialogs/libgwengui-test.la
@@ -82,7 +82,7 @@ SUFFIXES = .ui .ui.hpp .ui.cpp .moc
sources:
- for f in $(libgwengui_qt5_la_SOURCES) $(foreach uifile,$(UI_FILES),$(uifile).cpp); do \
+ for f in $(libgwengui_qt@QT_MAJOR_VERSION@_la_SOURCES) $(foreach uifile,$(UI_FILES),$(uifile).cpp); do \
echo $(subdir)/$$f >>$(top_srcdir)/qtsources; \
done
for d in $(SUBDIRS); do \
@@ -95,5 +95,5 @@ built_sources: $(BUILT_SOURCES)
done ;
-BUILT_SOURCES = $(MOC_FILES) $(nodist_libgwengui_qt5_la_SOURCES)
+BUILT_SOURCES = $(MOC_FILES) $(nodist_libgwengui_qt@QT_MAJOR_VERSION@_la_SOURCES)
CLEANFILES = $(BUILT_SOURCES)
diff --git a/gui/qt5/gwengui-qt5-config.cmake.in b/gui/qt5/gwengui-qt5-config.cmake.in
index 98375ac..8cfebd1 100644
--- a/gui/qt5/gwengui-qt5-config.cmake.in
+++ b/gui/qt5/gwengui-qt5-config.cmake.in
@@ -20,8 +20,8 @@ endmacro()
include(CMakeFindDependencyMacro)
find_dependency(gwengui-cpp "@GWENHYWFAR_VERSION_STRING@")
-find_dependency(Qt5Core)
-find_dependency(Qt5Widgets)
+find_dependency(Qt@QT_MAJOR_VERSION@Core)
+find_dependency(Qt@QT_MAJOR_VERSION@Widgets)
set_and_check(prefix "@prefix@")
@@ -29,21 +29,21 @@ set_and_check(exec_prefix "@exec_prefix@")
set_and_check(includedir "@includedir@")
set_and_check(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIRS "@gwenhywfar_headerdir@")
if(WIN32)
- set_and_check(${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES "@libdir@/libgwengui-qt5.dll.a")
+ set_and_check(${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES "@libdir@/libgwengui-qt@QT_MAJOR_VERSION@.dll.a")
elseif(APPLE)
- set_and_check(${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES "@libdir@/libgwengui-qt5.dylib")
+ set_and_check(${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES "@libdir@/libgwengui-qt@QT_MAJOR_VERSION@.dylib")
else()
- set_and_check(${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES "@libdir@/libgwengui-qt5.so")
+ set_and_check(${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES "@libdir@/libgwengui-qt@QT_MAJOR_VERSION@.so")
endif()
set(${CMAKE_FIND_PACKAGE_NAME}_FOUND true)
-if(NOT TARGET gwenhywfar::gui-qt5)
- add_library(gwenhywfar::gui-qt5 UNKNOWN IMPORTED)
- set_target_properties(gwenhywfar::gui-qt5 PROPERTIES
+if(NOT TARGET gwenhywfar::gui-qt@QT_MAJOR_VERSION@)
+ add_library(gwenhywfar::gui-qt@QT_MAJOR_VERSION@ UNKNOWN IMPORTED)
+ set_target_properties(gwenhywfar::gui-qt@QT_MAJOR_VERSION@ PROPERTIES
IMPORTED_LOCATION "${${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIRS}"
- INTERFACE_LINK_LIBRARIES "gwenhywfar::core;gwenhywfar::gui-cpp;Qt5::Core;Qt5::Widgets"
+ INTERFACE_LINK_LIBRARIES "gwenhywfar::core;gwenhywfar::gui-cpp;Qt@QT_MAJOR_VERSION@::Core;Qt@QT_MAJOR_VERSION@::Widgets"
)
endif()
diff --git a/gui/qt5/gwengui-qt5.pc.in b/gui/qt5/gwengui-qt5.pc.in
index b514a6a..ec0ed8e 100644
--- a/gui/qt5/gwengui-qt5.pc.in
+++ b/gui/qt5/gwengui-qt5.pc.in
@@ -1,4 +1,4 @@
-# pkg-config configuration for gwengui_qt5
+# pkg-config configuration for gwengui_qt@QT_MAJOR_VERSION@
# For information about the syntax, see pkg-config(1)
# General installation directories
@@ -13,11 +13,11 @@ bindir=@bindir@
sysconfdir=@sysconfdir@
# Human-readable name
-Name: gwengui-qt5
+Name: gwengui-qt@QT_MAJOR_VERSION@
# Human-readable description
-Description: QT5 Implementation of the GWEN_DIALOG framework.
+Description: Qt@QT_MAJOR_VERSION@ Implementation of the GWEN_DIALOG framework.
Version: @VERSION@
-Libs: -L@libdir@ -lgwengui-qt5 -lgwengui-cpp
+Libs: -L@libdir@ -lgwengui-qt@QT_MAJOR_VERSION@ -lgwengui-cpp
Cflags: -I@includedir@
diff --git a/gui/qt5/gwengui-qt6-config-version.cmake.in b/gui/qt5/gwengui-qt6-config-version.cmake.in
new file mode 120000
index 0000000..f834d96
--- /dev/null
+++ b/gui/qt5/gwengui-qt6-config-version.cmake.in
@@ -0,0 +1 @@
+gwengui-qt5-config-version.cmake.in
\ No newline at end of file
diff --git a/gui/qt5/gwengui-qt6-config.cmake.in b/gui/qt5/gwengui-qt6-config.cmake.in
new file mode 120000
index 0000000..906db7d
--- /dev/null
+++ b/gui/qt5/gwengui-qt6-config.cmake.in
@@ -0,0 +1 @@
+gwengui-qt5-config.cmake.in
\ No newline at end of file
diff --git a/gui/qt5/gwengui-qt6.pc.in b/gui/qt5/gwengui-qt6.pc.in
new file mode 120000
index 0000000..c9e883f
--- /dev/null
+++ b/gui/qt5/gwengui-qt6.pc.in
@@ -0,0 +1 @@
+gwengui-qt5.pc.in
\ No newline at end of file
diff --git a/gwenhywfar-config.cmake.in b/gwenhywfar-config.cmake.in
index f5f0944..4913738 100644
--- a/gwenhywfar-config.cmake.in
+++ b/gwenhywfar-config.cmake.in
@@ -68,6 +68,16 @@ if ( NOT ${FIND_GWEN_COMPONENT_QT5} EQUAL -1 )
endif()
endif()
+list(FIND GWENHYWFAR_FIND_COMPONENTS "qt6" FIND_GWEN_COMPONENT_QT6)
+if ( NOT ${FIND_GWEN_COMPONENT_QT6} EQUAL -1 )
+ find_package(gwengui-qt6 "@GWENHYWFAR_VERSION_STRING@" EXACT)
+ if ( gwengui-qt6_FOUND )
+ set( GWENHYWFAR_INCLUDE_DIRS ${GWENHYWFAR_INCLUDE_DIRS} ${gwengui-qt6_INCLUDE_DIRS} )
+ set( GWENHYWFAR_LIBRARIES ${GWENHYWFAR_LIBRARIES} ${gwengui-qt6_LIBRARIES} )
+ set( GWENHYWFAR_qt6_FOUND true )
+ endif()
+endif()
+
check_required_components(GWENHYWFAR)
# The target is available since gwenhywfar 4.15.3
diff --git a/m4/ax_have_qt.m4 b/m4/ax_have_qt.m4
index f035a81..88075fa 100644
--- a/m4/ax_have_qt.m4
+++ b/m4/ax_have_qt.m4
@@ -25,18 +25,13 @@
# QT_LRELEASE
# QT_LUPDATE
# QT_DIR
+# QMAKE
#
# which respectively contain an "-I" flag pointing to the Qt include
# directory, link flags necessary to link with Qt and X, the full path to
# the meta object compiler and the user interface compiler both, and
# finally the variable QTDIR as Qt likes to see it defined.
#
-# Also the usually unneeded var
-#
-# QT_QMAKE
-#
-# to qmake is defined.
-#
# Example lines for Makefile.in:
#
# CXXFLAGS = @QT_CXXFLAGS@
@@ -60,7 +55,7 @@
# and this notice are preserved. This file is offered as-is, without any
# warranty.
-#serial 17
+#serial 27
AU_ALIAS([BNV_HAVE_QT], [AX_HAVE_QT])
AC_DEFUN([AX_HAVE_QT],
@@ -69,19 +64,32 @@ AC_DEFUN([AX_HAVE_QT],
AC_REQUIRE([AC_PATH_X])
AC_REQUIRE([AC_PATH_XTRA])
- AC_ARG_WITH(qt5-qmake,
- [ --with-qt5-qmake=FILE uses given qmake],
- [QT_QMAKE="$withval"],
- [QT_QMAKE="qmake"]
+ # openSUSE leap 15.3 installs qmake-qt5, not qmake, for example.
+ # Store the full name (like qmake-qt5) into QMAKE
+ # and the specifier (like -qt5 or empty) into am_have_qt_qmexe_suff.
+ AC_ARG_VAR([QMAKE],[Qt make tool])
+ AC_CHECK_TOOLS([QMAKE],[qmake qmake-qt6 qmake6 qmake-qt5],[false])
+
+ AC_ARG_WITH(qmake,
+ [ --with-qmake=FILE uses given qmake],
+ [QMAKE="$withval"],
+ []
)
+
+ AC_CHECK_TOOLS([QTPATHS],[qtpaths qtpaths-qt6 qtpaths6 qtpaths-qt5 qtpaths5],[false])
+
AC_MSG_CHECKING(for Qt)
+ am_have_qt_qmexe_suff=`echo $QMAKE | sed 's,^.*qmake,,'`
# If we have Qt5 or later in the path, we're golden
- ver=`$QT_QMAKE --version | grep -o "Qt version ."`
+ ver=`$QMAKE --version | grep -o "Qt version ."`
+
if test "$ver" ">" "Qt version 4"; then
+ QT_MAJOR_VERSION="5"
have_qt=yes
# This pro file dumps qmake's variables, but it only works on Qt 5 or later
am_have_qt_dir=`mktemp -d`
am_have_qt_pro="$am_have_qt_dir/test.pro"
+ am_have_qt_stash="$am_have_qt_dir/.qmake.stash"
am_have_qt_makefile="$am_have_qt_dir/Makefile"
# http://qt-project.org/doc/qt-5/qmake-variable-reference.html#qt
cat > $am_have_qt_pro << EOF
@@ -89,37 +97,87 @@ win32 {
CONFIG -= debug_and_release
CONFIG += release
}
+qtHaveModule(axcontainer): QT += axcontainer
+qtHaveModule(axserver): QT += axserver
+qtHaveModule(concurrent): QT += concurrent
qtHaveModule(core): QT += core
+qtHaveModule(dbus): QT += dbus
+qtHaveModule(declarative): QT += declarative
+qtHaveModule(designer): QT += designer
qtHaveModule(gui): QT += gui
-qtHaveModule(widgets): QT += widgets
+qtHaveModule(help): QT += help
+qtHaveModule(multimedia): QT += multimedia
+qtHaveModule(multimediawidgets): QT += multimediawidgets
+qtHaveModule(network): QT += network
+qtHaveModule(opengl): QT += opengl
+qtHaveModule(printsupport): QT += printsupport
+qtHaveModule(qml): QT += qml
+qtHaveModule(qmltest): QT += qmltest
+qtHaveModule(x11extras): QT += x11extras
+qtHaveModule(script): QT += script
+qtHaveModule(scripttools): QT += scripttools
+qtHaveModule(sensors): QT += sensors
+qtHaveModule(serialport): QT += serialport
+qtHaveModule(sql): QT += sql
+qtHaveModule(svg): QT += svg
+qtHaveModule(testlib): QT += testlib
+qtHaveModule(uitools): QT += uitools
+qtHaveModule(webkit): QT += webkit
+qtHaveModule(webkitwidgets): QT += webkitwidgets
+qtHaveModule(xml): QT += xml
+qtHaveModule(xmlpatterns): QT += xmlpatterns
percent.target = %
percent.commands = @echo -n "\$(\$(@))\ "
QMAKE_EXTRA_TARGETS += percent
EOF
- $QT_QMAKE $am_have_qt_pro -o $am_have_qt_makefile
+ $QMAKE $am_have_qt_pro -o $am_have_qt_makefile
QT_CXXFLAGS=`cd $am_have_qt_dir; make -s -f $am_have_qt_makefile CXXFLAGS INCPATH`
QT_LIBS=`cd $am_have_qt_dir; make -s -f $am_have_qt_makefile LIBS`
- rm $am_have_qt_pro $am_have_qt_makefile
+ rm $am_have_qt_pro $am_have_qt_stash $am_have_qt_makefile
rmdir $am_have_qt_dir
+ ver=`$QTPATHS --version | cut -d' ' -f 2`
+ if test "$ver" '>' "1"; then
+ QT_MAJOR_VERSION="6"
+ # Add QT_HOST_BINS and QT_HOST_LIBEXECS paths to PATH
+ for var in QT_HOST_BINS QT_HOST_LIBEXECS; do
+ PATH=$PATH:`$QTPATHS --query $var`
+ done
+ fi
+
# Look for specific tools in $PATH
- AC_ARG_WITH(qt5-moc,
- [ --with-qt5-moc=FILE uses given qt moc],
- [QT_MOC="$withval"],
- [QT_MOC=`which moc`]
- )
- AC_ARG_WITH(qt5-uic,
- [ --with-qt5-uic=FILE uses given qt uic],
- [QT_UIC="$withval"],
- [QT_UIC=`which uic`]
- )
-
- QT_RCC=`which rcc`
- QT_LRELEASE=`which lrelease`
- QT_LUPDATE=`which lupdate`
+ AC_ARG_VAR([QT_MOC],[Qt moc tool])
+ AC_PATH_PROG([QT_MOC],[moc$am_have_qt_qmexe_suff])
+ if test "$QT_MOC" = ""; then
+ AC_PATH_PROG([QT_MOC],[moc])
+ fi
+
+ AC_ARG_VAR([QT_UIC],[Qt uic tool])
+ AC_PATH_PROG([QT_UIC],[uic$am_have_qt_qmexe_suff])
+ if test "$QT_UIC" = ""; then
+ AC_PATH_PROG([QT_UIC],[uic])
+ fi
+
+ AC_ARG_VAR([QT_RCC],[Qt rcc tool])
+ AC_PATH_PROG([QT_RCC],[rcc$am_have_qt_qmexe_suff])
+ if test "$QT_RCC" = ""; then
+ AC_PATH_PROG([QT_RCC],[rcc])
+ fi
+
+ AC_ARG_VAR([QT_LRELEASE],[Qt lrelease tool])
+ AC_PATH_PROG([QT_LRELEASE],[lrelease$am_have_qt_qmexe_suff])
+ if test "$QT_LRELEASE" = ""; then
+ AC_PATH_PROG([QT_LRELEASE],[lrelease])
+ fi
+
+ AC_ARG_VAR([QT_LUPDATE],[Qt lupdate tool])
+ AC_PATH_PROG([QT_LUPDATE],[lupdate$am_have_qt_qmexe_suff])
+ if test "$QT_LUPDATE" = ""; then
+ AC_PATH_PROG([QT_LUPDATE],[lupdate])
+ fi
# Get Qt version from qmake
- QT_DIR=`$QT_QMAKE --version | grep -o -E /.+`
+ QT_DIR=`$QMAKE --version | grep -o -E /.+`
# All variables are defined, report the result
AC_MSG_RESULT([$have_qt:
@@ -130,7 +188,8 @@ EOF
QT_MOC=$QT_MOC
QT_RCC=$QT_RCC
QT_LRELEASE=$QT_LRELEASE
- QT_LUPDATE=$QT_LUPDATE])
+ QT_LUPDATE=$QT_LUPDATE
+ QT_MAJOR_VERSION=$QT_MAJOR_VERSION])
else
# Qt was not found
have_qt=no
@@ -142,16 +201,13 @@ EOF
QT_RCC=
QT_LRELEASE=
QT_LUPDATE=
+ QT_MAJOR_VERSION=
AC_MSG_RESULT($have_qt)
fi
AC_SUBST(QT_CXXFLAGS)
AC_SUBST(QT_DIR)
AC_SUBST(QT_LIBS)
- AC_SUBST(QT_UIC)
- AC_SUBST(QT_MOC)
- AC_SUBST(QT_RCC)
- AC_SUBST(QT_LRELEASE)
- AC_SUBST(QT_LUPDATE)
+ AC_SUBST(QT_MAJOR_VERSION)
#### Being paranoid:
if test x"$have_qt" = xyes; then
--
2.50.0