Index: mojo/tools/mojob.sh |
diff --git a/mojo/tools/mojob.sh b/mojo/tools/mojob.sh |
index 2b82d082e734b42b34190226216cd30f7fc68d0d..7092c791f696995a5e2109b721a7f6a375404b56 100755 |
--- a/mojo/tools/mojob.sh |
+++ b/mojo/tools/mojob.sh |
@@ -20,34 +20,37 @@ command should be one of: |
test - Run unit tests (does not build). |
perftest - Run perf tests (does not build). |
pytest - Run Python unit tests (does not build). |
- gyp - Run gyp for mojo (does not sync). |
- gypall - Run gyp for all of chromium (does not sync). |
- sync - Sync using gclient (does not run gyp). |
+ gn - Run gn for mojo (does not sync). |
+ sync - Sync using gclient (does not run gn). |
show-bash-alias - Outputs an appropriate bash alias for mojob. In bash do: |
\$ eval \`mojo/tools/mojob.sh show-bash-alias\` |
-option (which will only apply to following commands) should be one of: |
- Build/test options (specified before build/test/perftest): |
- --debug - Build/test in Debug mode. |
- --release - Build/test in Release mode. |
- --debug-and-release - Build/test in both Debug and Release modes (default). |
- Compiler options (specified before gyp): |
- --clang - Use clang (default). |
- --gcc - Use gcc. |
- Component options: |
- --shared Build components as shared libraries (default). |
- --static Build components as static libraries. |
- Use goma: |
- --use-goma - Use goma if \$GOMA_DIR is set or \$HOME/goma exists (default). |
- --no-use-goma - Do not use goma. |
+option (which will only apply to commands which follow) should be one of: |
+ General options (specify before everything): |
+ --debug / --release / --debug-and-release - Debug (default) build / |
+ Release build / Debug and Release builds. |
+ gn options (specify before gn): |
+ --clang / --gcc - Use clang (default) / gcc. |
+ --use-goma / --no-use-goma - Use goma (if \$GOMA_DIR is set or \$HOME/goma |
+ exists; default) / don't use goma. |
Note: It will abort on the first failure (if any). |
EOF |
} |
+get_gn_arg_value() { |
+ grep -m 1 "^[[:space:]]*\<$2\>" "$1/args.gn" | \ |
+ sed -n 's/.* = "\?\([^"]*\)"\?$/\1/p' |
+} |
+ |
do_build() { |
echo "Building in out/$1 ..." |
- if [ "$GOMA" = "auto" -a -v GOMA_DIR ]; then |
+ if [ "$(get_gn_arg_value "out/$1" use_goma)" = "true" ]; then |
+ # Use the configured goma directory. |
+ local goma_dir="$(get_gn_arg_value "out/$1" goma_dir)" |
+ echo "Ensuring goma (in ${goma_dir}) started ..." |
+ "${goma_dir}/goma_ctl.py" ensure_start |
+ |
ninja -j 1000 -l 100 -C "out/$1" mojo || exit 1 |
else |
ninja -C "out/$1" mojo || exit 1 |
@@ -68,24 +71,14 @@ do_perftests() { |
do_pytests() { |
echo "Running python tests in out/$1 ..." |
python mojo/tools/run_mojo_python_tests.py || exit 1 |
- # TODO(qsr) Remove this test when the component build is not supported |
- # anymore. |
- if [ -f "out/$1/python/mojo/system.so" ]; then |
- python mojo/tools/run_mojo_python_bindings_tests.py \ |
- "--build-dir=out/$1" || exit 1 |
- fi |
-} |
- |
-do_gyp() { |
- local gyp_defines="$(make_gyp_defines)" |
- echo "Running gyp for mojo with GYP_DEFINES=$gyp_defines ..." |
- GYP_DEFINES="$gyp_defines" build/gyp_chromium mojo/mojo.gyp || exit 1 |
+ python mojo/tools/run_mojo_python_bindings_tests.py "--build-dir=out/$1" || \ |
+ exit 1 |
} |
-do_gypall() { |
- local gyp_defines="$(make_gyp_defines)" |
- echo "Running gyp for everything with GYP_DEFINES=$gyp_defines ..." |
- GYP_DEFINES="$gyp_defines" build/gyp_chromium || exit 1 |
+do_gn() { |
+ local gn_args="$(make_gn_args $1)" |
+ echo "Running gn with --args=\"${gn_args}\" ..." |
+ gn gen --args="${gn_args}" "out/$1" |
} |
do_sync() { |
@@ -94,67 +87,43 @@ do_sync() { |
} |
# Valid values: Debug, Release, or Debug_and_Release. |
-BUILD_TEST_TYPE=Debug_and_Release |
+BUILD_TYPE=Debug_and_Release |
should_do_Debug() { |
- test "$BUILD_TEST_TYPE" = Debug -o "$BUILD_TEST_TYPE" = Debug_and_Release |
+ test "$BUILD_TYPE" = Debug -o "$BUILD_TYPE" = Debug_and_Release |
} |
should_do_Release() { |
- test "$BUILD_TEST_TYPE" = Release -o "$BUILD_TEST_TYPE" = Debug_and_Release |
+ test "$BUILD_TYPE" = Release -o "$BUILD_TYPE" = Debug_and_Release |
} |
# Valid values: clang or gcc. |
COMPILER=clang |
-# Valid values: shared or static. |
-COMPONENT=shared |
# Valid values: auto or disabled. |
GOMA=auto |
-make_gyp_defines() { |
- local options=() |
- # Always include these options. |
- options+=("use_aura=1") |
+make_gn_args() { |
+ local args=() |
case "$COMPILER" in |
clang) |
- options+=("clang=1") |
+ args+=("is_clang=true") |
;; |
gcc) |
- options+=("clang=0") |
- ;; |
- esac |
- case "$COMPONENT" in |
- shared) |
- options+=("component=shared_library") |
- ;; |
- static) |
- options+=("component=static_library") |
+ args+=("is_clang=false") |
;; |
esac |
case "$GOMA" in |
auto) |
if [ -v GOMA_DIR ]; then |
- options+=("use_goma=1" "gomadir=\"${GOMA_DIR}\"") |
+ args+=("use_goma=true" "goma_dir=\"${GOMA_DIR}\"") |
+ elif [ -d "${HOME}/goma" ]; then |
+ args+=("use_goma=true" "goma_dir=\"${HOME}/goma\"") |
else |
- options+=("use_goma=0") |
+ args+=("use_goma=false") |
fi |
;; |
disabled) |
- options+=("use_goma=0") |
+ args+=("use_goma=false") |
;; |
esac |
- echo "${options[*]}" |
-} |
- |
-set_goma_dir_if_necessary() { |
- if [ "$GOMA" = "auto" -a ! -v GOMA_DIR ]; then |
- if [ -d "${HOME}/goma" ]; then |
- GOMA_DIR="${HOME}/goma" |
- fi |
- fi |
-} |
- |
-start_goma_if_necessary() { |
- if [ "$GOMA" = "auto" -a -v GOMA_DIR ]; then |
- "${GOMA_DIR}/goma_ctl.py" ensure_start |
- fi |
+ echo "${args[*]}" |
} |
# We're in src/mojo/tools. We want to get to src. |
@@ -173,8 +142,6 @@ for arg in "$@"; do |
exit 0 |
;; |
build) |
- set_goma_dir_if_necessary |
- start_goma_if_necessary |
should_do_Debug && do_build Debug |
should_do_Release && do_build Release |
;; |
@@ -190,13 +157,9 @@ for arg in "$@"; do |
should_do_Debug && do_pytests Debug |
should_do_Release && do_pytests Release |
;; |
- gyp) |
- set_goma_dir_if_necessary |
- do_gyp |
- ;; |
- gypall) |
- set_goma_dir_if_necessary |
- do_gypall |
+ gn) |
+ should_do_Debug && do_gn Debug |
+ should_do_Release && do_gn Release |
;; |
sync) |
do_sync |
@@ -212,13 +175,13 @@ for arg in "$@"; do |
;; |
# Options ------------------------------------------------------------------ |
--debug) |
- BUILD_TEST_TYPE=Debug |
+ BUILD_TYPE=Debug |
;; |
--release) |
- BUILD_TEST_TYPE=Release |
+ BUILD_TYPE=Release |
;; |
--debug-and-release) |
- BUILD_TEST_TYPE=Debug_and_Release |
+ BUILD_TYPE=Debug_and_Release |
;; |
--clang) |
COMPILER=clang |
@@ -226,12 +189,6 @@ for arg in "$@"; do |
--gcc) |
COMPILER=gcc |
;; |
- --shared) |
- COMPONENT=shared |
- ;; |
- --static) |
- COMPONENT=static |
- ;; |
--use-goma) |
GOMA=auto |
;; |