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

Unified Diff: docs/ios_build_instructions.md

Issue 2343853002: Upstream helper script to build Chromium on iOS and update instructions. (Closed)
Patch Set: Fix comment. Created 4 years, 3 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 | ios/build/tools/convert_gn_xcodeproj.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: docs/ios_build_instructions.md
diff --git a/docs/ios_build_instructions.md b/docs/ios_build_instructions.md
index bfbdc751d1a35c65ed2d310c30edb8355e1f4119..b889707a09e87d6454c46054794ec4decb6a2131 100644
--- a/docs/ios_build_instructions.md
+++ b/docs/ios_build_instructions.md
@@ -7,97 +7,72 @@ the web layer), and various unit tests.
## Prerequisites
-* A Mac with a version of OS X capable of running the latest version
- of Xcode.
-* The latest version of [Xcode](https://developer.apple.com/xcode/),
- including the current iOS SDK.
+* A Mac running 10.11+.
+* [Xcode] 8.0+.
+* [depot\_tools].
* The current version of the JDK (required for the closure compiler).
-* [depot\_tools](http://dev.chromium.org/developers/how-tos/install-depot-tools).
-## Setting Up
+## Getting the source
-### With GYP
-
-In the directory where you are going to check out the code, create a
-`chromium.gyp_env` to set the build to use iOS targets (and to use
-hybrid builds; see [Building](#Building) below):
+To checkout the source, use `fetch ios` command from [depot\_tools] in a new
+empty directory.
```shell
-cat > chromium.gyp_env <<EOF
-{
- "GYP_DEFINES": "OS=ios",
- "GYP_GENERATORS": "ninja,xcode-ninja",
-}
-EOF
+# You can use a different location for your checkout of Chromium on iOS
+# by updating this variable. All shell snippets will refer to it.
+CHROMIUM_IOS="$HOME/chromium_ios"
+mkdir "$CHROMIUM_IOS"
+cd "$CHROMIUM_IOS"
+fetch ios
```
-If you aren't set up to sign iOS build products via a developer account,
-you should instead use:
+## Setting up
-```shell
-cat > chromium.gyp_env <<EOF
-{
- "GYP_DEFINES": "OS=ios chromium_ios_signing=0",
- "GYP_GENERATORS": "ninja,xcode-ninja",
-}
-EOF
-```
+Chromium on iOS 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.
-### With GN
+Before you build, you may want to [install API keys](api-keys) so that
+Chrome-integrated Google services work. This step is optional if you aren't
+testing those features.
-Use `gn args out/Debug-iphonesimulator` (or replace
-`out/Debug-iphonesimulator` with your chosen `out/` directory) to open up an
-editor to set the following gn variables and regenerate:
+### Quick setup
-```
-# Set to true if you have a valid code signing key.
-ios_enable_code_signing = false
-target_os = "ios"
-# Set to "x86", "x64", "arm", "armv7", "arm64". "x86" and "x64" will create a
-# build to run on the iOS simulator (and set use_ios_simulator = true), all
-# others are for an iOS device.
-target_cpu = "x64"
-# Release vs debug build.
-is_debug = true
-```
-
-### API Keys
-
-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.
-
-## Getting the Code
-
-Next, [check out the
-code](https://www.chromium.org/developers/how-tos/get-the-code), with:
+To setup the repository for building Chromium on iOS code, it is recommended
+to use the `src/ios/build/tools/setup-gn.py` script that creates a Xcode
+workspace configured to build the different targets for device and simulator.
```shell
-fetch ios
+cd "$CHROMIUM_IOS/src"
+ios/build/tools/setup-gn.py
+open out/build/all.xcworkspace
```
-## Building
+You can customize the build by editing the file `$HOME/.setup-gn` (create it
+if it does not exists). Look at `src/ios/build/tools/setup-gn.config` for
+available configuration options.
-Build the target you are interested in. The instructions above select
-the ninja/Xcode hybrid mode, which uses ninja to do the actual build,
-but provides a wrapper Xcode project that can be used to build targets
-and navigate the source. (The Xcode project just shells out to ninja to
-do the builds, so you can't actually inspect/change target-level
-settings from within Xcode; this mode avoids generating a large tree of
-Xcode projects, which leads to performance issues in Xcode). To build
-with ninja (simulator and device, respectively):
+From this point, you can either build from Xcode or from the command-line
+using `ninja`. The script `setup-gn.py` creates sub-directories named
+`out/${configuration}-${platform}`, so for a `Debug` build for simulator
+use:
```shell
-ninja -C out/Debug-iphonesimulator All
-ninja -C out/Debug-iphoneos All
+ninja -C out/Debug-iphonesimulator gn_all
```
-To build with Xcode, open `build/all.ninja.xcworkspace`, and choose the
-target you want to build.
+Note: you need to run `setup-gn.py` script every time one of the `BUILD.gn`
+file is updated (either by you or after rebasing). If you forget to run it,
+the list of targets and files in the Xcode solution may be stale.
-You should always be able to build All, since targets are added there for iOS
-only when they compile.
+### Advanced setup
+
+You can run `gn` manually to configure the build yourself. In that case,
+refer to [mac build instructions] for help on how to do that.
+
+To build for iOS, you have to set `target_os` to `"ios"`. Please also note
+that `is_component_build` is not supported when building for iOS and must
+be set to `false`.
## Running
@@ -114,37 +89,16 @@ example, to run a debug build of ios\_web\_shell:
out/Debug-iphonesimulator/iossim out/Debug-iphonesimulator/ios_web_shell.app
```
-## Converting an existing Mac checkout into an iOS checkout
-
-If you want to convert your Mac checkout into an iOS checkout, follow the steps
-below:
-
-1. Add `target_os = [ "ios" ]` to the bottom of your `chromium/.gclient`
-file.
-
-2. For gyp, make sure you have the following in your
-`chromium/chromium.gyp_env` file (removing the `chromium_ios_signing=0` if you
-want to make developer-signed builds):
-
- ```json
- {
- "GYP_DEFINES" : "OS=ios chromium_ios_signing=0",
- "GYP_GENERATORS" : "ninja,xcode-ninja",
- }
- ```
-
- For gn, add the arguments specified [above](#With-GN) to your gn setup.
-
-3. Make sure to sync again to fetch the iOS specific dependencies and
-regenerate build rules using:
-
- ```shell
- gclient sync
- ```
-
## Troubleshooting
If your build fails, check the iOS columns of [the Mac
waterfall](http://build.chromium.org/p/chromium.mac/console) (the last two) to
see if the bots are green. In general they should be, since failures on those
bots will close the tree.
+
+[Xcode]: https://developer.apple.com/xcode
+[depot\_tools]: https://dev.chromium.org/developers/how-tos/depottools
+[Ninja]: ninja.md
+[Clang]: clang.md
+[api-keys]: https://sites.google.com/a/chromium.org/dev/developers/how-tos/api-keys
+[mac build instructions]: mac_build_instructions.md
« no previous file with comments | « no previous file | ios/build/tools/convert_gn_xcodeproj.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698