[M67 Dev][EFL] Format chromium-efl according to Chromium style
[platform/framework/web/chromium-efl.git] / tizen_src / .gn
1 # This file is used by the GN meta build system to find the root of the source
2 # tree and to set startup options. For documentation on the values set in this
3 # file, run "gn help dotfile" at the command line.
4
5 import("//build/dotfile_settings.gni")
6
7 # The location of the build configuration file.
8 buildconfig = "//tizen_src/build/config/BUILDCONFIG.gn"
9
10 # The secondary source root is a parallel directory tree where
11 # GN build files are placed when they can not be placed directly
12 # in the source tree, e.g. for third party source trees.
13 secondary_source = "//build/secondary/"
14
15 # These arguments override the default values for items in a declare_args
16 # block. "gn args" in turn can override these.
17 #
18 # In general the value for a build arg in the declare_args block should be the
19 # default. In some cases, a DEPS-ed in project will want different defaults for
20 # being built as part of Chrome vs. being built standalone. In this case, the
21 # Chrome defaults should go here. There should be no overrides here for
22 # values declared in the main Chrome repository.
23 #
24 # Important note for defining defaults: This file is executed before the
25 # BUILDCONFIG.gn file. That file sets up the global variables like "is_ios".
26 # This means that the default_args can not depend on the platform,
27 # architecture, or other build parameters. If you really need that, the other
28 # repo should define a flag that toggles on a behavior that implements the
29 # additional logic required by Chrome to set the variables.
30 default_args = {
31   # TODO(brettw) bug 684096: Chrome on iOS does not build v8, so "gn gen" prints
32   # a warning that "Build argument has no effect". When adding a v8 variable, it
33   # also needs to be defined to src/ios/BUILD.gn (respectively removed from both
34   # location when it is removed).
35
36   v8_extra_library_files = [
37     # Dependencies used by the extra libraries. Putting them here causes them
38     # to be executed first during snapshot creation.
39     "//third_party/blink/renderer/core/streams/CommonOperations.js",
40     "//third_party/blink/renderer/core/streams/CommonStrings.js",
41     "//third_party/blink/renderer/core/streams/SimpleQueue.js",
42
43     # Extra libraries.
44     "//third_party/blink/renderer/core/streams/ByteLengthQueuingStrategy.js",
45     "//third_party/blink/renderer/core/streams/CountQueuingStrategy.js",
46     "//third_party/blink/renderer/core/streams/ReadableStream.js",
47     "//third_party/blink/renderer/core/streams/WritableStream.js",
48   ]
49   v8_experimental_extra_library_files = []
50   v8_enable_gdbjit = false
51   v8_imminent_deprecation_warnings = false
52
53   # TODO(jochen): Remove this. http://crbug.com/v8/5830,
54   # http://crbug.com/728583.
55   v8_check_microtasks_scopes_consistency = false
56 }
57
58 # These are the targets to check headers for by default. The files in targets
59 # matching these patterns (see "gn help label_pattern" for format) will have
60 # their includes checked for proper dependencies when you run either
61 # "gn check" or "gn gen --check".
62 check_targets = [
63   #"//apps/*",  # Medium-hard.
64   "//ash/*",
65   "//base/*",
66   "//blink/*",
67   "//build/*",
68   "//cc/*",
69
70   #"//chrome/*",  # Epic number of errors.
71   "//chrome/app/*",
72   "//chrome/app_shim/*",
73   "//chrome/browser/chromeos/*",
74   "//chrome/browser/extensions/*",
75   "//chrome/browser/ui/*",
76   "//chrome/common/*",
77   "//chrome/installer/*",
78   "//chrome/profiling",
79   "//chrome/third_party/mozilla_security_manager/*",
80   "//chrome/tools/*",
81   "//chrome/utility/*",
82   "//chromecast/*",
83   "//chromeos/*",
84   "//chrome_elf/*",
85   "//cloud_print/*",
86   "//components/*",
87   "//content/*",
88   "//courgette/*",
89   "//crypto/*",
90   "//data/*",
91   "//dbus/*",
92   "//device/*",
93
94   #"//extensions/*",  # Lots of errors.
95   "//extensions:extensions_unittests",
96   "//extensions/browser:browser_tests",
97   "//extensions/browser:unit_tests",
98   "//extensions/common:unit_tests",
99   "//extensions/renderer:unit_tests",
100   "//extensions/shell:browser_tests",
101   "//extensions/shell:unit_tests",
102   "//extensions/utility:unit_tests",
103   "//gin/*",
104   "//google_apis/*",
105   "//google_update/*",
106   "//gpu/*",
107
108   "//ios/*",
109   "//ios_internal/*",
110   "//ipc/*",
111
112   #"//jingle/*",
113   "//mash/*",
114
115   "//media/*",
116   "//mojo/*",
117
118   #"//native_client/*",
119   "//net/*",
120
121   #"//pdf/*",  # Medium-hard.
122   #"//ppapi/*",  # Lots of errors.
123   "//ppapi/examples/*",
124   "//printing/*",
125
126   #"//remoting/*",  # Medium-hard.
127   "//rlz/*",
128
129   #"//sandbox/*",  # Medium-hard.
130   "//services/*",
131   "//skia/*",
132   "//sql/*",
133   "//storage/*",
134   "//testing/*",
135
136   #"//third_party/*",  # May not ever want this.
137   "//third_party/breakpad/*",
138   "//third_party/brotli/*",
139   "//third_party/hunspell/*",
140   "//third_party/leveldatabase/*",
141   "//third_party/libaddressinput/*",
142   "//third_party/libphonenumber/*",
143   "//third_party/libwebp/*",
144   "//third_party/snappy/*",
145   "//third_party/WebKit/*",
146   "//tools/*",
147
148   "//ui/*",
149   "//url/*",
150   "//v8/*",
151   "//win8/*",
152 ]
153
154 # These are the list of GN files that run exec_script. This whitelist exists
155 # to force additional review for new uses of exec_script, which is strongly
156 # discouraged.
157 #
158 # GYPI_TO_GN
159 #
160 # Some of these entries are for legacy gypi_to_gn calls. We should not be
161 # adding new calls to this script in the build (see //build/gypi_to_gn.py for
162 # detailed advice). The only time you should be editing this list for
163 # gypi_to_gn purposes is when moving an existing call to a different place.
164 #
165 # PLEASE READ
166 #
167 # You should almost never need to add new exec_script calls. exec_script is
168 # slow, especially on Windows, and can cause confusing effects. Although
169 # individually each call isn't slow or necessarily very confusing, at the scale
170 # of our repo things get out of hand quickly. By strongly pushing back on all
171 # additions, we keep the build fast and clean. If you think you need to add a
172 # new call, please consider:
173 #
174 # - Do not use a script to check for the existance of a file or directory to
175 #   enable a different mode. Instead, use GN build args to enable or disable
176 #   functionality and set options. An example is checking for a file in the
177 #   src-internal repo to see if the corresponding src-internal feature should
178 #   be enabled. There are several things that can go wrong with this:
179 #
180 #    - It's mysterious what causes some things to happen. Although in many cases
181 #      such behavior can be conveniently automatic, GN optimizes for explicit
182 #      and obvious behavior so people can more easily diagnose problems.
183 #
184 #    - The user can't enable a mode for one build and not another. With GN build
185 #      args, the user can choose the exact configuration of multiple builds
186 #      using one checkout. But implicitly basing flags on the state of the
187 #      checkout, this functionality is broken.
188 #
189 #    - It's easy to get stale files. If for example the user edits the gclient
190 #      to stop checking out src-internal (or any other optional thing), it's
191 #      easy to end up with stale files still mysteriously triggering build
192 #      conditions that are no longer appropriate (yes, this happens in real
193 #      life).
194 #
195 # - Do not use a script to iterate files in a directory (glob):
196 #
197 #    - This has the same "stale file" problem as the above discussion. Various
198 #      operations can leave untracked files in the source tree which can cause
199 #      surprising effects.
200 #
201 #    - It becomes impossible to use "git grep" to find where a certain file is
202 #      referenced. This operation is very common and people really do get
203 #      confused when things aren't listed.
204 #
205 #    - It's easy to screw up. One common case is a build-time script that packs
206 #      up a directory. The author notices that the script isn't re-run when the
207 #      directory is updated, so adds a glob so all the files are listed as
208 #      inputs. This seems to work great... until a file is deleted. When a
209 #      file is deleted, all the inputs the glob lists will still be up to date
210 #      and no command-lines will have been changed. The action will not be
211 #      re-run and the build will be broken. It is possible to get this correct
212 #      using glob, and it's possible to mess it up without glob, but globs make
213 #      this situation much easier to create. if the build always lists the
214 #      files and passes them to a script, it will always be correct.
215
216 exec_script_whitelist =
217     build_dotfile_settings.exec_script_whitelist + [
218       # Whitelist entries for //build should go into
219       # //build/dotfile_settings.gni instead, so that they can be shared
220       # with other repos. The entries in this list should be only for files
221       # in the Chromium repo outside of //build.
222       "//build_overrides/build.gni",
223
224       # TODO(dgn): Layer violation but breaks the build otherwise, see
225       # https://crbug.com/474506.
226       "//clank/java/BUILD.gn",
227       "//clank/native/BUILD.gn",
228
229       "//cowboy/BUILD.gn",
230       "//cowboy/make_sbrowser_apk.gni",
231       "//remoting/host/installer/linux/BUILD.gn",
232       "//remoting/remoting_version.gni",
233       "//remoting/host/installer/win/generate_clsids.gni",
234
235       "//terrace/BUILD.gn",
236       "//terrace/make_terrace_target.gni",
237
238       # TODO(dpranke): Get these from the appropriate repos instead.
239       "//third_party/angle/BUILD.gn",
240       "//third_party/angle/src/tests/BUILD.gn",
241       "//third_party/angle/src/vulkan_support/BUILD.gn",
242       "//third_party/catapult/tracing/BUILD.gn",
243       "//third_party/google_input_tools/inputview.gni",
244       "//third_party/skia/gn/shared_sources.gni",
245
246       "//tizen_src/ewk/efl_integration/BUILD.gn",
247
248       # CLD2 should be removed soon, delete this when we do.
249       "//third_party/cld_2/BUILD.gn",
250       "//tools/grit/grit_rule.gni",
251
252       # Not gypi-to-gn.
253       "//google_apis/BUILD.gn",
254       "//printing/BUILD.gn",
255
256       "//v8/BUILD.gn",
257     ]