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.
This commit is contained in:
Ting-Wei Lan 2018-04-22 20:47:32 +08:00 committed by Matthias Clasen
parent e6deaa3a85
commit e882db2763
3 changed files with 25 additions and 18 deletions

View File

@ -102,20 +102,25 @@ os_darwin = false
# to ensure they are enabled # to ensure they are enabled
if host_machine.system() == 'darwin' if host_machine.system() == 'darwin'
os_darwin = true os_darwin = true
win32_enabled = false
elif host_machine.system() == 'windows' elif host_machine.system() == 'windows'
os_win32 = true os_win32 = true
win32_enabled = true
x11_enabled = false
wayland_enabled = false
quartz_enabled = false
elif host_machine.system() == 'linux' elif host_machine.system() == 'linux'
os_linux = true os_linux = true
win32_enabled = false endif
os_unix = not os_win32
if os_darwin
wayland_enabled = false
else
quartz_enabled = false quartz_enabled = false
endif 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_prefix = get_option('prefix')
gtk_includedir = join_paths(gtk_prefix, get_option('includedir')) gtk_includedir = join_paths(gtk_prefix, get_option('includedir'))
@ -265,7 +270,7 @@ common_cflags = cc.get_supported_arguments(test_cflags)
# Symbol visibility # Symbol visibility
if get_option('default_library') != 'static' if get_option('default_library') != 'static'
if host_machine.system() == 'windows' if os_win32
cdata.set('DLL_EXPORT', true) cdata.set('DLL_EXPORT', true)
cdata.set('_GDK_EXTERN', '__declspec(dllexport) extern') cdata.set('_GDK_EXTERN', '__declspec(dllexport) extern')
if cc.get_id() != 'msvc' if cc.get_id() != 'msvc'
@ -284,7 +289,7 @@ if host_machine.system() == 'linux' and cc.get_id() == 'gcc'
endif endif
# Maintain compatibility with autotools # Maintain compatibility with autotools
if host_machine.system() == 'darwin' if os_darwin
common_ldflags += [ '-compatibility_version 1', '-current_version 1.0', ] common_ldflags += [ '-compatibility_version 1', '-current_version 1.0', ]
endif endif
@ -299,10 +304,11 @@ glib_dep = dependency('glib-2.0', version: glib_req,
fallback : ['glib', 'libglib_dep']) fallback : ['glib', 'libglib_dep'])
gobject_dep = dependency('gobject-2.0', version: glib_req, gobject_dep = dependency('gobject-2.0', version: glib_req,
fallback : ['glib', 'libgobject_dep']) 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, giowin32_dep = dependency('gio-windows-2.0', version: glib_req, required: win32_enabled,
fallback : ['glib', 'libgio_dep']) fallback : ['glib', 'libgio_dep'])
else endif
if os_unix
giounix_dep = dependency('gio-unix-2.0', version: glib_req, required: false, giounix_dep = dependency('gio-unix-2.0', version: glib_req, required: false,
fallback : ['glib', 'libgio_dep']) fallback : ['glib', 'libgio_dep'])
endif endif
@ -370,9 +376,10 @@ iso_codes_dep = dependency('iso-codes', required: false)
fontconfig_dep = [] # only used in x11 backend fontconfig_dep = [] # only used in x11 backend
atkbridge_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 platform_gio_dep = giowin32_dep
else endif
if os_unix
platform_gio_dep = giounix_dep platform_gio_dep = giounix_dep
endif endif
@ -582,7 +589,7 @@ if cc.has_function('bind_textdomain_codeset', dependencies: libintl_dep)
cdata.set('HAVE_BIND_TEXTDOMAIN_CODESET', 1) cdata.set('HAVE_BIND_TEXTDOMAIN_CODESET', 1)
endif endif
if host_machine.system() != 'windows' if os_unix
cdata.set('HAVE_GIO_UNIX', giounix_dep.found()) cdata.set('HAVE_GIO_UNIX', giounix_dep.found())
endif endif
@ -723,7 +730,7 @@ foreach pkg: pkgs
install_dir: pkg_install_dir) install_dir: pkg_install_dir)
endforeach endforeach
if host_machine.system() != 'windows' if os_unix
configure_file(input: 'gtk+-unix-print-4.0.pc.in', configure_file(input: 'gtk+-unix-print-4.0.pc.in',
output: 'gtk+-unix-print-4.0.pc', output: 'gtk+-unix-print-4.0.pc',
configuration: pkgconf, configuration: pkgconf,

View File

@ -1,8 +1,8 @@
# GDK backends # GDK backends
option('x11-backend', type: 'boolean', value: true, 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, 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, option('broadway-backend', type: 'boolean', value: false,
description : 'Enable the broadway (HTML5) gdk backend') description : 'Enable the broadway (HTML5) gdk backend')
option('win32-backend', type: 'boolean', value: true, option('win32-backend', type: 'boolean', value: true,

View File

@ -133,7 +133,7 @@ gtk_tests = [
['testtexture'], ['testtexture'],
] ]
if os_linux if os_unix
gtk_tests += [['testfontchooserdialog']] gtk_tests += [['testfontchooserdialog']]
endif endif