From f922109a9c684d1fb852b041eccbeb4781b7039a Mon Sep 17 00:00:00 2001 From: Ting-Wei Lan Date: Sun, 22 Apr 2018 20:47:32 +0800 Subject: [PATCH] build: Make the default setting work on non-Linux Unix-like systems All of the four platform-dependent backends are enabled by default. It is usually a good default because it requires users to explicitly choose backends they want to use. Rules in meson.build also automatically disable unavailable backends for macOS, Windows, Linux, so users on these 3 major platforms don't have to manually disable things when running meson commands. However, meson.build doesn't do the same thing for other Unix-like systems, which is acceptable but not ideal. To make it easier to build GTK+ on these systems, the Linux case, which enables X11 and Wayland and disables Win32 and Quartz, is made the default for all operating systems that are not Windows or macOS. This commit also changes most 'host_machine.system()' calls to os_* variables, which are easier to read and less likely to be used wrongly. --- meson.build | 37 ++++++++++++++++++++++--------------- meson_options.txt | 4 ++-- tests/meson.build | 2 +- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/meson.build b/meson.build index baab1b759d..cdd83e7635 100644 --- a/meson.build +++ b/meson.build @@ -102,20 +102,25 @@ os_darwin = false # to ensure they are enabled if host_machine.system() == 'darwin' os_darwin = true - win32_enabled = false elif host_machine.system() == 'windows' os_win32 = true - win32_enabled = true - x11_enabled = false - wayland_enabled = false - quartz_enabled = false elif host_machine.system() == 'linux' os_linux = true - win32_enabled = false +endif +os_unix = not os_win32 + +if os_darwin + wayland_enabled = false +else quartz_enabled = false endif -os_unix = not os_win32 +if os_win32 + wayland_enabled = false + x11_enabled = false +else + win32_enabled = false +endif gtk_prefix = get_option('prefix') gtk_includedir = join_paths(gtk_prefix, get_option('includedir')) @@ -265,7 +270,7 @@ common_cflags = cc.get_supported_arguments(test_cflags) # Symbol visibility if get_option('default_library') != 'static' - if host_machine.system() == 'windows' + if os_win32 cdata.set('DLL_EXPORT', true) cdata.set('_GDK_EXTERN', '__declspec(dllexport) extern') if cc.get_id() != 'msvc' @@ -284,7 +289,7 @@ if host_machine.system() == 'linux' and cc.get_id() == 'gcc' endif # Maintain compatibility with autotools -if host_machine.system() == 'darwin' +if os_darwin common_ldflags += [ '-compatibility_version 1', '-current_version 1.0', ] endif @@ -299,10 +304,11 @@ glib_dep = dependency('glib-2.0', version: glib_req, fallback : ['glib', 'libglib_dep']) gobject_dep = dependency('gobject-2.0', version: glib_req, fallback : ['glib', 'libgobject_dep']) -if host_machine.system() == 'windows' +if os_win32 giowin32_dep = dependency('gio-windows-2.0', version: glib_req, required: win32_enabled, fallback : ['glib', 'libgio_dep']) -else +endif +if os_unix giounix_dep = dependency('gio-unix-2.0', version: glib_req, required: false, fallback : ['glib', 'libgio_dep']) endif @@ -370,9 +376,10 @@ iso_codes_dep = dependency('iso-codes', required: false) fontconfig_dep = [] # only used in x11 backend atkbridge_dep = [] # only used in x11 backend -if host_machine.system() == 'windows' +if os_win32 platform_gio_dep = giowin32_dep -else +endif +if os_unix platform_gio_dep = giounix_dep endif @@ -582,7 +589,7 @@ if cc.has_function('bind_textdomain_codeset', dependencies: libintl_dep) cdata.set('HAVE_BIND_TEXTDOMAIN_CODESET', 1) endif -if host_machine.system() != 'windows' +if os_unix cdata.set('HAVE_GIO_UNIX', giounix_dep.found()) endif @@ -723,7 +730,7 @@ foreach pkg: pkgs install_dir: pkg_install_dir) endforeach -if host_machine.system() != 'windows' +if os_unix configure_file(input: 'gtk+-unix-print-4.0.pc.in', output: 'gtk+-unix-print-4.0.pc', configuration: pkgconf, diff --git a/meson_options.txt b/meson_options.txt index 6e795b0883..a189ee2cba 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -1,8 +1,8 @@ # GDK backends option('x11-backend', type: 'boolean', value: true, - description : 'Enable the X11 gdk backend (only when building on Linux or macOS)') + description : 'Enable the X11 gdk backend (only when building on Unix)') option('wayland-backend', type: 'boolean', value: true, - description : 'Enable the wayland gdk backend (only when building on Linux)') + description : 'Enable the wayland gdk backend (only when building on Unix except for macOS)') option('broadway-backend', type: 'boolean', value: false, description : 'Enable the broadway (HTML5) gdk backend') option('win32-backend', type: 'boolean', value: true, diff --git a/tests/meson.build b/tests/meson.build index 051fbb1588..772dc23e49 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -133,7 +133,7 @@ gtk_tests = [ ['testtexture'], ] -if os_linux +if os_unix gtk_tests += [['testfontchooserdialog']] endif