# Copyright 2017 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

export glib_cv_have_qsort_r=yes

# The following ac_cv_alignof_* work around an issue in AC_CHECK_ALIGNOF,
# which fails under cross-compilation with newer gcc.
# See http://lists.gnu.org/archive/html/bug-autoconf/2012-09/msg00001.html
# for more details.
#
# TODO(benchan,vapier): Remove the workaround after the AC_CHECK_ALIGNOF
# issue is fixed.
export ac_cv_alignof_guint32=4
export ac_cv_alignof_guint64=8
export ac_cv_alignof_unsigned_long=8

# gresource tool is used to debug ELF files that use GResource to store blobs
# in the binary file.
# glib-mkenums is a small tool to parse C code and generate enum descriptions in
# text format, used to produce C code that contains enum values as strings.
# Install them only on the host.
if [[ $(cros_target) != "cros_host" ]]; then
	glib_mask="
		/usr/bin/gresource
		/usr/bin/glib-mkenums
	"
	PKG_INSTALL_MASK+=" ${glib_mask}"
	INSTALL_MASK+=" ${glib_mask}"
	unset glib_mask
fi
