# 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", ] } }