Fix for x86_64 build fail
[platform/upstream/connectedhomeip.git] / third_party / pigweed / repo / pw_build / 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 import("$dir_pw_build/python.gni")
18 import("$dir_pw_docgen/docs.gni")
19
20 # IMPORTANT: The compilation flags in this file must be kept in sync with
21 #            the CMake flags pw_build/CMakeLists.txt.
22
23 config("colorize_output") {
24   cflags = [
25     # Colorize output. Ninja's Clang invocation disables color by default.
26     "-fdiagnostics-color",
27   ]
28   ldflags = cflags
29 }
30
31 config("debugging") {
32   # Enable debug symbol generation. This has no effect on final code size.
33   cflags = [ "-g" ]
34 }
35
36 config("extra_debugging") {
37   # Include things like macro expansion in debug info.
38   cflags = [ "-g3" ]
39 }
40
41 # Optimization levels
42 config("optimize_debugging") {
43   cflags = [ "-Og" ]
44   ldflags = cflags
45 }
46
47 config("optimize_speed") {
48   cflags = [ "-O2" ]
49   ldflags = cflags
50 }
51
52 config("optimize_more_speed") {
53   cflags = [ "-O3" ]
54   ldflags = cflags
55 }
56
57 config("optimize_size") {
58   cflags = [ "-Os" ]
59   ldflags = cflags
60 }
61
62 # Standard compiler flags to reduce output binary size.
63 config("reduced_size") {
64   cflags = [
65     "-fno-common",
66     "-fno-exceptions",
67     "-ffunction-sections",
68     "-fdata-sections",
69   ]
70   cflags_cc = [ "-fno-rtti" ]
71 }
72
73 config("strict_warnings") {
74   cflags = [
75     "-Wall",
76     "-Wextra",
77     "-Wimplicit-fallthrough",
78     "-Wcast-qual",
79     "-Wundef",
80     "-Wpointer-arith",
81
82     # Make all warnings errors, except for the exemptions below.
83     "-Werror",
84     "-Wno-error=cpp",  # preprocessor #warning statement
85     "-Wno-error=deprecated-declarations",  # [[deprecated]] attribute
86   ]
87   cflags_cc = [ "-Wnon-virtual-dtor" ]
88 }
89
90 # This config contains warnings that we don't necessarily recommend projects
91 # enable, but are enabled for upstream Pigweed for maximum project
92 # compatibility.
93 config("extra_strict_warnings") {
94   cflags = [
95     "-Wshadow",
96     "-Wredundant-decls",
97   ]
98 }
99
100 config("cpp11") {
101   cflags_cc = [ "-std=c++11" ]
102 }
103
104 config("cpp14") {
105   cflags_cc = [ "-std=c++14" ]
106 }
107
108 config("cpp17") {
109   cflags_cc = [
110     "-std=c++17",
111
112     # Allow uses of the register keyword, which may appear in C headers.
113     "-Wno-register",
114   ]
115 }
116
117 # This empty target is used as the default value for module configurations.
118 # Projects may set pw_build_DEFAULT_MODULE_CONFIG to a different GN target that
119 # overrides modules' configuration options via macro definitions or a header
120 # forcibly included with `-include`.
121 group("empty") {
122 }
123
124 pool("pip_pool") {
125   depth = 1
126 }
127
128 # Requirements for the pw_python_package lint targets.
129 pw_python_requirements("python_lint") {
130   requirements = [
131     "mypy==0.800",
132     "pylint==2.6.0",
133   ]
134 }
135
136 pw_doc_group("docs") {
137   sources = [ "docs.rst" ]
138 }
139
140 # Pool to limit a single thread to download external Go packages at a time.
141 pool("go_download_pool") {
142   depth = 1
143 }