forked from openkylin/platform_build
Merge "Consolidate build system usage documentation into source control"
This commit is contained in:
commit
ea98ab2d3c
|
@ -0,0 +1,85 @@
|
||||||
|
Android build system usage:
|
||||||
|
|
||||||
|
m [-j] [<targets>] [<variable>=<value>...]
|
||||||
|
|
||||||
|
|
||||||
|
Ways to specify what to build:
|
||||||
|
The common way to specify what to build is to set that information in the
|
||||||
|
environment via:
|
||||||
|
|
||||||
|
# Set up the shell environment.
|
||||||
|
source build/envsetup.sh # Run "hmm" after sourcing for more info
|
||||||
|
# Select the device and variant to target. If no argument is given, it
|
||||||
|
# will list choices and prompt.
|
||||||
|
lunch [<product>-<variant>] # Selects the device and variant to target.
|
||||||
|
# Invoke the configured build.
|
||||||
|
m [<options>] [<targets>] [<variable>=<value>...]
|
||||||
|
|
||||||
|
<product> is the device that the created image is intended to be run on.
|
||||||
|
This is saved in the shell environment as $TARGET_PRODUCT by `lunch`.
|
||||||
|
<variant> is one of "user", "userdebug", or "eng", and controls the
|
||||||
|
amount of debugging to be added into the generated image.
|
||||||
|
This gets saved in the shell environment as $TARGET_BUILD_VARIANT by
|
||||||
|
`lunch`.
|
||||||
|
|
||||||
|
Each of <options>, <targets>, and <variable>=<value> is optional.
|
||||||
|
If no targets are specified, the build system will build the images
|
||||||
|
for the configured product and variant.
|
||||||
|
|
||||||
|
An alternative to setting $TARGET_PRODUCT and $TARGET_BUILD_VARIANT,
|
||||||
|
which you may see in build servers, is to execute:
|
||||||
|
|
||||||
|
make PRODUCT-<product>-<variant>
|
||||||
|
|
||||||
|
|
||||||
|
A target may be a file path. For example, out/host/linux-x86/bin/adb .
|
||||||
|
Note that when giving a relative file path as a target, that path is
|
||||||
|
interpreted relative to the root of the source tree (rather than relative
|
||||||
|
to the current working directory).
|
||||||
|
|
||||||
|
A target may also be any other target defined within a Makefile. Run
|
||||||
|
`m help` to view the names of some common targets.
|
||||||
|
|
||||||
|
To view the modules and targets defined in a particular directory, look for:
|
||||||
|
files named *.mk (most commonly Android.mk)
|
||||||
|
these files are defined in Make syntax
|
||||||
|
files named Android.bp
|
||||||
|
these files are defined in Blueprint syntax
|
||||||
|
|
||||||
|
For now, the full (extremely large) compiled list of targets can be found
|
||||||
|
(after running the build once), split among these two files:
|
||||||
|
|
||||||
|
${OUT}/build-<product>*.ninja
|
||||||
|
${OUT}/soong/build.ninja
|
||||||
|
|
||||||
|
If you find yourself interacting with these files, you are encouraged to
|
||||||
|
provide a more convenient tool for browsing targets, and to mention the
|
||||||
|
tool here.
|
||||||
|
|
||||||
|
Targets that adjust an existing build:
|
||||||
|
showcommands Display the individual commands run to implement
|
||||||
|
the build
|
||||||
|
dist Copy into ${DIST_DIR} the portion of the build
|
||||||
|
that must be distributed
|
||||||
|
|
||||||
|
Flags
|
||||||
|
-j <N> Run <N> processes at once
|
||||||
|
-j Autodetect the number of processes to run at once,
|
||||||
|
and run that many
|
||||||
|
|
||||||
|
Variables
|
||||||
|
Variables can either be set in the surrounding shell environment or can be
|
||||||
|
passed as command-line arguments. For example:
|
||||||
|
export I_AM_A_SHELL_VAR=1
|
||||||
|
I_AM_ANOTHER_SHELL_VAR=2 make droid I_AM_A_MAKE_VAR=3
|
||||||
|
Here are some common variables and their meanings:
|
||||||
|
TARGET_PRODUCT The <product> to build # as described above
|
||||||
|
TARGET_BUILD_VARIANT The <variant> to build # as described above
|
||||||
|
DIST_DIR The directory in which to place the distribution
|
||||||
|
artifacts.
|
||||||
|
OUT_DIR The directory in which to place non-distribution
|
||||||
|
artifacts.
|
||||||
|
|
||||||
|
There is not yet known a convenient method by which to discover the full
|
||||||
|
list of supported variables. Please mention it here when there is.
|
||||||
|
|
35
core/help.mk
35
core/help.mk
|
@ -1,35 +0,0 @@
|
||||||
#
|
|
||||||
# Copyright (C) 2010 The Android Open Source Project
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
|
|
||||||
.PHONY: help
|
|
||||||
help:
|
|
||||||
@echo
|
|
||||||
@echo "Common make targets:"
|
|
||||||
@echo "----------------------------------------------------------------------------------"
|
|
||||||
@echo "droid Default target"
|
|
||||||
@echo "clean (aka clobber) equivalent to rm -rf out/"
|
|
||||||
@echo "snod Quickly rebuild the system image from built packages"
|
|
||||||
@echo "vnod Quickly rebuild the vendor image from built packages"
|
|
||||||
@echo "offline-sdk-docs Generate the HTML for the developer SDK docs"
|
|
||||||
@echo "doc-comment-check-docs Check HTML doc links & validity, without generating HTML"
|
|
||||||
@echo "libandroid_runtime All the JNI framework stuff"
|
|
||||||
@echo "framework All the java framework stuff"
|
|
||||||
@echo "services The system server (Java) and friends"
|
|
||||||
@echo "help You're reading it right now"
|
|
||||||
|
|
||||||
.PHONY: out
|
|
||||||
out:
|
|
||||||
@echo "I'm sure you're nice and all, but no thanks."
|
|
|
@ -1,7 +1,13 @@
|
||||||
function hmm() {
|
function hmm() {
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
|
|
||||||
|
Run "m help" for help with the build system itself.
|
||||||
|
|
||||||
Invoke ". build/envsetup.sh" from your shell to add the following functions to your environment:
|
Invoke ". build/envsetup.sh" from your shell to add the following functions to your environment:
|
||||||
- lunch: lunch <product_name>-<build_variant>
|
- lunch: lunch <product_name>-<build_variant>
|
||||||
|
Selects <product_name> as the product to build, and <build_variant> as the variant to
|
||||||
|
build, and stores those selections in the environment to be read by subsequent
|
||||||
|
invocations of 'm' etc.
|
||||||
- tapas: tapas [<App1> <App2> ...] [arm|x86|mips|armv5|arm64|x86_64|mips64] [eng|userdebug|user]
|
- tapas: tapas [<App1> <App2> ...] [arm|x86|mips|armv5|arm64|x86_64|mips64] [eng|userdebug|user]
|
||||||
- croot: Changes directory to the top of the tree.
|
- croot: Changes directory to the top of the tree.
|
||||||
- m: Makes from the top of the tree.
|
- m: Makes from the top of the tree.
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# locate some directories
|
||||||
|
cd "$(dirname $0)"
|
||||||
|
SCRIPT_DIR="${PWD}"
|
||||||
|
cd ../..
|
||||||
|
TOP="${PWD}"
|
||||||
|
|
||||||
|
message='The basic Android build process is:
|
||||||
|
|
||||||
|
cd '"${TOP}"'
|
||||||
|
source build/envsetup.sh # Add "lunch" (and other utilities and variables)
|
||||||
|
# to the shell environment.
|
||||||
|
lunch [<product>-<variant>] # Choose the device to target.
|
||||||
|
m -j [<goals>] # Execute the configured build.
|
||||||
|
|
||||||
|
Usage of "m" imitates usage of the program "make".
|
||||||
|
See '"${SCRIPT_DIR}"'/README.txt for more info about build usage and concepts.
|
||||||
|
|
||||||
|
Common goals are:
|
||||||
|
|
||||||
|
clean (aka clobber) equivalent to rm -rf out/
|
||||||
|
checkbuild Build every module defined in the source tree
|
||||||
|
droid Default target
|
||||||
|
nothing Do not build anything, just parse and validate the build structure
|
||||||
|
|
||||||
|
java Build all the java code in the source tree
|
||||||
|
native Build all the native code in the source tree
|
||||||
|
|
||||||
|
host Build all the host code (not to be run on a device) in the source tree
|
||||||
|
target Build all the target code (to be run on the device) in the source tree
|
||||||
|
|
||||||
|
(java|native)-(host|target)
|
||||||
|
(host|target)-(java|native)
|
||||||
|
Build the intersection of the two given arguments
|
||||||
|
|
||||||
|
snod Quickly rebuild the system image from built packages
|
||||||
|
Stands for "System, NO Dependencies"
|
||||||
|
vnod Quickly rebuild the vendor image from built packages
|
||||||
|
Stands for "Vendor, NO Dependencies"
|
||||||
|
|
||||||
|
|
||||||
|
So, for example, you could run:
|
||||||
|
|
||||||
|
cd '"${TOP}"'
|
||||||
|
source build/envsetup.sh
|
||||||
|
lunch aosp_arm-userdebug
|
||||||
|
m -j java
|
||||||
|
|
||||||
|
to build all of the java code for the userdebug variant of the aosp_arm device.
|
||||||
|
'
|
||||||
|
|
||||||
|
echo "$message"
|
Loading…
Reference in New Issue