Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(149)

Side by Side Diff: .gn

Issue 1905433002: Add documentation for exec_script and gypi_to_gn (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | build/gypi_to_gn.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # This file is used by the GN meta build system to find the root of the source 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 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. 3 # file, run "gn help dotfile" at the command line.
4 4
5 # The location of the build configuration file. 5 # The location of the build configuration file.
6 buildconfig = "//build/config/BUILDCONFIG.gn" 6 buildconfig = "//build/config/BUILDCONFIG.gn"
7 7
8 # The secondary source root is a parallel directory tree where 8 # The secondary source root is a parallel directory tree where
9 # GN build files are placed when they can not be placed directly 9 # GN build files are placed when they can not be placed directly
10 # in the source tree, e.g. for third party source trees. 10 # in the source tree, e.g. for third party source trees.
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 "//ui/web_dialogs/*", 132 "//ui/web_dialogs/*",
133 "//ui/webui/*", 133 "//ui/webui/*",
134 "//ui/wm/*", 134 "//ui/wm/*",
135 "//url/*", 135 "//url/*",
136 "//v8/*", 136 "//v8/*",
137 "//win8/*", 137 "//win8/*",
138 ] 138 ]
139 139
140 # These are the list of GN files that run exec_script. This whitelist exists 140 # These are the list of GN files that run exec_script. This whitelist exists
141 # to force additional review for new uses of exec_script, which is strongly 141 # to force additional review for new uses of exec_script, which is strongly
142 # discouraged except for gypi_to_gn calls. 142 # discouraged.
143 #
144 # GYPI_TO_GN
145 #
146 # Most of these entries are for gypi_to_gn calls. We should not be adding new
147 # calls to this script in the build (see //build/gypi_to_gn.py for detailed
148 # advice). The only time you should be editing this list for gypi_to_gn
149 # purposes is when moving an existing call to a different place.
150 #
151 # PLEASE READ
152 #
153 # You should almost never need to add new exec_script calls. exec_script is
154 # slow, especially on Windows, and can cause confusing effects. Although
155 # individually each call isn't slow or necessarily very confusing, at the scale
156 # of our repo things get out of hand quickly. By strongly pushing back on all
157 # additions, we keep the build fast and clean. If you think you need to add a
158 # new call, please consider:
159 #
160 # - Do not use a script to check for the existance of a file or directory to
161 # enable a different mode. Instead, use GN build args to enable or disable
162 # functionality and set options. An example is checking for a file in the
163 # src-internal repo to see if the corresponding src-internal feature should
164 # be enabled. There are several things that can go wrong with this:
165 #
166 # - It's myserious what causes some things to happen. Although in many cases
Dirk Pranke 2016/04/19 21:36:06 s/myserious/mysterious
167 # such behavior can be conveniently automatic, GN optimizes for explicit
168 # and obvious behavior so people can more easily diagnose problems.
169 #
170 # - The user can't enable a mode for one build and not another. With GN build
171 # args, the user can choose the exact configuration of multiple builds
172 # using one checkout. But implicitly basing flags on the state of the
173 # checkout, this functionality is broken.
174 #
175 # - It's easy to get stale files. If for example the user edits the gclient
176 # to stop checking out src-internal (or any other optional thing), it's
177 # easy to end up with stale files still mysteriously triggering build
178 # conditions that are no longer appropriate (yes, this happens in real
179 # life).
180 #
181 # - Do not use a script to iterate files in a directory (glob):
182 #
183 # - This has the same "stale file" problem as the above discussion. Various
184 # operations can leave untracked files in the source tree which can cause
185 # surprising effects.
186 #
187 # - It becomes impossible to use "git grep" to find where a certain file is
188 # referenced. This operation is very common and people really do get
189 # confused when things aren't listed.
190 #
191 # - It's easy to screw up. One common case is a build-time script that packs
192 # up a directory. The author notices that the script isn't re-run when the
193 # directory is updated, so adds a glob so all the files are listed as
194 # inputs. This seems to work great... until a file is deleted. When a
195 # file is deleted, all the inputs the glob lists will still be up-to-date
196 # and no command-lines will have been changed. The action will not be
197 # re-run and the build will be broken. It is possible to get this correct
198 # using glob, and it's possible to mess it up without glob, but globs make
199 # this situation much easier to create. if the build always lists the
200 # files and passes them to a script, it will always be correct.
143 exec_script_whitelist = [ 201 exec_script_whitelist = [
144 "//android_webview/BUILD.gn", 202 "//android_webview/BUILD.gn",
145 "//ash/BUILD.gn", 203 "//ash/BUILD.gn",
146 "//build/config/BUILD.gn", 204 "//build/config/BUILD.gn",
147 "//build/config/android/config.gni", 205 "//build/config/android/config.gni",
148 "//build/config/android/internal_rules.gni", 206 "//build/config/android/internal_rules.gni",
149 "//build/config/android/rules.gni", 207 "//build/config/android/rules.gni",
150 "//build/config/compiler/BUILD.gn", 208 "//build/config/compiler/BUILD.gn",
151 "//build/config/gcc/gcc_version.gni", 209 "//build/config/gcc/gcc_version.gni",
152 "//build/config/ios/ios_sdk.gni", 210 "//build/config/ios/ios_sdk.gni",
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 "//tools/gn/format_test_data/055.golden", 300 "//tools/gn/format_test_data/055.golden",
243 "//tools/gn/function_exec_script.cc", 301 "//tools/gn/function_exec_script.cc",
244 "//tools/gn/gn.gyp", 302 "//tools/gn/gn.gyp",
245 "//tools/gn/input_conversion.cc", 303 "//tools/gn/input_conversion.cc",
246 "//tools/gn/misc/emacs/gn.el", 304 "//tools/gn/misc/emacs/gn.el",
247 "//tools/gn/misc/vim/syntax/gn.vim", 305 "//tools/gn/misc/vim/syntax/gn.vim",
248 "//tools/gn/setup.cc", 306 "//tools/gn/setup.cc",
249 "//ui/accessibility/BUILD.gn", 307 "//ui/accessibility/BUILD.gn",
250 "//ui/views/BUILD.gn", 308 "//ui/views/BUILD.gn",
251 ] 309 ]
OLDNEW
« no previous file with comments | « no previous file | build/gypi_to_gn.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698