brettw | 2bafab4 | 2014-11-27 18:36:17 | [diff] [blame] | 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. |
[email protected] | 96ea63d | 2013-07-30 10:17:07 | [diff] [blame] | 4 | |
dpranke | 1cfa531 | 2016-11-22 03:07:47 | [diff] [blame] | 5 | import("//build/dotfile_settings.gni") |
| 6 | |
[email protected] | 96ea63d | 2013-07-30 10:17:07 | [diff] [blame] | 7 | # The location of the build configuration file. |
| 8 | buildconfig = "//build/config/BUILDCONFIG.gn" |
| 9 | |
| 10 | # The secondary source root is a parallel directory tree where |
scheib | ec4b3a4 | 2014-09-18 21:50:13 | [diff] [blame] | 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. |
[email protected] | 26688b86e | 2014-06-19 13:14:26 | [diff] [blame] | 13 | secondary_source = "//build/secondary/" |
brettw | 2bafab4 | 2014-11-27 18:36:17 | [diff] [blame] | 14 | |
brettw | 04a0e48 | 2017-01-25 21:29:59 | [diff] [blame] | 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 | default_args = { |
| 24 | v8_extra_library_files = [ |
| 25 | # Dependencies used by the extra libraries. Putting them here causes them |
| 26 | # to be executed first during snapshot creation. |
| 27 | "//third_party/WebKit/Source/core/streams/CommonStrings.js", |
| 28 | |
| 29 | # Extra libraries. |
| 30 | "//third_party/WebKit/Source/core/streams/ByteLengthQueuingStrategy.js", |
| 31 | "//third_party/WebKit/Source/core/streams/CountQueuingStrategy.js", |
| 32 | "//third_party/WebKit/Source/core/streams/ReadableStream.js", |
| 33 | ] |
ricea | 9ba4a643 | 2017-01-26 17:11:57 | [diff] [blame^] | 34 | v8_experimental_extra_library_files = [ |
| 35 | "//third_party/WebKit/Source/core/streams/ReadableStreamExperimentalPipeTo.js", |
| 36 | "//third_party/WebKit/Source/core/streams/WritableStream.js", |
| 37 | ] |
brettw | 04a0e48 | 2017-01-25 21:29:59 | [diff] [blame] | 38 | v8_enable_inspector = true |
| 39 | v8_enable_gdbjit = false |
| 40 | v8_imminent_deprecation_warnings = false |
| 41 | } |
| 42 | |
brettw | 2bafab4 | 2014-11-27 18:36:17 | [diff] [blame] | 43 | # These are the targets to check headers for by default. The files in targets |
| 44 | # matching these patterns (see "gn help label_pattern" for format) will have |
| 45 | # their includes checked for proper dependencies when you run either |
| 46 | # "gn check" or "gn gen --check". |
brettw | e75311d | 2015-02-17 23:56:46 | [diff] [blame] | 47 | check_targets = [ |
brettw | bc44c0a9 | 2015-02-20 22:30:39 | [diff] [blame] | 48 | #"//apps/*", # Medium-hard. |
msw | afbb0c0 | 2016-02-11 01:54:12 | [diff] [blame] | 49 | "//ash/*", |
brettw | 29c2f89 | 2015-11-27 17:03:49 | [diff] [blame] | 50 | "//base/*", |
brettw | bc44c0a9 | 2015-02-20 22:30:39 | [diff] [blame] | 51 | "//blink/*", |
| 52 | "//breakpad/*", |
| 53 | "//build/*", |
brettw | e75311d | 2015-02-17 23:56:46 | [diff] [blame] | 54 | "//cc/*", |
brettw | bc44c0a9 | 2015-02-20 22:30:39 | [diff] [blame] | 55 | |
| 56 | #"//chrome/*", # Epic number of errors. |
tfarina | 8e58488 | 2016-01-09 00:50:15 | [diff] [blame] | 57 | "//chrome/app/*", |
brettw | afa8f54 | 2016-08-24 05:16:24 | [diff] [blame] | 58 | "//chrome/browser/extensions/*", |
brettw | b3e6014 | 2016-09-23 19:55:01 | [diff] [blame] | 59 | "//chrome/browser/ui/*", |
brettw | 0b9c96b1 | 2015-10-15 23:06:04 | [diff] [blame] | 60 | "//chrome/common/*", |
brettw | f986f957 | 2015-10-07 17:18:15 | [diff] [blame] | 61 | "//chrome/installer/*", |
brettw | 0b9c96b1 | 2015-10-15 23:06:04 | [diff] [blame] | 62 | "//chrome/third_party/mozilla_security_manager/*", |
tfarina | 961ad5d | 2016-01-06 22:27:11 | [diff] [blame] | 63 | "//chrome/tools/*", |
tfarina | 02f77a4 | 2015-12-17 22:38:23 | [diff] [blame] | 64 | "//chrome/utility/*", |
brettw | bc44c0a9 | 2015-02-20 22:30:39 | [diff] [blame] | 65 | "//chromecast/*", |
oshima | 3f959fa8 | 2016-05-02 18:42:57 | [diff] [blame] | 66 | "//chromeos/*", |
brettw | a219e92 | 2015-12-07 22:23:39 | [diff] [blame] | 67 | "//chrome_elf/*", |
| 68 | "//cloud_print/*", |
brettw | b5440a9 | 2015-12-03 00:47:12 | [diff] [blame] | 69 | "//components/*", |
brettw | d064ace4e | 2016-07-21 21:38:53 | [diff] [blame] | 70 | "//content/*", |
brettw | bc44c0a9 | 2015-02-20 22:30:39 | [diff] [blame] | 71 | "//courgette/*", |
| 72 | "//crypto/*", |
| 73 | "//data/*", |
| 74 | "//dbus/*", |
brettw | bda835b | 2015-12-04 22:12:30 | [diff] [blame] | 75 | "//device/*", |
brettw | bc44c0a9 | 2015-02-20 22:30:39 | [diff] [blame] | 76 | |
| 77 | #"//extensions/*", # Lots of errors. |
brettw | dc1e618 | 2016-08-30 20:52:13 | [diff] [blame] | 78 | "//extensions:extensions_unittests", |
| 79 | "//extensions/browser:browser_tests", |
| 80 | "//extensions/browser:unit_tests", |
| 81 | "//extensions/common:unit_tests", |
| 82 | "//extensions/renderer:unit_tests", |
| 83 | "//extensions/shell:browser_tests", |
| 84 | "//extensions/shell:unit_tests", |
| 85 | "//extensions/utility:unit_tests", |
jbroman | b5e3179 | 2015-12-09 17:13:02 | [diff] [blame] | 86 | "//gin/*", |
tfarina | 9ee68196 | 2015-03-02 03:20:13 | [diff] [blame] | 87 | "//google_apis/*", |
brettw | bc44c0a9 | 2015-02-20 22:30:39 | [diff] [blame] | 88 | "//google_update/*", |
brettw | 09039c1 | 2016-03-18 03:22:46 | [diff] [blame] | 89 | "//gpu/*", |
tfarina | f8972243 | 2015-05-15 19:30:19 | [diff] [blame] | 90 | |
sdefresne | 5f39d8e6 | 2016-05-18 19:27:37 | [diff] [blame] | 91 | "//ios/*", |
| 92 | "//ios_internal/*", |
brettw | e75311d | 2015-02-17 23:56:46 | [diff] [blame] | 93 | "//ipc/*", |
brettw | bc44c0a9 | 2015-02-20 22:30:39 | [diff] [blame] | 94 | |
| 95 | #"//jingle/*", |
sky | b044635 | 2015-11-18 00:43:56 | [diff] [blame] | 96 | "//mash/*", |
sky | 88d7709e | 2015-08-12 19:19:49 | [diff] [blame] | 97 | |
brettw | bc44c0a9 | 2015-02-20 22:30:39 | [diff] [blame] | 98 | #"//media/*", # Lots of errors. |
jrummell | 370e8f9 | 2016-06-02 19:16:27 | [diff] [blame] | 99 | #"//media/base/*", |
| 100 | #"//media/capture/*", |
wez | e25ca840 | 2016-11-11 02:05:12 | [diff] [blame] | 101 | "//media/cast/*", |
jrummell | 370e8f9 | 2016-06-02 19:16:27 | [diff] [blame] | 102 | "//media:media", |
| 103 | "//media:shared_memory_support", |
| 104 | "//media:media_unittests", |
| 105 | "//media:audio_unittests", |
| 106 | "//media:media_perftests", |
| 107 | "//media/audio/*", |
| 108 | "//media/blink/*", |
| 109 | "//media/cdm/*", |
| 110 | "//media/ffmpeg/*", |
| 111 | "//media/gpu/*", |
| 112 | "//media/midi/*", |
| 113 | "//media/mojo/*", |
xhwang | 09f35d95 | 2016-11-11 18:12:18 | [diff] [blame] | 114 | "//media/remoting/*", |
jrummell | 5216c61 | 2016-10-06 01:30:30 | [diff] [blame] | 115 | "//media/test/*", |
jrummell | 370e8f9 | 2016-06-02 19:16:27 | [diff] [blame] | 116 | |
sky | 34393143 | 2015-08-10 19:22:19 | [diff] [blame] | 117 | "mojo/*", |
sky | d412f6e | 2015-07-22 17:22:13 | [diff] [blame] | 118 | |
brettw | bc44c0a9 | 2015-02-20 22:30:39 | [diff] [blame] | 119 | #"//native_client/*", |
brettw | 25ca892 | 2016-03-18 22:59:58 | [diff] [blame] | 120 | "//net/*", |
brettw | bc44c0a9 | 2015-02-20 22:30:39 | [diff] [blame] | 121 | |
| 122 | #"//pdf/*", # Medium-hard. |
| 123 | #"//ppapi/*", # Lots of errors. |
jbroman | 86f7827 | 2015-12-31 00:00:51 | [diff] [blame] | 124 | "//ppapi/examples/*", |
brettw | bc44c0a9 | 2015-02-20 22:30:39 | [diff] [blame] | 125 | "//printing/*", |
| 126 | |
| 127 | #"//remoting/*", # Medium-hard. |
brettw | 09039c1 | 2016-03-18 03:22:46 | [diff] [blame] | 128 | "//rlz/*", |
| 129 | |
brettw | bc44c0a9 | 2015-02-20 22:30:39 | [diff] [blame] | 130 | #"//sandbox/*", # Medium-hard. |
| 131 | "//sdch/*", |
sky | 1e8f9f86 | 2016-05-19 22:34:43 | [diff] [blame] | 132 | "//services/*", |
brettw | bc44c0a9 | 2015-02-20 22:30:39 | [diff] [blame] | 133 | "//skia/*", |
| 134 | "//sql/*", |
| 135 | "//storage/*", |
brettw | bc44c0a9 | 2015-02-20 22:30:39 | [diff] [blame] | 136 | "//testing/*", |
| 137 | |
| 138 | #"//third_party/*", # May not ever want this. |
rouslan | 30b1829 | 2016-03-31 18:05:10 | [diff] [blame] | 139 | "//third_party/hunspell/*", |
pmonette | 502a83e | 2016-01-08 00:21:16 | [diff] [blame] | 140 | "//third_party/kasko/*", |
rouslan | 30b1829 | 2016-03-31 18:05:10 | [diff] [blame] | 141 | "//third_party/libaddressinput/*", |
| 142 | "//third_party/libphonenumber/*", |
jbroman | 626eecf | 2015-12-03 18:59:00 | [diff] [blame] | 143 | "//third_party/WebKit/Source/*", |
brettw | bc44c0a9 | 2015-02-20 22:30:39 | [diff] [blame] | 144 | "//tools/*", |
| 145 | |
brettw | b7f2c30 | 2015-12-08 01:29:21 | [diff] [blame] | 146 | #"//ui/*", # Work left on Chromeos w/ use_ozone. Some parts of UI that work: |
| 147 | "//ui/accessibility/*", |
| 148 | "//ui/android/*", |
| 149 | "//ui/app_list/*", |
xiyuan | 369cf0c | 2016-06-30 16:34:15 | [diff] [blame] | 150 | "//ui/arc/*", |
brettw | b7f2c30 | 2015-12-08 01:29:21 | [diff] [blame] | 151 | "//ui/aura/*", |
| 152 | "//ui/aura_extra/*", |
| 153 | "//ui/base/*", |
| 154 | "//ui/chromeos/*", |
| 155 | "//ui/compositor/*", |
kylechar | 3e6b977 | 2016-04-15 18:55:27 | [diff] [blame] | 156 | "//ui/content_accelerators/*", |
brettw | b7f2c30 | 2015-12-08 01:29:21 | [diff] [blame] | 157 | "//ui/display/*", |
kylechar | 3e6b977 | 2016-04-15 18:55:27 | [diff] [blame] | 158 | "//ui/events/*", |
brettw | b7f2c30 | 2015-12-08 01:29:21 | [diff] [blame] | 159 | "//ui/file_manager/*", |
| 160 | "//ui/gfx/*", |
| 161 | "//ui/gl/*", |
| 162 | "//ui/keyboard/*", |
kylechar | 3e6b977 | 2016-04-15 18:55:27 | [diff] [blame] | 163 | "//ui/latency_info/*", |
brettw | b7f2c30 | 2015-12-08 01:29:21 | [diff] [blame] | 164 | "//ui/login/*", |
| 165 | "//ui/message_center/*", |
brettw | b7f2c30 | 2015-12-08 01:29:21 | [diff] [blame] | 166 | "//ui/mojo/*", |
| 167 | "//ui/native_theme/*", |
kylechar | e2b2022 | 2016-04-14 20:58:33 | [diff] [blame] | 168 | "//ui/ozone/*", |
brettw | b7f2c30 | 2015-12-08 01:29:21 | [diff] [blame] | 169 | "//ui/platform_window/*", |
| 170 | "//ui/resources/*", |
| 171 | "//ui/shell_dialogs/*", |
| 172 | "//ui/snapshot/*", |
| 173 | "//ui/strings/*", |
| 174 | "//ui/surface/*", |
| 175 | "//ui/touch_selection/*", |
| 176 | "//ui/views/*", |
| 177 | "//ui/views_content_client/*", |
| 178 | "//ui/web_dialogs/*", |
| 179 | "//ui/webui/*", |
| 180 | "//ui/wm/*", |
brettw | bc44c0a9 | 2015-02-20 22:30:39 | [diff] [blame] | 181 | "//url/*", |
| 182 | "//v8/*", |
brettw | 0ead977 | 2015-11-23 23:12:08 | [diff] [blame] | 183 | "//win8/*", |
brettw | e75311d | 2015-02-17 23:56:46 | [diff] [blame] | 184 | ] |
brettw | ed99f7b | 2015-04-07 00:22:50 | [diff] [blame] | 185 | |
| 186 | # These are the list of GN files that run exec_script. This whitelist exists |
| 187 | # to force additional review for new uses of exec_script, which is strongly |
brettw | d385ecf | 2016-04-19 22:53:23 | [diff] [blame] | 188 | # discouraged. |
| 189 | # |
| 190 | # GYPI_TO_GN |
| 191 | # |
| 192 | # Most of these entries are for gypi_to_gn calls. We should not be adding new |
| 193 | # calls to this script in the build (see //build/gypi_to_gn.py for detailed |
| 194 | # advice). The only time you should be editing this list for gypi_to_gn |
| 195 | # purposes is when moving an existing call to a different place. |
| 196 | # |
| 197 | # PLEASE READ |
| 198 | # |
| 199 | # You should almost never need to add new exec_script calls. exec_script is |
| 200 | # slow, especially on Windows, and can cause confusing effects. Although |
| 201 | # individually each call isn't slow or necessarily very confusing, at the scale |
| 202 | # of our repo things get out of hand quickly. By strongly pushing back on all |
| 203 | # additions, we keep the build fast and clean. If you think you need to add a |
| 204 | # new call, please consider: |
| 205 | # |
| 206 | # - Do not use a script to check for the existance of a file or directory to |
| 207 | # enable a different mode. Instead, use GN build args to enable or disable |
| 208 | # functionality and set options. An example is checking for a file in the |
| 209 | # src-internal repo to see if the corresponding src-internal feature should |
| 210 | # be enabled. There are several things that can go wrong with this: |
| 211 | # |
| 212 | # - It's mysterious what causes some things to happen. Although in many cases |
| 213 | # such behavior can be conveniently automatic, GN optimizes for explicit |
| 214 | # and obvious behavior so people can more easily diagnose problems. |
| 215 | # |
| 216 | # - The user can't enable a mode for one build and not another. With GN build |
| 217 | # args, the user can choose the exact configuration of multiple builds |
| 218 | # using one checkout. But implicitly basing flags on the state of the |
| 219 | # checkout, this functionality is broken. |
| 220 | # |
| 221 | # - It's easy to get stale files. If for example the user edits the gclient |
| 222 | # to stop checking out src-internal (or any other optional thing), it's |
| 223 | # easy to end up with stale files still mysteriously triggering build |
| 224 | # conditions that are no longer appropriate (yes, this happens in real |
| 225 | # life). |
| 226 | # |
| 227 | # - Do not use a script to iterate files in a directory (glob): |
| 228 | # |
| 229 | # - This has the same "stale file" problem as the above discussion. Various |
| 230 | # operations can leave untracked files in the source tree which can cause |
| 231 | # surprising effects. |
| 232 | # |
| 233 | # - It becomes impossible to use "git grep" to find where a certain file is |
| 234 | # referenced. This operation is very common and people really do get |
| 235 | # confused when things aren't listed. |
| 236 | # |
| 237 | # - It's easy to screw up. One common case is a build-time script that packs |
| 238 | # up a directory. The author notices that the script isn't re-run when the |
| 239 | # directory is updated, so adds a glob so all the files are listed as |
| 240 | # inputs. This seems to work great... until a file is deleted. When a |
thakis | 3e861de | 2016-06-14 14:24:01 | [diff] [blame] | 241 | # file is deleted, all the inputs the glob lists will still be up to date |
brettw | d385ecf | 2016-04-19 22:53:23 | [diff] [blame] | 242 | # and no command-lines will have been changed. The action will not be |
| 243 | # re-run and the build will be broken. It is possible to get this correct |
| 244 | # using glob, and it's possible to mess it up without glob, but globs make |
| 245 | # this situation much easier to create. if the build always lists the |
| 246 | # files and passes them to a script, it will always be correct. |
dgn | 47095171 | 2015-04-07 10:37:47 | [diff] [blame] | 247 | |
dpranke | 1cfa531 | 2016-11-22 03:07:47 | [diff] [blame] | 248 | exec_script_whitelist = |
| 249 | build_dotfile_settings.exec_script_whitelist + [ |
| 250 | # Whitelist entries for //build should go into |
| 251 | # //build/dotfile_settings.gni instead, so that they can be shared |
| 252 | # with other repos. The entries in this list should be only for files |
| 253 | # in the Chromium repo outside of //build. |
| 254 | "//android_webview/BUILD.gn", |
| 255 | "//build_overrides/build.gni", |
| 256 | "//chromeos/BUILD.gn", |
dgn | 47095171 | 2015-04-07 10:37:47 | [diff] [blame] | 257 | |
dpranke | 1cfa531 | 2016-11-22 03:07:47 | [diff] [blame] | 258 | # TODO(dgn): Layer violation but breaks the build otherwise, see |
| 259 | # https://crbug.com/474506. |
| 260 | "//clank/java/BUILD.gn", |
| 261 | "//clank/native/BUILD.gn", |
brettw | 46134cb | 2016-09-02 23:53:18 | [diff] [blame] | 262 | |
dpranke | 1cfa531 | 2016-11-22 03:07:47 | [diff] [blame] | 263 | "//jingle/BUILD.gn", |
| 264 | "//net/BUILD.gn", |
| 265 | "//remoting/host/installer/linux/BUILD.gn", |
| 266 | "//remoting/remoting_version.gni", |
| 267 | "//remoting/host/installer/win/generate_clsids.gni", |
brettw | de7b265 | 2016-09-09 23:25:05 | [diff] [blame] | 268 | |
dpranke | 1cfa531 | 2016-11-22 03:07:47 | [diff] [blame] | 269 | # TODO(dpranke): Get these from the appropriate repos instead. |
| 270 | "//third_party/angle/BUILD.gn", |
| 271 | "//third_party/angle/src/tests/BUILD.gn", |
| 272 | "//third_party/angle/src/vulkan_support/BUILD.gn", |
| 273 | "//third_party/catapult/tracing/BUILD.gn", |
| 274 | "//third_party/google_input_tools/inputview.gni", |
| 275 | |
| 276 | # CLD2 should be removed soon, delete this when we do. |
| 277 | "//third_party/cld_2/BUILD.gn", |
| 278 | "//tools/grit/grit_rule.gni", |
| 279 | |
| 280 | # Not gypi-to-gn. |
| 281 | "//google_apis/BUILD.gn", |
| 282 | "//printing/BUILD.gn", |
| 283 | ] |