build: Make the default setting work on non-Linux Unix-like systems
authorTing-Wei Lan <lantw@src.gnome.org>
Sun, 22 Apr 2018 12:47:32 +0000 (20:47 +0800)
committerTing-Wei Lan <lantw@src.gnome.org>
Sun, 22 Apr 2018 13:57:10 +0000 (21:57 +0800)
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
meson_options.txt
tests/meson.build

index baab1b759d691c1931e8bdd24289f55c2a264abc..cdd83e76355569afc83c57b875ddda886010cb04 100644 (file)
@@ -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,
index 6e795b08835711a146b829b094d510a6152b5d0a..a189ee2cbaebe0cf40bba49bc9c057e92d165bb9 100644 (file)
@@ -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,
index 051fbb15886e421f5dbe2d3339993d5d41ccd66d..772dc23e49208595dc727e1670ce5b2f6e76f738 100644 (file)
@@ -133,7 +133,7 @@ gtk_tests = [
   ['testtexture'],
 ]
 
-if os_linux
+if os_unix
   gtk_tests += [['testfontchooserdialog']]
 endif