You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.3 KiB
77 lines
2.3 KiB
# Copyright 2020 The Pigweed Authors
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
# use this file except in compliance with the License. You may obtain a copy of
|
|
# the License at
|
|
#
|
|
# https://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations under
|
|
# the License.
|
|
|
|
import("//build_overrides/pigweed.gni")
|
|
|
|
# See https://github.com/google/sanitizers
|
|
config("sanitize_address") {
|
|
cflags = [ "-fsanitize=address" ]
|
|
ldflags = cflags
|
|
}
|
|
|
|
config("sanitize_memory") {
|
|
cflags = [ "-fsanitize=memory" ]
|
|
ldflags = cflags
|
|
}
|
|
|
|
config("sanitize_undefined") {
|
|
cflags = [ "-fsanitize=undefined" ]
|
|
ldflags = cflags
|
|
}
|
|
|
|
config("sanitize_coverage") {
|
|
cflags = [
|
|
"-fprofile-instr-generate",
|
|
"-fcoverage-mapping",
|
|
]
|
|
ldflags = cflags
|
|
}
|
|
|
|
# Locate XCode's sysroot for Clang.
|
|
config("xcode_sysroot") {
|
|
if (current_os == "mac") {
|
|
_xcode_sysroot = exec_script("$dir_pw_build/py/pw_build/exec.py",
|
|
[
|
|
"--",
|
|
"/usr/bin/xcrun",
|
|
"--show-sdk-path",
|
|
],
|
|
"trim string")
|
|
cflags = [ "--sysroot=$_xcode_sysroot" ]
|
|
ldflags = cflags
|
|
}
|
|
}
|
|
|
|
# The CIPD provided Clang/LLVM toolchain must link against the matched
|
|
# libc++ which is also from CIPD. However, by default, Clang on Mac (but
|
|
# not on Linux) will fall back to the system libc++, which is
|
|
# incompatible due to an ABI change.
|
|
#
|
|
# Pull the appropriate pathd from our Pigweed env setup.
|
|
config("no_system_libcpp") {
|
|
if (current_os == "mac") {
|
|
install_dir = getenv("PW_PIGWEED_CIPD_INSTALL_DIR")
|
|
assert(install_dir != "",
|
|
"You forgot to activate the Pigweed environment; " +
|
|
"did you source pw_env_setup/setup.sh?")
|
|
ldflags = [
|
|
# Force dropping the system libc++
|
|
"-nostdlib++",
|
|
|
|
# Use the libc++ from CIPD.
|
|
getenv("PW_PIGWEED_CIPD_INSTALL_DIR") + "/lib/libc++.a",
|
|
]
|
|
}
|
|
}
|