Fix for x86_64 build fail
[platform/upstream/connectedhomeip.git] / third_party / pigweed / repo / pw_toolchain / host_clang / BUILD.gn
1 # Copyright 2020 The Pigweed Authors
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License"); you may not
4 # use this file except in compliance with the License. You may obtain a copy of
5 # the License at
6 #
7 #     https://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12 # License for the specific language governing permissions and limitations under
13 # the License.
14
15 import("//build_overrides/pigweed.gni")
16
17 # See https://github.com/google/sanitizers
18 config("sanitize_address") {
19   cflags = [ "-fsanitize=address" ]
20   ldflags = cflags
21 }
22
23 config("sanitize_memory") {
24   cflags = [ "-fsanitize=memory" ]
25   ldflags = cflags
26 }
27
28 config("sanitize_undefined") {
29   cflags = [ "-fsanitize=undefined" ]
30   ldflags = cflags
31 }
32
33 config("sanitize_coverage") {
34   cflags = [
35     "-fprofile-instr-generate",
36     "-fcoverage-mapping",
37   ]
38   ldflags = cflags
39 }
40
41 # Locate XCode's sysroot for Clang.
42 config("xcode_sysroot") {
43   if (current_os == "mac") {
44     _xcode_sysroot = exec_script("$dir_pw_build/py/pw_build/exec.py",
45                                  [
46                                    "--",
47                                    "/usr/bin/xcrun",
48                                    "--show-sdk-path",
49                                  ],
50                                  "trim string")
51     cflags = [ "--sysroot=$_xcode_sysroot" ]
52     ldflags = cflags
53   }
54 }
55
56 # The CIPD provided Clang/LLVM toolchain must link against the matched
57 # libc++ which is also from CIPD. However, by default, Clang on Mac (but
58 # not on Linux) will fall back to the system libc++, which is
59 # incompatible due to an ABI change.
60 #
61 # Pull the appropriate pathd from our Pigweed env setup.
62 config("no_system_libcpp") {
63   if (current_os == "mac") {
64     install_dir = getenv("PW_PIGWEED_CIPD_INSTALL_DIR")
65     assert(install_dir != "",
66            "You forgot to activate the Pigweed environment; " +
67                "did you source pw_env_setup/setup.sh?")
68     ldflags = [
69       # Force dropping the system libc++
70       "-nostdlib++",
71
72       # Use the libc++ from CIPD.
73       getenv("PW_PIGWEED_CIPD_INSTALL_DIR") + "/lib/libc++.a",
74     ]
75   }
76 }