1diff --git a/gio/gdbus-2.0/codegen/meson.build b/gio/gdbus-2.0/codegen/meson.build
2index 6d19cd4ba..0205e5074 100644
3--- a/gio/gdbus-2.0/codegen/meson.build
4+++ b/gio/gdbus-2.0/codegen/meson.build
5@@ -20,7 +20,7 @@ gdbus_codegen_conf.set('DATADIR', glib_datadir)
6 # Install gdbus-codegen executable
7 gdbus_codegen = configure_file(input : 'gdbus-codegen.in',
8 output : 'gdbus-codegen',
9- install_dir : get_option('bindir'),
10+ install_dir : get_option('devbindir'),
11 install_tag : 'bin-devel',
12 configuration : gdbus_codegen_conf
13 )
14diff --git a/gio/meson.build b/gio/meson.build
15index 59c2b0fc0..87cbb8229 100644
16--- a/gio/meson.build
17+++ b/gio/meson.build
18@@ -885,14 +885,15 @@ pkg.generate(libgio,
19 variables : [
20 'schemasdir=' + '${datadir}' / schemas_subdir,
21 'dtdsdir=' + '${datadir}' / dtds_subdir,
22+ 'devbindir=' + get_option('devbindir'),
23 'giomoduledir=' + pkgconfig_giomodulesdir,
24 'gio=' + '${bindir}' / 'gio',
25- 'gio_querymodules=' + pkgconfig_multiarch_bindir / 'gio-querymodules',
26- 'glib_compile_schemas=' + pkgconfig_multiarch_bindir / 'glib-compile-schemas',
27- 'glib_compile_resources=' + '${bindir}' / 'glib-compile-resources',
28+ 'gio_querymodules=' + '${devbindir}' / 'gio-querymodules',
29+ 'glib_compile_schemas=' + '${devbindir}' / 'glib-compile-schemas',
30+ 'glib_compile_resources=' + '${devbindir}' / 'glib-compile-resources',
31 'gdbus=' + '${bindir}' /'gdbus',
32- 'gdbus_codegen=' + '${bindir}' / 'gdbus-codegen',
33- 'gresource=' + '${bindir}' / 'gresource',
34+ 'gdbus_codegen=' + '${devbindir}' / 'gdbus-codegen',
35+ 'gresource=' + '${devbindir}' / 'gresource',
36 'gsettings=' + '${bindir}' / 'gsettings',
37 ],
38 version : glib_version,
39@@ -995,6 +996,7 @@ gio_tool = executable('gio', gio_tool_sources,
40
41 executable('gresource', 'gresource-tool.c',
42 install : true,
43+ install_dir : get_option('devbindir'),
44 install_tag : 'bin',
45 # intl.lib is not compatible with SAFESEH
46 link_args : noseh_link_args,
47@@ -1002,7 +1004,7 @@ executable('gresource', 'gresource-tool.c',
48
49 gio_querymodules = executable('gio-querymodules', 'gio-querymodules.c', 'giomodule-priv.c',
50 install : true,
51- install_dir : multiarch_bindir,
52+ install_dir : get_option('devbindir'),
53 install_tag : 'bin',
54 c_args : gio_c_args,
55 # intl.lib is not compatible with SAFESEH
56@@ -1012,7 +1014,7 @@ gio_querymodules = executable('gio-querymodules', 'gio-querymodules.c', 'giomodu
57 glib_compile_schemas = executable('glib-compile-schemas',
58 ['glib-compile-schemas.c'],
59 install : true,
60- install_dir : multiarch_bindir,
61+ install_dir : get_option('devbindir'),
62 install_tag : 'bin',
63 # intl.lib is not compatible with SAFESEH
64 link_args : noseh_link_args,
65@@ -1021,6 +1023,7 @@ glib_compile_schemas = executable('glib-compile-schemas',
66 glib_compile_resources = executable('glib-compile-resources',
67 [gconstructor_as_data_h, 'glib-compile-resources.c'],
68 install : true,
69+ install_dir : get_option('devbindir'),
70 install_tag : 'bin-devel',
71 c_args : gio_c_args,
72 # intl.lib is not compatible with SAFESEH
73diff --git a/gio/tests/meson.build b/gio/tests/meson.build
74index 232ecca5e..e292927ac 100644
75--- a/gio/tests/meson.build
76+++ b/gio/tests/meson.build
77@@ -1182,16 +1182,18 @@ if have_bash and have_pkg_config
78
79 gio_binaries = [
80 'gio',
81- 'glib-compile-resources',
82 'gdbus',
83- 'gdbus-codegen',
84- 'gresource',
85 'gsettings',
86 ]
87- gio_multiarch_binaries = [
88+ gio_dev_binaries = [
89+ 'glib-compile-resources',
90+ 'gdbus-codegen',
91+ 'gresource',
92 'gio-querymodules',
93 'glib-compile-schemas',
94 ]
95+ gio_multiarch_binaries = [
96+ ]
97
98 foreach binary: gio_binaries
99 pkg_config_tests += [
100@@ -1200,6 +1202,13 @@ if have_bash and have_pkg_config
101 prefix / get_option('bindir') / binary)
102 ]
103 endforeach
104+ foreach binary: gio_dev_binaries
105+ pkg_config_tests += [
106+ 'test "$(pkg-config --variable=@0@ gio-2.0)" = "@1@"'.format(
107+ binary.underscorify(),
108+ prefix / get_option('devbindir') / binary)
109+ ]
110+ endforeach
111
112 foreach binary: gio_multiarch_binaries
113 pkg_config_tests += [
114diff --git a/glib/meson.build b/glib/meson.build
115index d2efebadc..eb9fa5b2f 100644
116--- a/glib/meson.build
117+++ b/glib/meson.build
118@@ -447,9 +447,10 @@ pkg.generate(libglib,
119 subdirs : ['glib-2.0'],
120 extra_cflags : ['-I${libdir}/glib-2.0/include'] + win32_cflags,
121 variables : [
122- 'glib_genmarshal=' + '${bindir}' / 'glib-genmarshal',
123- 'gobject_query=' + '${bindir}' / 'gobject-query',
124- 'glib_mkenums=' + '${bindir}' / 'glib-mkenums',
125+ 'devbindir=' + get_option('devbindir'),
126+ 'glib_genmarshal=' + '${devbindir}' / 'glib-genmarshal',
127+ 'gobject_query=' + '${devbindir}' / 'gobject-query',
128+ 'glib_mkenums=' + '${devbindir}' / 'glib-mkenums',
129 'glib_valgrind_suppressions=' + '${datadir}' /
130 valgrind_suppression_file_install_subdir /
131 fs.name(valgrind_suppression_file),
132@@ -490,6 +491,7 @@ if host_system == 'windows'
133 else
134 gtester = executable('gtester', 'gtester.c',
135 install : true,
136+ install_dir : get_option('devbindir'),
137 install_tag : 'bin-devel',
138 c_args : ['-UG_DISABLE_ASSERT'],
139 include_directories : configinc,
140@@ -505,7 +507,7 @@ report_conf.set('PYTHON', python_name)
141 configure_file(
142 input: 'gtester-report.in',
143 output: 'gtester-report',
144- install_dir: get_option('bindir'),
145+ install_dir: get_option('devbindir'),
146 install_tag : 'bin-devel',
147 configuration: report_conf,
148 install_mode: 'rwxr-xr-x'
149diff --git a/glib/tests/meson.build b/glib/tests/meson.build
150index f6efc593a..5522dcb96 100644
151--- a/glib/tests/meson.build
152+++ b/glib/tests/meson.build
153@@ -568,9 +568,9 @@ if have_bash and have_pkg_config
154 'test "$(pkg-config --variable=datadir glib-2.0)" = "@0@"'.format(
155 prefix / get_option('datadir')),
156 'test "$(pkg-config --variable=gobject_query glib-2.0)" = "@0@"'.format(
157- prefix / get_option('bindir') / 'gobject-query'),
158+ prefix / get_option('devbindir') / 'gobject-query'),
159 'test "$(pkg-config --variable=glib_mkenums glib-2.0)" = "@0@"'.format(
160- prefix / get_option('bindir') / 'glib-mkenums'),
161+ prefix / get_option('devbindir') / 'glib-mkenums'),
162 'test "$(pkg-config --variable=glib_valgrind_suppressions glib-2.0)" = "@0@"'.format(
163 prefix / get_option('datadir') /
164 valgrind_suppression_file_install_subdir / fs.name(valgrind_suppression_file)),
165diff --git a/gobject/meson.build b/gobject/meson.build
166index 2129aaf8a..da8462428 100644
167--- a/gobject/meson.build
168+++ b/gobject/meson.build
169@@ -94,7 +94,7 @@ foreach tool: python_tools
170 input : tool + '.in',
171 output : tool,
172 configuration : python_tools_conf,
173- install_dir : glib_bindir,
174+ install_dir : get_option('devbindir'),
175 install_tag : 'bin-devel',
176 )
177
178@@ -172,6 +172,7 @@ meson.override_dependency('gobject-2.0', libgobject_dep)
179
180 gobject_query = executable('gobject-query', 'gobject-query.c',
181 install : true,
182+ install_dir : get_option('devbindir'),
183 install_tag : 'bin-devel',
184 dependencies : [libglib_dep, libgobject_dep])
185
186diff --git a/meson_options.txt b/meson_options.txt
187index 69a2135bc..cfe14bb09 100644
188--- a/meson_options.txt
189+++ b/meson_options.txt
190@@ -4,6 +4,11 @@ option('runtime_libdir',
191 description : 'install runtime libraries relative to libdir',
192 deprecated: true)
193
194+option('devbindir',
195+ type : 'string',
196+ value : '',
197+ description : 'bindir for development tools')
198+
199 option('charsetalias_dir',
200 type : 'string',
201 value : '',
202diff --git a/tools/meson.build b/tools/meson.build
203index 257312ebf..f8315392b 100644
204--- a/tools/meson.build
205+++ b/tools/meson.build
206@@ -8,7 +8,7 @@ if have_sh
207 gettextize_conf.set('datarootdir', glib_datadir)
208 gettextize_conf.set('datadir', glib_datadir)
209 configure_file(input : 'glib-gettextize.in',
210- install_dir : glib_bindir,
211+ install_dir : get_option('devbindir'),
212 install_tag : 'bin-devel',
213 output : 'glib-gettextize',
214 configuration : gettextize_conf)