Index: tools/gn/docs/style_guide.md |
diff --git a/tools/gn/docs/style_guide.md b/tools/gn/docs/style_guide.md |
index de46564440d1af542f25edf6171597e83f2cb588..cdb04ff728660e1383516794a64bf65e796d3b0c 100644 |
--- a/tools/gn/docs/style_guide.md |
+++ b/tools/gn/docs/style_guide.md |
@@ -96,48 +96,20 @@ Conditions should be written to minimize the number of conditional blocks. |
## Formatting and indenting |
- * Indents are two spaces, both for indented blocks and wrapped lines. |
+GN contains a built-in code formatter which defines the formatting style. |
+Some additional notes: |
+ |
* Variables are `lower_case_with_underscores` |
- * Complicated conditions and if statements should generally follow the |
- Google C++ style guide for formatting. |
* Comments should be complete sentences with periods at the end. |
- * End-of-line-comments should have two spaces separating them and the |
- code. |
* Compiler flags and such should always be commented with what they do |
and why the flag is needed. |
- * Try to keep lines under 80 columns. If a file name or similar string |
- puts you beyond 80 with reasonable indenting, it's OK, but most |
- things can be wrapped nicely under that for the code review tool. |
- |
-### List formatting |
- |
-``` |
- deps = [ |
- "afile.cc", |
- "bar.cc", # Note trailing comma on last element. |
- ] |
-``` |
- |
-Alphabetize the list elements unless there is a more obvious ordering. |
-In some cases, it makes more sense to put more than one list member on a |
-line if they clearly go together (for example, two short compiler flags |
-that must go next to each other). |
- |
-Prefer use the multi-line style for lists of more than one elements. |
-Lists with single-elements can be written on one line if desired: |
- |
-``` |
- all_dependent_configs = [ ":foo_config" ] # No trailing comma. |
-``` |
### Sources |
- * Sources should always be alphabetized within a given list. |
- * List sources only once. It is OK to conditionally include sources |
- rather than listing them all at the top and then conditionally |
- excluding them when they don't apply. Conditional inclusion is often |
- clearer since a file is only listed once and it's easier to reason |
- about when reading. |
+Prefer to list sources only once. It is OK to conditionally include sources |
+rather than listing them all at the top and then conditionally excluding them |
+when they don't apply. Conditional inclusion is often clearer since a file is |
+only listed once and it's easier to reason about when reading. |
``` |
sources = [ |
@@ -191,6 +163,24 @@ Build arguments should be scoped to a unit of behavior, e.g. enabling a feature. |
Typically an argument would be declared in an imported file to share it with |
the subset of the build that could make use of it. |
+Chrome has many legacy flags in `//build/config/features.gni`, |
+`//build/config/ui.gni`. These locations are deprecated. Feature flags should |
+go along with the code for the feature. Many browser-level features can go |
+somewhere in `//chrome/` without lower-level code knowing about it. Some |
+UI environment flags can go into `//ui/`, and many flags can also go with |
+the corresponding code in `//components/`. You can write a `.gni` file in |
+components and have build files in chrome or content import it if necessary. |
+ |
+The way to think about things in the `//build` directory is that this is |
+DEPSed into various projects like V8 and WebRTC. Build flags specific to |
+code outside of the build directory shouldn't be in the build directory, and |
+V8 shouldn't get feature defines for Chrome features. |
+ |
+New feature defines should use the buildflag system. See |
+`//build/buildflag_header.gni` which allows preprocessor defines to be |
+modularized without many of the disadvantages that made us use global defines |
+in the past. |
+ |
### Type |
Arguments support all the [GN language types](language.md#Language). |