# Copyright 2016 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.
#
# With clang-FORTIFY enabled, this package fails to configure. We currently
# have a patch in review for sys-devel/crossdev that will fix this issue. Until
# we can pull that back, we just disable clang's FORTIFY. Note that this
# doesn't disable FORTIFY entirely; it just disables the enhanced,
# clang-specific version.

export CPPFLAGS+=' -D_CLANG_FORTIFY_DISABLE '

# Filter sanitizer flags from bash, https://crbug.com/841954.
cros_pre_src_prepare_filter_sanitizers() {
	filter_sanitizers
}
