# Copyright 2020 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# This config is applied to targets that depend on libhwy
config("libhwy_external_config") {
include_dirs = [ "src" ]
defines = []
if (target_cpu == "x86") {
# Highway automatically disables AVX2 and AVX3 targets when compiling in
# 32-bit mode due to bugs in the generated code. However, when doing so it
# prints a warning (#pragma message). This flag silences that warning by
# explicitly disabling AVX2 and AVX3 targets.
defines += [ "HWY_BROKEN_TARGETS=(HWY_AVX2|HWY_AVX3)" ]
}
if (target_cpu == "arm64") {
# There are Chrome targets that use HWY_ALIGN on absl::uint128. This breaks
# with SVE, since HWY_ALIGN == 8 for it and the minimal alignment requirement
# for absl::uint128 is 16.
defines += [ "HWY_BROKEN_TARGETS=HWY_ALL_SVE" ]
}
}
source_set("libhwy") {
sources = [
"src/hwy/abort.cc",
"src/hwy/aligned_allocator.cc",
"src/hwy/per_target.cc",
"src/hwy/print.cc",
"src/hwy/stats.cc",
"src/hwy/targets.cc",
"src/hwy/timer.cc",
]
public_configs = [ ":libhwy_external_config" ]
}