[network-manager-applet/lr/gtk4-part1: 4/6] build: allow building a GTK4 flavor of libnma
- From: Lubomir Rintel <lkundrak src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [network-manager-applet/lr/gtk4-part1: 4/6] build: allow building a GTK4 flavor of libnma
- Date: Fri, 15 Feb 2019 16:51:06 +0000 (UTC)
commit d5e7458a28ce159f2e29757e77d640c3f465ac52
Author: Lubomir Rintel <lkundrak v3 sk>
Date: Mon Apr 30 19:25:36 2018 +0200
build: allow building a GTK4 flavor of libnma
.gitignore | 9 ++
Makefile.am | 240 ++++++++++++++++++++++++++++++++++++++++++
NEWS | 8 ++
config.h.meson | 3 +
configure.ac | 24 +++++
meson.build | 24 ++++-
meson_options.txt | 1 +
src/libnma/libnma-gtk4.pc.in | 11 ++
src/libnma/meson.build | 92 +++++++++++-----
src/libnma/nma-cert-chooser.c | 2 +-
src/libnma/nma-wifi-dialog.c | 4 +
src/libnma/tests/meson.build | 77 +++++---------
12 files changed, 411 insertions(+), 84 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index b93e1ecc..51648698 100644
--- a/.gitignore
+++ b/.gitignore
@@ -51,17 +51,26 @@ src/connection-editor/nm-connection-editor-service-glue.h
src/connection-editor/ce-resources.c
src/connection-editor/ce-resources.h
src/libnma/libnma.pc
+src/libnma/libnma-gtk4.pc
src/libnma/NMA-1.0.gir
src/libnma/NMA-1.0.typelib
+src/libnma/NMA4-1.0.gir
+src/libnma/NMA4-1.0.typelib
src/libnma/nma-resources.c
src/libnma/nma-resources.h
src/libnma/nma-version.h
src/libnma/tests/cert-chooser
+src/libnma/tests/cert-chooser-gtk4
src/libnma/tests/mobile-wizard
+src/libnma/tests/mobile-wizard-gtk4
src/libnma/tests/run-vpn
+src/libnma/tests/run-vpn-gtk4
src/libnma/tests/vpn-password-dialog
+src/libnma/tests/vpn-password-dialog-gtk4
src/libnma/tests/wifi-dialog
+src/libnma/tests/wifi-dialog-gtk4
src/libnma/tests/wifi-dialog-secrets
+src/libnma/tests/wifi-dialog-secrets-gtk4
src/libnm-gtk/libnm-gtk.pc
src/libnm-gtk/NMGtk-1.0.gir
src/libnm-gtk/NMGtk-1.0.typelib
diff --git a/Makefile.am b/Makefile.am
index 46095319..83bd4e28 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -212,6 +212,26 @@ src_utils_libutils_libnm_glib_la_LIBADD = \
endif
+if WITH_LIBNMA_GTK4
+
+noinst_LTLIBRARIES += src/utils/libutils-libnm-gtk4.la
+
+src_utils_libutils_libnm_gtk4_la_CPPFLAGS = \
+ "-I$(srcdir)/shared" \
+ $(GTK4_CFLAGS) \
+ $(LIBNM_CFLAGS)
+
+src_utils_libutils_libnm_gtk4_la_SOURCES = \
+ $(shared_files) \
+ src/utils/utils.c \
+ src/utils/utils.h
+
+src_utils_libutils_libnm_gtk4_la_LIBADD = \
+ $(GTK4_LIBS) \
+ $(LIBNM_LIBS)
+
+endif
+
check_programs += src/utils/tests/test-utils
src_utils_tests_test_utils_SOURCES = src/utils/tests/test-utils.c
@@ -332,6 +352,33 @@ $(src_wireless_security_libwireless_security_libnm_glib_la_OBJECTS): $(wireless_
endif
+if WITH_LIBNMA_GTK4
+
+noinst_LTLIBRARIES += src/wireless-security/libwireless-security-libnm-gtk4.la
+
+src_wireless_security_libwireless_security_libnm_gtk4_la_SOURCES = \
+ $(wireless_security_c_real)
+
+nodist_src_wireless_security_libwireless_security_libnm_gtk4_la_SOURCES = \
+ $(wireless_security_c_gen)
+
+src_wireless_security_libwireless_security_libnm_gtk4_la_CPPFLAGS = \
+ "-I$(srcdir)/shared" \
+ "-I$(srcdir)/src/utils" \
+ "-I$(srcdir)/src/libnma" \
+ -Isrc/libnma \
+ $(GTK4_CFLAGS) \
+ $(LIBNM_CFLAGS)
+
+src_wireless_security_libwireless_security_libnm_gtk4_la_LIBADD = \
+ src/utils/libutils-libnm-gtk4.la \
+ $(GTK4_LIBS) \
+ $(LIBNM_LIBS)
+
+$(src_wireless_security_libwireless_security_libnm_gtk4_la_OBJECTS): $(wireless_security_h_gen)
+
+endif
+
EXTRA_DIST += \
src/wireless-security/eap-method-fast.ui \
src/wireless-security/eap-method-leap.ui \
@@ -713,9 +760,202 @@ src_libnma_tests_cert_chooser_LDADD = \
$(LIBNM_LIBS) \
src/libnma/libnma.la
+if WITH_LIBNMA_GTK4
+
+lib_LTLIBRARIES += src/libnma/libnma-gtk4.la
+
+src_libnma_libnma_gtk4_la_SOURCES = \
+ $(libnma_h_priv_real) \
+ $(libnma_c_real)
+
+if WITH_GCR_GTK4
+src_libnma_libnma_gtk4_la_SOURCES += \
+ $(libnma_h_priv_gcr) \
+ $(libnma_c_gcr)
+endif
+
+nodist_src_libnma_libnma_gtk4_la_SOURCES = \
+ $(libnma_h_priv_gen) \
+ $(libnma_c_gen)
+
+src_libnma_libnma_gtk4_la_CFLAGS = \
+ -DICONDIR=\""$(datadir)/icons"\" \
+ -DBINDIR=\""$(bindir)"\" \
+ -DSYSCONFDIR=\""$(sysconfdir)"\" \
+ -DLIBEXECDIR=\""$(libexecdir)"\" \
+ -DDATADIR=\""$(datadir)"\" \
+ -DAUTOSTARTDIR=\""$(sysconfdir)/xdg/autostart"\" \
+ -DNMALOCALEDIR=\"$(datadir)/locale\" \
+ -DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_LIB \
+ "-I$(srcdir)/shared" \
+ "-I$(srcdir)/src/utils" \
+ "-I$(srcdir)/src/wireless-security" \
+ "-I$(srcdir)/src/libnma" \
+ -Isrc/libnma \
+ $(GTK4_CFLAGS) \
+ $(LIBNM_CFLAGS) \
+ $(GUDEV_CFLAGS) \
+ $(GCR_GCR4_CFLAGS)
+
+src_libnma_libnma_gtk4_la_LIBADD = \
+ src/wireless-security/libwireless-security-libnm-gtk4.la \
+ $(GTK4_LIBS) \
+ $(LIBNM_LIBS) \
+ $(GUDEV_LIBS) \
+ $(GCR_GCR4_LIBS)
+
+EXTRA_src_libnma_libnma_gtk4_la_DEPENDENCIES = src/libnma/libnma.ver
+
+src_libnma_libnma_gtk4_la_LDFLAGS = \
+ -Wl,-no-undefined \
+ -Wl,--version-script=$(srcdir)/src/libnma/libnma.ver
+
+
+pkgconfig_DATA += src/libnma/libnma-gtk4.pc
+
+if HAVE_INTROSPECTION
+src/libnma/NMA4-1.0.gir: src/libnma/libnma-gtk4.la
+src_libnma_NMA4_1_0_gir_INCLUDES = NM-1.0 Gtk-4.0
+src_libnma_NMA4_1_0_gir_EXPORT_PACKAGES = libnma-gtk4
+src_libnma_NMA4_1_0_gir_CFLAGS = $(src_libnma_libnma_gtk4_la_CFLAGS)
+src_libnma_NMA4_1_0_gir_LIBS = src/libnma/libnma-gtk4.la
+src_libnma_NMA4_1_0_gir_FILES = \
+ $(libnma_h_pub) \
+ $(libnma_c_real)
+if WITH_GCR_GTK4
+src_libnma_NMA4_1_0_gir_FILES += \
+ $(libnma_c_gcr)
+endif
+src_libnma_NMA4_1_0_gir_SCANNERFLAGS = --warn-all --identifier-prefix=NMA --symbol-prefix=nma
+INTROSPECTION_GIRS += src/libnma/NMA4-1.0.gir
+endif
+
+check_PROGRAMS_norun += src/libnma/tests/mobile-wizard-gtk4
+
+src_libnma_tests_mobile_wizard_gtk4_SOURCES = \
+ src/libnma/tests/mobile-wizard.c
+
+src_libnma_tests_mobile_wizard_gtk4_CPPFLAGS = \
+ $(dflt_cppflags) \
+ $(GLIB_CFLAGS) \
+ $(GTK4_CFLAGS) \
+ $(LIBNM_CFLAGS) \
+ "-I$(srcdir)/shared/" \
+ "-I$(srcdir)/src/libnma" \
+ -Isrc/libnma
+
+src_libnma_tests_mobile_wizard_gtk4_LDADD = \
+ $(GLIB_LIBS) \
+ $(GTK4_LIBS) \
+ $(LIBNM_LIBS) \
+ src/libnma/libnma-gtk4.la
+
+check_PROGRAMS_norun += src/libnma/tests/vpn-password-dialog-gtk4
+
+src_libnma_tests_vpn_password_dialog_gtk4_SOURCES = \
+ src/libnma/tests/vpn-password-dialog.c
+
+src_libnma_tests_vpn_password_dialog_gtk4_CPPFLAGS = \
+ $(dflt_cppflags) \
+ $(GLIB_CFLAGS) \
+ $(GTK4_CFLAGS) \
+ $(LIBNM_CFLAGS) \
+ "-I$(srcdir)/shared/" \
+ "-I$(srcdir)/src/libnma" \
+ -Isrc/libnma
+
+src_libnma_tests_vpn_password_dialog_gtk4_LDADD = \
+ $(GLIB_LIBS) \
+ $(GTK4_LIBS) \
+ $(LIBNM_LIBS) \
+ src/libnma/libnma-gtk4.la
+
+check_PROGRAMS_norun += src/libnma/tests/wifi-dialog-gtk4
+
+src_libnma_tests_wifi_dialog_gtk4_SOURCES = \
+ src/libnma/tests/wifi-dialog.c
+
+src_libnma_tests_wifi_dialog_gtk4_CPPFLAGS = \
+ $(dflt_cppflags) \
+ $(GLIB_CFLAGS) \
+ $(GTK4_CFLAGS) \
+ $(LIBNM_CFLAGS) \
+ "-I$(srcdir)/shared/" \
+ "-I$(srcdir)/src/libnma" \
+ -Isrc/libnma
+
+src_libnma_tests_wifi_dialog_gtk4_LDADD = \
+ $(GLIB_LIBS) \
+ $(GTK4_LIBS) \
+ $(LIBNM_LIBS) \
+ src/libnma/libnma-gtk4.la
+
+check_PROGRAMS_norun += src/libnma/tests/wifi-dialog-secrets-gtk4
+
+src_libnma_tests_wifi_dialog_secrets_gtk4_SOURCES = \
+ src/libnma/tests/wifi-dialog-secrets.c
+
+src_libnma_tests_wifi_dialog_secrets_gtk4_CPPFLAGS = \
+ $(dflt_cppflags) \
+ $(GLIB_CFLAGS) \
+ $(GTK4_CFLAGS) \
+ $(LIBNM_CFLAGS) \
+ "-I$(srcdir)/shared/" \
+ "-I$(srcdir)/src/libnma" \
+ -Isrc/libnma
+
+src_libnma_tests_wifi_dialog_secrets_gtk4_LDADD = \
+ $(GLIB_LIBS) \
+ $(GTK4_LIBS) \
+ $(LIBNM_LIBS) \
+ src/libnma/libnma-gtk4.la
+
+check_PROGRAMS_norun += src/libnma/tests/run-vpn-gtk4
+
+src_libnma_tests_run_vpn_gtk4_SOURCES = \
+ src/libnma/tests/run-vpn.c
+
+src_libnma_tests_run_vpn_gtk4_CPPFLAGS = \
+ $(dflt_cppflags) \
+ $(GLIB_CFLAGS) \
+ $(GTK4_CFLAGS) \
+ $(LIBNM_CFLAGS) \
+ "-I$(srcdir)/shared/" \
+ "-I$(srcdir)/src/libnma" \
+ -Isrc/libnma
+
+src_libnma_tests_run_vpn_gtk4_LDADD = \
+ $(GLIB_LIBS) \
+ $(GTK4_LIBS) \
+ $(LIBNM_LIBS) \
+ src/libnma/libnma-gtk4.la
+
+check_PROGRAMS_norun += src/libnma/tests/cert-chooser-gtk4
+
+src_libnma_tests_cert_chooser_gtk4_SOURCES = \
+ src/libnma/tests/cert-chooser.c
+
+src_libnma_tests_cert_chooser_gtk4_CPPFLAGS = \
+ $(dflt_cppflags) \
+ $(GLIB_CFLAGS) \
+ $(GTK4_CFLAGS) \
+ $(LIBNM_CFLAGS) \
+ "-I$(srcdir)/shared/" \
+ "-I$(srcdir)/src/libnma" \
+ -Isrc/libnma
+
+src_libnma_tests_cert_chooser_gtk4_LDADD = \
+ $(GLIB_LIBS) \
+ $(GTK4_LIBS) \
+ $(LIBNM_LIBS) \
+ src/libnma/libnma-gtk4.la
+
+endif
+
EXTRA_DIST += \
src/libnma/nma-version.h.in \
src/libnma/libnma.pc.in \
+ src/libnma/libnma-gtk4.pc.in \
src/libnma/libnma.ver \
src/libnma/wifi.ui \
src/libnma/nma-mobile-wizard.ui \
diff --git a/NEWS b/NEWS
index d7d1369a..dd8c1f22 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,11 @@
+=======================================================
+network-manager-applet-1.8.22
+Overview of changes since network-manager-applet-1.8.20
+=======================================================
+
+* Add EXPERIMENTAL libnma-gtk4 library for use with GTK4.
+ Not recommended for production use.
+
=======================================================
network-manager-applet-1.8.20
Overview of changes since network-manager-applet-1.8.18
diff --git a/config.h.meson b/config.h.meson
index c3ca560e..41246fc0 100644
--- a/config.h.meson
+++ b/config.h.meson
@@ -50,6 +50,9 @@
/* Define if Gcr is available */
#mesondefine WITH_GCR
+/* Define if GTK4 Gcr is available */
+#mesondefine WITH_GCR_GTK4
+
/* Define if Jansson is available */
#mesondefine WITH_JANSSON
diff --git a/configure.ac b/configure.ac
index 10a92f56..bc12a3fd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -165,6 +165,20 @@ PKG_CHECK_MODULES(NOTIFY, [libnotify >= 0.4.3])
PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= 3.10)
GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_4
-DGTK_VERSION_MAX_ALLOWED=GTK_VERSION_3_4"
+AC_ARG_WITH(libnma-gtk4, AS_HELP_STRING([--with-libnma-gtk4], [build EXPERIMENTAL libnma-gtk4 library for
use with GTK4]))
+if test "$with_libnma_gtk4" == yes; then
+ PKG_CHECK_MODULES(GTK4, gtk+-4.0 >= 3.94)
+ GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_94
-DGTK_VERSION_MAX_ALLOWED=GTK_VERSION_3_94"
+else
+ with_libnma_gtk4=no
+fi
+AM_CONDITIONAL(WITH_LIBNMA_GTK4, test "$with_libnma_gtk4" != "no")
+
+# No such thing yet, just same lame duck placeholders.
+# it may actually end up being called differently.
+AC_DEFINE(WITH_GCR_GTK4, 0, [Define if GTK4 Gcr is available])
+AM_CONDITIONAL(WITH_GCR_GTK4, false)
+
AC_ARG_WITH([appindicator],
AS_HELP_STRING([--with-appindicator=no|yes|auto|ayatana|ubuntu], [Build with
lib(ayatana-)appindicator support in addition to xembed systray support.]),
[], [with_appindicator=no])
@@ -318,6 +332,14 @@ NM_COMPILER_WARNINGS(CFLAGS, [yes])
NM_LTO
NM_LD_GC
+# Disable extra compiler warning until GTK4 doesn't trigger it via graphene
+if test "$with_libnma_gtk4" == yes; then
+ _CFLAGS_SAVED="$CFLAGS"
+ CFLAGS="$CFLAGS $GTK4_CFLAGS"
+ NM_COMPILER_WARNING([_CFLAGS], [float-equal], [#include <gtk/gtk.h>])
+ CFLAGS="$_CFLAGS_SAVED $_CFLAGS"
+fi
+
AC_ARG_WITH(more-asserts,
AS_HELP_STRING([--with-more-asserts=level], [Enable more assertions for debugging (default: 0)]),
[more_asserts=${with_more_asserts}],
@@ -336,6 +358,7 @@ AC_CONFIG_FILES([
Makefile
src/libnm-gtk/libnm-gtk.pc
src/libnma/libnma.pc
+src/libnma/libnma-gtk4.pc
po/Makefile.in
man/nm-applet.1
man/nm-connection-editor.1
@@ -346,6 +369,7 @@ AC_OUTPUT
echo ""
echo " Build legacy library libnm-gtk: --with-libnm-gtk=${with_libnm_gtk}"
+echo " Build EXPERIMENTAL libnma-gtk4 library for use with GTK4: --with-libnma-gtk4=${with_libnma_gtk4}"
echo " GCR: --with-gcr=$have_gcr"
echo " LTO: --enable-lto=$enable_lto"
echo " Linker garbage collection: --enable-ld-gc=$enable_ld_gc"
diff --git a/meson.build b/meson.build
index 7456a9a6..ef2187c9 100644
--- a/meson.build
+++ b/meson.build
@@ -20,7 +20,6 @@ nma_micro_version = version_array[2].to_int()
nma_gir_version = '1.0'
nma_gir_prefix = 'NMA'
-nma_gir_ns = 'NMA'
nma_gtk_gir_ns = 'NMGtk'
nma_prefix = get_option('prefix')
@@ -77,10 +76,21 @@ if enable_ld_gc
common_ldflags += test_ldflags
endif
+enable_libnma_gtk4 = get_option('libnma_gtk4')
+if enable_libnma_gtk4
+ gtk4_ext_dep = dependency('gtk+-4.0', version: '>= 3.94')
+ gtk4_dep = declare_dependency(
+ dependencies: gtk4_ext_dep,
+ compile_args: [
+ '-DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_94',
+ '-DGTK_VERSION_MAX_ALLOWED=GTK_VERSION_3_94'
+ ]
+ )
+endif
+
if nma_debug
test_cflags = [
'-Wdeclaration-after-statement',
- '-Wfloat-equal',
'-Wformat=2',
'-Wimplicit-fallthrough',
'-Winit-self',
@@ -100,6 +110,11 @@ if nma_debug
'-Wvla',
]
+ # Disable extra compiler warning until GTK4 doesn't trigger it via graphene
+ if not enable_libnma_gtk4 or cc.compiles('#include <gtk/gtk.h>', dependencies: gtk4_ext_dep, args:
['-Werror=float-equal'])
+ test_cflags += '-Wfloat-equal'
+ endif
+
common_flags += cc.get_supported_arguments(test_cflags)
endif
@@ -206,6 +221,10 @@ if enable_libnm_gtk
)
endif
+# No such thing yet, just same lame duck placeholders.
+# it may actually end up being called differently.
+config_h.set10('WITH_GCR_GTK4', false)
+
enable_appindicator = get_option('appindicator')
if enable_appindicator == 'auto' or enable_appindicator == 'yes'
appindicator_dep = dependency('ayatana-appindicator3-0.1', required: false)
@@ -504,6 +523,7 @@ meson.add_install_script(
)
output = '\n Build legacy library libnm-gtk: ' + enable_libnm_gtk.to_string() + '\n'
+output += ' Build EXPERIMENTAL library libnm-gtk4 for use with GTK4: ' + enable_libnma_gtk4.to_string() +
'\n'
output += ' GCR: ' + enable_gcr.to_string() + '\n'
output += ' LTO: ' + get_option('b_lto').to_string() + '\n'
output += ' Linker garbage collection: ' + enable_ld_gc.to_string() + '\n'
diff --git a/meson_options.txt b/meson_options.txt
index 5a13c793..eadec332 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,4 +1,5 @@
option('libnm_gtk', type: 'boolean', value: false, description: 'build legacy library libnm-gtk which
depends on libnm-glib/libnm-util/dbus-glib')
+option('libnma_gtk4', type: 'boolean', value: false, description: 'build EXPERIMENTAL library libnma-gtk4
for use with GTK4')
option('appindicator', type: 'string', value: 'no', description: 'Build with lib(ayatana-)appindicator
support in addition to xembed systray support (no|yes|auto|ayatana|ubuntu). Default is "no", "yes" is an
alias for "auto".')
option('wwan', type: 'boolean', value: true, description: 'Enable WWAN support.')
option('selinux', type: 'boolean', value: true, description: 'Enable support for adjusting SELinux labels in
configuration editor.')
diff --git a/src/libnma/libnma-gtk4.pc.in b/src/libnma/libnma-gtk4.pc.in
new file mode 100644
index 00000000..a2cf2b49
--- /dev/null
+++ b/src/libnma/libnma-gtk4.pc.in
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+includedir=@includedir@
+libdir=@libdir@
+
+Name: libnma
+Description: NetworkManager UI utilities (gtk4 version)
+Version: @PACKAGE_VERSION@
+Requires: libnm
+Cflags: -I${includedir}/libnma
+Libs: -L${libdir} -lnma-gtk4
diff --git a/src/libnma/meson.build b/src/libnma/meson.build
index 879e1b84..d2ad90f3 100644
--- a/src/libnma/meson.build
+++ b/src/libnma/meson.build
@@ -1,5 +1,3 @@
-lib_name = 'libnma'
-
cert_chooser_headers = files('nma-cert-chooser.h')
cert_chooser_sources = files(
@@ -27,11 +25,9 @@ gir_headers = cert_chooser_headers + files(
'nma-wifi-dialog.h'
)
-headers = gir_headers + files('nma-cert-chooser-private.h')
-
install_headers(
gir_headers,
- subdir: lib_name
+ subdir: 'libnma'
)
gir_sources = [version_header] + cert_chooser_sources + files(
@@ -52,7 +48,6 @@ incs = [
]
deps = [
- gtk_dep,
gudev_dep,
libnm_dep,
libutils_libnm_dep,
@@ -71,29 +66,24 @@ cflags = [
symbol_map = join_paths(meson.current_source_dir(), 'libnma.ver')
+nma_deps = [ deps, gtk_dep ]
+nma_sources = [ gir_sources, built_sources ]
if enable_gcr
- headers += files(
- 'nma-cert-chooser-button.h',
- 'nma-pkcs11-cert-chooser-dialog.h',
- 'nma-pkcs11-token-login-dialog.h'
- )
-
- gir_sources += files(
+ nma_sources += files(
'nma-cert-chooser-button.c',
'nma-pkcs11-cert-chooser.c',
'nma-pkcs11-cert-chooser-dialog.c',
'nma-pkcs11-token-login-dialog.c'
)
-
- deps += gcr_dep
+ nma_deps += gcr_dep
endif
libnma = shared_library(
'nma',
- sources: gir_sources + built_sources,
+ sources: nma_sources,
version: libversion,
include_directories: incs,
- dependencies: deps,
+ dependencies: nma_deps,
c_args: cflags,
link_args: '-Wl,--version-script,' + symbol_map,
link_depends: symbol_map,
@@ -107,26 +97,56 @@ libnma_dep = declare_dependency(
include_directories: libnma_inc
)
+if enable_libnma_gtk4
+ libnma_gtk4 = shared_library(
+ 'nma-gtk4',
+ sources: gir_sources + built_sources,
+ version: libversion,
+ include_directories: incs,
+ dependencies: [ deps, gtk4_dep ],
+ c_args: cflags,
+ link_args: ldflags,
+ link_depends: symbol_map,
+ link_whole: libwireless_security_libnm,
+ install: true,
+ install_dir: nma_libdir
+ )
+
+ libnma_gtk4_dep = declare_dependency(
+ link_with: libnma_gtk4,
+ include_directories: libnma_inc
+ )
+endif
+
subdir('tests')
pkg.generate(
libraries: libnma,
version: nma_version,
- name: lib_name,
+ name: 'libnma',
description: 'NetworkManager UI utilities (libnm version)',
- filebase: lib_name,
- subdirs: lib_name,
+ filebase: 'libnma',
+ subdirs: 'libnma',
requires: 'libnm',
variables: 'exec_prefix=' + nma_prefix,
install_dir: join_paths(nma_libdir, 'pkgconfig')
)
-if enable_introspection
- gir_incs = [
- 'Gtk-3.0',
- 'NM-1.0'
- ]
+if enable_libnma_gtk4
+ pkg.generate(
+ libraries: libnma_gtk4,
+ version: nma_version,
+ name: 'libnma-gtk4',
+ description: 'NetworkManager UI utilities (gtk4 version)',
+ filebase: 'libnma-gtk4',
+ subdirs: 'libnma',
+ requires: 'libnm',
+ variables: 'exec_prefix=' + nma_prefix,
+ install_dir: join_paths(nma_libdir, 'pkgconfig')
+ )
+endif
+if enable_introspection
gir_dir = join_paths(nma_datadir, 'gir-' + nma_gir_version)
typelib_dir = join_paths(nma_libdir, 'girepository-' + nma_gir_version)
@@ -134,13 +154,29 @@ if enable_introspection
libnma,
sources: gir_sources + gir_headers,
nsversion: nma_gir_version,
- namespace: nma_gir_ns,
- includes: gir_incs,
+ namespace: 'NMA',
+ includes: [ 'Gtk-3.0', 'NM-1.0' ],
identifier_prefix: nma_gir_prefix,
symbol_prefix: nma_gir_prefix.to_lower(),
- export_packages: lib_name,
+ export_packages: 'libnma',
install: true,
install_dir_gir: gir_dir,
install_dir_typelib: typelib_dir
)
+
+ if enable_libnma_gtk4
+ gnome.generate_gir(
+ libnma,
+ sources: gir_sources + gir_headers,
+ nsversion: nma_gir_version,
+ namespace: 'NMA4',
+ includes: [ 'Gtk-4.0', 'NM-1.0' ],
+ identifier_prefix: nma_gir_prefix,
+ symbol_prefix: nma_gir_prefix.to_lower(),
+ export_packages: 'libnma',
+ install: true,
+ install_dir_gir: gir_dir,
+ install_dir_typelib: typelib_dir
+ )
+ endif
endif
diff --git a/src/libnma/nma-cert-chooser.c b/src/libnma/nma-cert-chooser.c
index a20cd8fc..aea7551a 100644
--- a/src/libnma/nma-cert-chooser.c
+++ b/src/libnma/nma-cert-chooser.c
@@ -611,7 +611,7 @@ constructor (GType type, guint n_construct_properties, GObjectConstructParam *co
flags |= g_value_get_uint (construct_properties[i].value);
}
priv->vtable = &nma_cert_chooser_vtable_file;
-#if LIBNM_BUILD && WITH_GCR
+#if LIBNM_BUILD && (GTK_CHECK_VERSION(3,90,0) ? WITH_GCR_GTK4 : WITH_GCR)
if ((flags & NMA_CERT_CHOOSER_FLAG_PEM) == 0)
priv->vtable = &nma_cert_chooser_vtable_pkcs11;
#endif
diff --git a/src/libnma/nma-wifi-dialog.c b/src/libnma/nma-wifi-dialog.c
index 009bf440..53694004 100644
--- a/src/libnma/nma-wifi-dialog.c
+++ b/src/libnma/nma-wifi-dialog.c
@@ -1097,7 +1097,11 @@ internal_init (NMAWifiDialog *self,
gtk_window_set_icon_name (GTK_WINDOW (self), icon_name);
widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "image1"));
+#if GTK_CHECK_VERSION(3,90,0)
+ gtk_image_set_from_icon_name (GTK_IMAGE (widget), icon_name);
+#else
gtk_image_set_from_icon_name (GTK_IMAGE (widget), icon_name, GTK_ICON_SIZE_DIALOG);
+#endif
gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), 2);
diff --git a/src/libnma/tests/meson.build b/src/libnma/tests/meson.build
index 2d682e86..ad50c962 100644
--- a/src/libnma/tests/meson.build
+++ b/src/libnma/tests/meson.build
@@ -1,59 +1,30 @@
-deps = [
- gtk_dep,
- libnm_dep,
- libnma_dep
-]
-
-executable(
+tests = [
'cert-chooser',
- 'cert-chooser.c',
- include_directories: incs,
- dependencies: deps,
- c_args: cflags,
- install: false
-)
-
-executable(
'mobile-wizard',
- 'mobile-wizard.c',
- include_directories: incs,
- dependencies: deps,
- c_args: cflags,
- install: false
-)
-
-executable(
'run-vpn',
- 'run-vpn.c',
- include_directories: incs,
- dependencies: deps,
- c_args: cflags,
- install: false
-)
-
-executable(
'vpn-password-dialog',
- 'vpn-password-dialog.c',
- include_directories: incs,
- dependencies: deps,
- c_args: cflags,
- install: false
-)
-
-executable(
'wifi-dialog',
- 'wifi-dialog.c',
- include_directories: incs,
- dependencies: deps,
- c_args: cflags,
- install: false
-)
-
-executable(
'wifi-dialog-secrets',
- 'wifi-dialog-secrets.c',
- include_directories: incs,
- dependencies: deps,
- c_args: cflags,
- install: false
-)
+]
+
+foreach tst : tests
+ executable(
+ tst,
+ tst + '.c',
+ include_directories: incs,
+ dependencies: [ gtk_dep, libnm_dep, libnma_dep ],
+ c_args: cflags,
+ install: false
+ )
+
+ if enable_libnma_gtk4
+ executable(
+ tst + '-gtk4',
+ tst + '.c',
+ include_directories: incs,
+ dependencies: [ gtk4_dep, libnm_dep, libnma_gtk4_dep ],
+ c_args: cflags,
+ install: false
+ )
+ endif
+endforeach
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]