Project

General

Profile

Feature #1674 ยป 0008-Drop-autotools-support-for-gtk4x-client.patch

Marko Lindqvist, 09/06/2025 02:03 PM

View differences:

Makefile.am
m4/gettimeofday.m4 \
m4/gtk3.22-client.m4 \
m4/gtk4-client.m4 \
m4/gtk5-client.m4 \
m4/host-cpu-c-abi.m4 \
m4/iconv.m4 \
m4/intl.m4 \
bootstrap/Makefile.am
langstat_ruledit.txt \
org.freeciv.gtk322.desktop \
org.freeciv.gtk4.desktop \
org.freeciv.gtk4x.desktop \
org.freeciv.sdl2.desktop \
org.freeciv.sdl3.desktop \
org.freeciv.qt.desktop \
org.freeciv.server.desktop \
org.freeciv.gtk3.mp.desktop \
org.freeciv.gtk4.mp.desktop \
org.freeciv.gtk4x.mp.desktop \
org.freeciv.qt.mp.desktop \
org.freeciv.ruledit.desktop \
org.freeciv.gtk322.metainfo.xml.in \
org.freeciv.gtk4.metainfo.xml.in \
org.freeciv.gtk4x.metainfo.xml.in \
org.freeciv.sdl2.metainfo.xml.in \
org.freeciv.sdl3.metainfo.xml.in \
org.freeciv.qt.metainfo.xml.in \
org.freeciv.server.metainfo.xml.in \
org.freeciv.gtk3.mp.metainfo.xml.in \
org.freeciv.gtk4.mp.metainfo.xml.in \
org.freeciv.gtk4x.mp.metainfo.xml.in \
org.freeciv.qt.mp.metainfo.xml.in \
org.freeciv.ruledit.metainfo.xml.in \
config.rpath \
......
desktopfile_DATA += org.freeciv.gtk4.desktop
endif
if CLIENT_GUI_GTK_5
metainfofile_DATA += org.freeciv.gtk4x.metainfo.xml
desktopfile_DATA += org.freeciv.gtk4x.desktop
endif
if CLIENT_GUI_QT
metainfofile_DATA += org.freeciv.qt.metainfo.xml
desktopfile_DATA += org.freeciv.qt.desktop
client/Makefile.am
GUI_SUBDIRS += gui-gtk-4.0
endif
if CLIENT_GUI_GTK_5
GUI_SUBDIRS += gui-gtk-5.0
endif
if CLIENT_GUI_QT
GUI_SUBDIRS += gui-qt
endif
......
$(gui_gtk4_libs)
endif
if CLIENT_GUI_GTK_5
bin_PROGRAMS += freeciv-gtk4x
noinst_LTLIBRARIES += libfcgui-gtk5.la
libfcgui_gtk5_la_SOURCES = $(freeciv_client_src)
libfcgui_gtk5_la_LIBADD = gui-gtk-5.0/libgui-gtk5.la $(clientlibs)
freeciv_gtk4x_SOURCES = dummy.c
freeciv_gtk4x_LDFLAGS = $(gui_gtk4_ldflags)
freeciv_gtk4x_LDADD = \
libfcgui-gtk5.la $(SOUND_LIBS) gui-gtk-5.0/gui_main.lo \
$(top_builddir)/common/libfreeciv.la \
$(INTLLIBS) $(CLIENT_LIBS) $(CLIENTICON) \
$(TINYCTHR_LIBS) $(MAPIMG_WAND_LIBS) \
$(gui_gtk5_libs)
endif
if CLIENT_GUI_SDL2
bin_PROGRAMS += freeciv-sdl2
noinst_LTLIBRARIES += libfcgui-sdl2.la
configure.ac
done
AC_ARG_ENABLE([fcmp],
AS_HELP_STRING([--enable-fcmp=no/yes/gtk3/gtk4/gtk4x/qt/cli/all/auto], [build freeciv-modpack-program [auto]]),
AS_HELP_STRING([--enable-fcmp=no/yes/gtk3/gtk4/qt/cli/all/auto], [build freeciv-modpack-program [auto]]),
[fc_mp=${enableval}],
[fc_mp=auto])
fcmp_cli=no
fcmp_gtk3=no
fcmp_gtk4=no
fcmp_gtk5=no
fcmp_qt=no
fcmp_list=
......
req_fcmp_gtk3=yes
elif test "x$mp" = "xgtk4" ; then
req_fcmp_gtk4=yes
elif test "x$mp" = "xgtk4x" ; then
req_fcmp_gtk5=yes
elif test "x$mp" = "xqt" ; then
req_fcmp_qt=yes
elif test "x$mp" = "xcli" ; then
......
dnl all: Autodetect as many as possible.
dnl comma-separated-list: Detect these or abort.
AC_ARG_ENABLE([client],
AS_HELP_STRING([--enable-client=auto/all/gtk3.22/sdl2/qt/gtk4/gtk4x/stub],
AS_HELP_STRING([--enable-client=auto/all/gtk3.22/sdl2/qt/gtk4/stub],
[clients to compile [auto](list for multiple)]),
[clients=${enableval}],
[client=auto])
gui_gtk3_22=no
gui_gtk4=no
gui_gtk5=no
gui_sdl2=no
gui_qt=no
gui_stub=no
......
gui_gtk3_22=yes
elif test "x$gui" = "xgtk4" ; then
gui_gtk4=yes
elif test "x$gui" = "xgtk4x" ; then
gui_gtk5=yes
elif test "x$gui" = "xgtk" ; then
AC_MSG_WARN([for requested client 'gtk' enabled gtk3.22-client, that has changed since earlier versions and will change again in the future])
gui_gtk3_22=yes
......
dnl SDL2-specific overrides
FC_SDL2_CLIENT
dnl Gtk-5.0-specific overrides
FC_GTK5_CLIENT
dnl Stub-specific overrides
if test "x$gui_stub" = "xyes" || test "x$client" = "xall" ; then
gui_stub=yes
......
if test "x$client" = "xall" ; then
if test "x$gui_gtk3_22" = "xyes" ||
test "x$gui_gtk4" = "xyes" ||
test "x$gui_gtk5" = "xyes" ||
test "x$gui_sdl2" = "xyes" ||
test "x$gui_qt" = "xyes" ||
test "x$gui_stub" = "xyes" ; then
......
Maybe another --with-qtver value would help?])
fi
if test "x$req_fcmp_gtk5" = "xyes" ||
test "x$modinst" = "xall" || test "x$modinst" = "xauto" ; then
PKG_CHECK_MODULES([GTK5_MP], [gtk4 >= 4.14.0],
[
GTK5_MP_CFLAGS="$GTK5_MP_CFLAGS -DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_4_14"
GTK5_MP_CFLAGS="$GTK5_MP_CFLAGS -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_76"
PKG_CHECK_MODULES([GTHREAD_GTK5], [gthread-2.0],
[
fcmp_gtk5=yes
fcmp_list="$fcmp_list gtk4x"
mp_gtk5_cflags="$GTK5_MP_CFLAGS $GTHREAD_GTK5_CFLAGS"
mp_gtk5_libs="$GTK5_MP_LIBS $GTHREAD_GTK5_LIBS"
if test "x$MINGW" = "xyes"; then
dnl Required to compile gtk5 on Windows platform
mp_gtk5_cflags="$mp_gtk5_cflags -mms-bitfields"
mp_gtk5_ldflags="$mp_gtk5_ldflags $MWINDOWS_FLAG"
fi
if test "x$modinst" = "xauto" ; then
modinst=found
fi
], [fcmp_gtk5=no])], [fcmp_gtk5=no])
fi
if test "x$req_fcmp_gtk5" = "xyes" && test "x$fcmp_gtk5" != "xyes" ; then
AC_MSG_ERROR([Cannot build gtk4x-version of freeciv-modpack as requested])
fi
dnl Cli does not satisfy --enable-fcmp=auto as it's not an gui.
if test "x$req_fcmp_cli" = "xyes" || test "x$modinst" = "xall" ; then
fcmp_cli=yes
......
test "x$modinst" != "xcli" &&
test "x$fcmp_gtk3" != "xyes" &&
test "x$fcmp_gtk4" != "xyes" &&
test "x$fcmp_gtk5" != "xyes" &&
test "x$fcmp_qt" != "xyes" ;then
AC_MSG_ERROR([Cannot build modpack installer with any gui])
fi
......
dnl Hack to get a run-time icon -- not needed on Windows
mp_gtk3_cflags="$mp_gtk3_cflags -DMPICON_PATH=\"\\\"$datadir/freeciv/misc/mpicon.png\\\"\""
mp_gtk4_cflags="$mp_gtk4_cflags -DMPICON_PATH=\"\\\"$datadir/freeciv/misc/mpicon.png\\\"\""
mp_gtk5_cflags="$mp_gtk5_cflags -DMPICON_PATH=\"\\\"$datadir/freeciv/misc/mpicon.png\\\"\""
fi
if test "x$fcmp_list" = "x" ; then
......
AM_CONDITIONAL([MODINST], [test "x$modinst" != "xno"])
AM_CONDITIONAL([MODINST_GTK3], [test "x$fcmp_gtk3" = "xyes"])
AM_CONDITIONAL([MODINST_GTK4], [test "x$fcmp_gtk4" = "xyes"])
AM_CONDITIONAL([MODINST_GTK5], [test "x$fcmp_gtk5" = "xyes"])
AM_CONDITIONAL([MODINST_QT], [test "x$fcmp_qt" = "xyes"])
AM_CONDITIONAL([MODINST_CLI], [test "x$fcmp_cli" = "xyes"])
......
AC_SUBST([gui_gtk4_cflags])
AC_SUBST([gui_gtk4_libs])
AC_SUBST([gui_gtk4_ldflags])
AC_SUBST([gui_gtk5_cflags])
AC_SUBST([gui_gtk5_libs])
AC_SUBST([gui_gtk5_ldflags])
AC_SUBST([gui_sdl2_cflags])
AC_SUBST([gui_sdl2_libs])
AC_SUBST([gui_sdl2_ldflags])
......
AC_SUBST([mp_gtk4_cflags])
AC_SUBST([mp_gtk4_libs])
AC_SUBST([mp_gtk4_ldflags])
AC_SUBST([mp_gtk5_cflags])
AC_SUBST([mp_gtk5_libs])
AC_SUBST([mp_gtk5_ldflags])
AC_SUBST([mp_qt_cppflags])
AC_SUBST([mp_qt_cxxflags])
AC_SUBST([mp_qt_libs])
......
AM_CONDITIONAL(CLIENT_GUI_SDL2, test "x$gui_sdl2" = "xyes")
AM_CONDITIONAL(CLIENT_GUI_GTK_3_22, test "x$gui_gtk3_22" = "xyes")
AM_CONDITIONAL(CLIENT_GUI_GTK_4, test "x$gui_gtk4" = "xyes")
AM_CONDITIONAL(CLIENT_GUI_GTK_5, test "x$gui_gtk5" = "xyes")
AM_CONDITIONAL(CLIENT_GUI_QT, test "x$gui_qt" = "xyes")
AM_CONDITIONAL(CLIENT_GUI_STUB, test "x$gui_stub" = "xyes")
AM_CONDITIONAL(MINGW, test x"$MINGW" = "xyes")
......
SDL2: $gui_sdl2
Stub: $gui_stub
In-development client frontends:
(these are not yet ready for general use)
Gtk-4.x: $gui_gtk5
== Server ==
Build freeciv server: $server
AI modules support: $enable_aimodules
data/themes/Makefile.am
if CLIENT_GUI_GTK_4
SUBDIRS += gtk4
else
if CLIENT_GUI_GTK_5
SUBDIRS += gtk4
endif
endif
if CLIENT_GUI_SDL2
m4/gtk5-client.m4
# Try to configure the GTK-4.x client (gui-gtk-5.0)
# FC_GTK5_CLIENT
# Test for GTK-5.0 libraries needed for gui-gtk-4.x
AC_DEFUN([FC_GTK5_CLIENT],
[
if test "x$gui_gtk5" = "xyes" ||
test "x$client" = "xall" || test "x$client" = "xauto" ; then
PKG_CHECK_MODULES([GTK5], [gtk4 >= 4.14.0],
[
GTK5_CFLAGS="$GTK5_CFLAGS -DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_4_8"
GTK5_CFLAGS="$GTK5_CFLAGS -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_76"
gui_gtk5=yes
if test "x$client" = "xauto" ; then
client=yes
fi
gui_gtk5_cflags="$GTK5_CFLAGS"
gui_gtk5_libs="$GTK5_LIBS"
if test "x$MINGW" = "xyes"; then
dnl Required to compile gtk5 on Windows platform
gui_gtk5_cflags="$gui_gtk5_cflags -mms-bitfields"
gui_gtk5_ldflags="$gui_gtk5_ldflags $MWINDOWS_FLAG"
fi
],
[
FC_NO_CLIENT([gtk4x], [GTK-4.x libraries not found])
])
fi
])
tools/fcmp/Makefile.am
if MODINST_GTK4
bin_PROGRAMS += freeciv-mp-gtk4
endif
if MODINST_GTK5
bin_PROGRAMS += freeciv-mp-gtk4x
endif
if MODINST_QT
bin_PROGRAMS += freeciv-mp-qt
endif
......
$(MPICON)
endif
if MODINST_GTK5
freeciv_mp_gtk4x_CPPFLAGS = $(common_cppflags) $(mp_gtk5_cflags)
freeciv_mp_gtk4x_SOURCES = mpgui_gtk5.c
freeciv_mp_gtk4x_LDFLAGS = $(mp_gtk5_ldflags)
freeciv_mp_gtk4x_LDADD = \
libfcmp.la \
$(top_builddir)/dependencies/cvercmp/libcvercmp.la \
$(top_builddir)/common/libfreeciv.la \
$(TINYCTHR_LIBS) $(MAPIMG_WAND_LIBS) \
$(mp_gtk5_libs) -lsqlite3 \
$(MPICON)
endif
if MODINST_QT
MOC_FILES = \
......
$(mp_qt_libs) -lsqlite3 \
$(MPICON)
endif
EXTRA_DIST = mpgui_gtk5.c
    (1-1/1)