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

Unified Diff: docs/mac_build_instructions.md

Issue 2225903003: mac: Make build documentation less out-of-date. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: docs/mac_build_instructions.md
diff --git a/docs/mac_build_instructions.md b/docs/mac_build_instructions.md
index 818b2e3cc743af8032797dc9fe2f47851c87e3b8..cd6f4f5a12e9fe04b7b8b38a751902bd20a55603 100644
--- a/docs/mac_build_instructions.md
+++ b/docs/mac_build_instructions.md
@@ -5,19 +5,14 @@
## Prerequisites
* A Mac running 10.9+.
-* [Xcode](https://developer.apple.com/xcode) 5+.
+* [Xcode](https://developer.apple.com/xcode) 7.3+.
* [depot\_tools](http://dev.chromium.org/developers/how-tos/depottools).
-* Xcode Command Line Tools. Run
- ```
- xcode-select --install
- ```
- to install them.
* The OSX 10.10 SDK. Run
```
ls `xcode-select -p`/Platforms/MacOSX.platform/Developer/SDKs
```
- to check whether you have it. If you don't have it, you need to get one from
- an install of Xcode 6, and place it in the above directory.
+ to check whether you have it. Building with the 10.11 SDK works too, but
+ the releases currently use the 10.10 SDK.
## Getting the code
@@ -34,50 +29,52 @@ drive name, the default "Macintosh HD2" for a second drive has a space.
## Building
-Chromium on OS X can only be built using the [Ninja](ninja_build.md) tool and
+Chromium on OS X is built using the [Ninja](ninja_build.md) tool and
the [Clang](clang.md) compiler. See both of those pages for further details on
how to tune the build.
+Run
+
+ gn gen out/gn
+
+to generate build files (replace "gn" in "out/gn" with whatever you like), and
+then run
+
+ ninja -C out/gn chrome
+
+to build. You can edit out/gn/args.gn to configure the build.
+
Before you build, you may want to
[install API keys](https://sites.google.com/a/chromium.org/dev/developers/how-tos/api-keys)
so that Chrome-integrated Google services work. This step is optional if you
aren't testing those features.
-### Raising system-wide and per-user process limits
-
-If you see errors like the following:
+## Faster builds
-```
-clang: error: unable to execute command: posix_spawn failed: Resource temporarily unavailable
-clang: error: clang frontend command failed due to signal (use -v to see invocation)
-```
+Full rebuilds are about the same speed in Debug and Release, but linking is a
+lot faster in Release builds.
-you may be running into too-low limits on the number of concurrent processes
-allowed on the machine. Check:
+Put
- sysctl kern.maxproc
- sysctl kern.maxprocperuid
+ is_debug = false
-You can increase them with e.g.:
+in your args.gn to do a release build.
- sudo sysctl -w kern.maxproc=2500
- sudo sysctl -w kern.maxprocperuid=2500
+Put
-But normally this shouldn't be necessary if you're building on 10.7 or higher.
-If you see this, check if some rogue program spawned hundreds of processes and
-kill them first.
+ is_component_build = true
-## Faster builds
+in your args.gn to build many small dylibs instead of a single large executable.
+This makes incremental builds much faster, at the cost of producing a binary
+that opens less quickly. Component builds work in both debug and release.
-Full rebuilds are about the same speed in Debug and Release, but linking is a
-lot faster in Release builds.
+Put
-Run
+ symbol_level = 1
- GYP_DEFINES=fastbuild=1 build/gyp_chromium
-
-to disable debug symbols altogether, this makes both full rebuilds and linking
-faster (at the cost of not getting symbolized backtraces in gdb).
+in your args.gn to disable debug symbols altogether. This makes both full
+rebuilds and linking faster (at the cost of not getting symbolized backtraces
+in gdb).
You might also want to [install ccache](ccache_mac.md) to speed up the build.
@@ -85,8 +82,7 @@ You might also want to [install ccache](ccache_mac.md) to speed up the build.
All build output is located in the `out` directory (in the example above,
`~/chromium/src/out`). You can find the applications at
-`{Debug|Release}/ContentShell.app` and `{Debug|Release}/Chromium.app`, depending
-on the selected configuration.
+`gn/Content Shell.app` and `gn/Chromium.app`.
## Unit Tests
@@ -98,10 +94,10 @@ small subset of these is:
* `net_unittests` from `net/net.gyp`
* `url_unittests` from `url/url.gyp`
-When these tests are built, you will find them in the `out/{Debug|Release}`
+When these tests are built, you will find them in the `out/gn`
directory. You can run them from the command line:
- ~/chromium/src/out/Release/unit_tests
+ ~/chromium/src/out/gn/unit_tests
## Coding
@@ -109,12 +105,9 @@ directory. You can run them from the command line:
According to the
[Chromium style guide](http://dev.chromium.org/developers/coding-style) code is
[not allowed to have whitespace on the ends of lines](https://google.github.io/styleguide/cppguide.html#Horizontal_Whitespace).
-If you edit in Xcode, know that it loves adding whitespace to the ends of lines
-which can make editing in Xcode more painful than it should be. The
-[GTM Xcode Plugin](http://code.google.com/p/google-toolbox-for-mac/downloads/list)
-adds a preference panel to Xcode that allows you to strip whitespace off of the
-ends of lines on save. Documentation on how to install it is
-[here](http://code.google.com/p/google-toolbox-for-mac/wiki/GTMXcodePlugin).
+
+Run `git cl format` after committing to your local branch and before uploading
+to clang-format your code.
## Debugging
@@ -122,7 +115,7 @@ Good debugging tips can be found
[here](http://dev.chromium.org/developers/how-tos/debugging-on-os-x). If you
would like to debug in a graphical environment, rather than using `lldb` at the
command line, that is possible without building in Xcode. See
-[Debugging in Xcode](http://www.chromium.org/developers/debugging-on-os-x/building-with-ninja-debugging-with-xcode)
+[Debugging in Xcode](http://www.chromium.org/developers/how-tos/debugging-on-os-x/building-with-ninja-debugging-with-xcode)
for information on how.
## Contributing
@@ -133,46 +126,25 @@ information about writing code for Chromium and contributing it.
## Using Xcode-Ninja Hybrid
-While using Xcode is unsupported, GYP supports a hybrid approach of using ninja
-for building, but Xcode for editing and driving compilation. Xcode can still be
-slow, but it runs fairly well even **with indexing enabled**.
+While using Xcode is unsupported, gn supports a hybrid approach of using ninja
+for building, but Xcode for editing and driving compilation. Xcode is still
+slow, but it runs fairly well even **with indexing enabled**. Most people
+build in the Terminal and write code with a text editor though.
With hybrid builds, compilation is still handled by ninja, and can be run by the
-command line (e.g. ninja -C out/Debug chrome) or by choosing the chrome target
+command line (e.g. ninja -C out/gn chrome) or by choosing the chrome target
in the hybrid workspace and choosing build.
-To use Xcode-Ninja Hybrid, set GYP\_GENERATORS like the following:
+To use Xcode-Ninja Hybrid pass --ide=xcode to `gn gen`
```shell
-export GYP_GENERATORS="ninja,xcode-ninja"
+gn gen out/gn --ide=xcode
```
-Due to the way Xcode parses ninja output paths, it's also necessary to change
-the main gyp location to anything two directories deep. Otherwise Xcode build
-output will not be clickable.
-To make this change permanent, you can edit `chromium.gyp_env` (or create it if
-it does not exists) and define GYP\_GENERATOR\_FLAGS. In general, to use hybrid
-mode, your `chromium.gyp_env` could contain the following:
-
-```json
-{
- "GYP_GENERATORS" : "ninja,xcode-ninja",
- "GYP_GENERATOR_FLAGS":
- "xcode_project_version=3.2 " +
- "xcode_ninja_main_gyp=src/build/ninja/all.ninja.gyp",
-}
-```
-
-After, generate the project files with:
+Open it:
```shell
-gclient runhooks
-```
-
-And finally, open it:
-
-```shell
-open build/ninja/all.ninja.xcworkspace
+open out/gn/ninja/all.xcworkspace
```
You may run into a problem where http://YES is opened as a new tab every time
@@ -182,52 +154,11 @@ Versions Browser". When this option is checked, Xcode adds
`--NSDocumentRevisionsDebugMode YES` to the launch arguments, and the `YES` gets
interpreted as a URL to open.
-If you want to limit the number of targets visible, which is known to improve
-Xcode performance, add `xcode_ninja_executable_target_pattern=%target%` where
-`%target%` is a regular expression matching executable targets you'd like to
-include.
-
-To include non-executable targets, use `xcode_ninja_target_pattern=All_iOS`.
-
If you have problems building, join us in `#chromium` on `irc.freenode.net` and
ask there. As mentioned above, be sure that the
[waterfall](http://build.chromium.org/buildbot/waterfall/) is green and the tree
is open before checking out. This will increase your chances of success.
-## Using Emacs as `EDITOR` for `git commit`
-
-Using the [Cocoa version of Emacs](http://emacsformacosx.com/) as the `EDITOR`
-environment variable on Mac OS will cause `git commit` to open the message in a
-window underneath all the others. To fix this, create a shell script somewhere
-(call it `$HOME/bin/EmacsEditor` in this example) containing the following:
-
-```
-#!/bin/sh
-
-# All of these hacks are needed to get "git commit" to launch a new
-# instance of Emacs on top of everything else, properly pointing to
-# the COMMIT_EDITMSG.
-
-realpath() {
- [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"
-}
-
-i=0
-full_paths=()
-for arg in "$@"
-do
- full_paths[$i]=$(realpath $arg)
- ((++i))
-done
-
-open -nWa /Applications/Emacs.app/Contents/MacOS/Emacs --args --no-desktop \
- "${full_paths[@]}"
-```
-
-and in your `.bashrc` or similar,
-
- export EDITOR=$HOME/bin/EmacsEditor
-
## Improving performance of `git status`
`git status` is used frequently to determine the status of your checkout. Due
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698