Meson: libintl is a public dependency of glib-2.0

On non-glibc platforms gettext is provided by extra libintl dependency.
We wrongly thought libintl is an internal dependency and applications
needs to explicitly link on it, but turns out that breaks many
applications and with autotools the .pc generated actually has -lintl in
public "Libs:".

https://bugzilla.gnome.org/show_bug.cgi?id=796085
This commit is contained in:
Xavier Claessens 2018-05-13 19:22:51 -04:00
parent e64113bca0
commit 7b8d8835f5
4 changed files with 15 additions and 16 deletions

View File

@ -794,7 +794,7 @@ libgio = library('gio-2.0',
include_directories : [configinc, gioinc], include_directories : [configinc, gioinc],
link_with : internal_deps, link_with : internal_deps,
# '$(gio_win32_res_ldflag)', # '$(gio_win32_res_ldflag)',
dependencies : [libintl, libz_dep, libdl_dep, libmount_dep, libglib_dep, dependencies : [libz_dep, libdl_dep, libmount_dep, libglib_dep,
libgobject_dep, libgmodule_dep, selinux_dep, xattr_dep, libgobject_dep, libgmodule_dep, selinux_dep, xattr_dep,
platform_deps, network_libs], platform_deps, network_libs],
c_args : gio_c_args, c_args : gio_c_args,
@ -894,13 +894,13 @@ executable('gio', gio_tool_sources,
c_args : gio_c_args, c_args : gio_c_args,
# intl.lib is not compatible with SAFESEH # intl.lib is not compatible with SAFESEH
link_args : noseh_link_args, link_args : noseh_link_args,
dependencies : [libintl, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep]) dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
executable('gresource', 'gresource-tool.c', executable('gresource', 'gresource-tool.c',
install : true, install : true,
# intl.lib is not compatible with SAFESEH # intl.lib is not compatible with SAFESEH
link_args : noseh_link_args, link_args : noseh_link_args,
dependencies : [libelf, libintl, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep]) dependencies : [libelf, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
executable('gio-querymodules', 'gio-querymodules.c', 'giomodule-priv.c', executable('gio-querymodules', 'gio-querymodules.c', 'giomodule-priv.c',
install : true, install : true,
@ -914,7 +914,7 @@ glib_compile_schemas = executable('glib-compile-schemas',
install : true, install : true,
# intl.lib is not compatible with SAFESEH # intl.lib is not compatible with SAFESEH
link_args : noseh_link_args, link_args : noseh_link_args,
dependencies : [libintl, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep]) dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
glib_compile_resources = executable('glib-compile-resources', glib_compile_resources = executable('glib-compile-resources',
[gconstructor_as_data_h, 'gvdb/gvdb-builder.c', 'glib-compile-resources.c'], [gconstructor_as_data_h, 'gvdb/gvdb-builder.c', 'glib-compile-resources.c'],
@ -922,14 +922,14 @@ glib_compile_resources = executable('glib-compile-resources',
c_args : gio_c_args, c_args : gio_c_args,
# intl.lib is not compatible with SAFESEH # intl.lib is not compatible with SAFESEH
link_args : noseh_link_args, link_args : noseh_link_args,
dependencies : [libintl, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep]) dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
executable('gsettings', 'gsettings-tool.c', executable('gsettings', 'gsettings-tool.c',
install : true, install : true,
c_args : gio_c_args, c_args : gio_c_args,
# intl.lib is not compatible with SAFESEH # intl.lib is not compatible with SAFESEH
link_args : noseh_link_args, link_args : noseh_link_args,
dependencies : [libintl, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep]) dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
install_data('gschema.dtd', install_data('gschema.dtd',
install_dir : join_paths(get_option('datadir'), 'glib-2.0/schemas')) install_dir : join_paths(get_option('datadir'), 'glib-2.0/schemas'))
@ -941,7 +941,7 @@ executable('gdbus', 'gdbus-tool.c',
c_args : gio_c_args, c_args : gio_c_args,
# intl.lib is not compatible with SAFESEH # intl.lib is not compatible with SAFESEH
link_args : noseh_link_args, link_args : noseh_link_args,
dependencies : [libintl, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep]) dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
if host_system != 'windows' if host_system != 'windows'
executable('gapplication', 'gapplication-tool.c', executable('gapplication', 'gapplication-tool.c',
@ -949,7 +949,7 @@ if host_system != 'windows'
c_args : gio_c_args, c_args : gio_c_args,
# intl.lib is not compatible with SAFESEH # intl.lib is not compatible with SAFESEH
link_args : noseh_link_args, link_args : noseh_link_args,
dependencies : [libintl, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep]) dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
endif endif
if enable_systemtap if enable_systemtap

View File

@ -3,7 +3,6 @@ common_gio_tests_deps = [
libgmodule_dep, libgmodule_dep,
libgobject_dep, libgobject_dep,
libgio_dep, libgio_dep,
libintl
] ]
subdir('gdbus-object-manager-example') subdir('gdbus-object-manager-example')

View File

@ -245,11 +245,11 @@ libglib_dep = declare_dependency(
link_with : libglib, link_with : libglib,
# thread_dep doesn't get pulled in from libglib atm, # thread_dep doesn't get pulled in from libglib atm,
# see https://github.com/mesonbuild/meson/issues/1426 # see https://github.com/mesonbuild/meson/issues/1426
dependencies : [thread_dep], dependencies : [thread_dep, libintl],
# We sadly need to export configinc here because everyone includes <glib/*.h> # We sadly need to export configinc here because everyone includes <glib/*.h>
include_directories : [configinc, glibinc]) include_directories : [configinc, glibinc])
pkg.generate(libraries : libglib, pkg.generate(libraries : [libglib, libintl],
libraries_private : [osx_ldflags], libraries_private : [osx_ldflags],
subdirs : ['glib-2.0'], subdirs : ['glib-2.0'],
extra_cflags : ['-I${libdir}/glib-2.0/include'], extra_cflags : ['-I${libdir}/glib-2.0/include'],
@ -271,23 +271,23 @@ if host_system == 'windows'
install : true, install : true,
gui_app : true, gui_app : true,
include_directories : configinc, include_directories : configinc,
dependencies : [libintl, libglib_dep]) dependencies : [libglib_dep])
executable('gspawn-win32-helper-console', 'gspawn-win32-helper.c', executable('gspawn-win32-helper-console', 'gspawn-win32-helper.c',
install : true, install : true,
c_args : ['-DHELPER_CONSOLE'], c_args : ['-DHELPER_CONSOLE'],
include_directories : configinc, include_directories : configinc,
dependencies : [libintl, libglib_dep]) dependencies : [libglib_dep])
else else
executable('gspawn-win64-helper', 'gspawn-win32-helper.c', executable('gspawn-win64-helper', 'gspawn-win32-helper.c',
install : true, install : true,
gui_app : true, gui_app : true,
include_directories : configinc, include_directories : configinc,
dependencies : [libintl, libglib_dep]) dependencies : [libglib_dep])
executable('gspawn-win64-helper-console', 'gspawn-win32-helper.c', executable('gspawn-win64-helper-console', 'gspawn-win32-helper.c',
install : true, install : true,
c_args : ['-DHELPER_CONSOLE'], c_args : ['-DHELPER_CONSOLE'],
include_directories : configinc, include_directories : configinc,
dependencies : [libintl, libglib_dep]) dependencies : [libglib_dep])
endif endif
else else
gtester = executable('gtester', 'gtester.c', gtester = executable('gtester', 'gtester.c',

View File

@ -68,7 +68,7 @@ libgobject = library('gobject-2.0',
soversion : soversion, soversion : soversion,
install : true, install : true,
include_directories : [configinc], include_directories : [configinc],
dependencies : [libintl, libffi_dep, libglib_dep], dependencies : [libffi_dep, libglib_dep],
c_args : ['-DG_LOG_DOMAIN="GLib-GObject"', '-DGOBJECT_COMPILATION'] + glib_hidden_visibility_args, c_args : ['-DG_LOG_DOMAIN="GLib-GObject"', '-DGOBJECT_COMPILATION'] + glib_hidden_visibility_args,
link_args : glib_link_flags, link_args : glib_link_flags,
) )