#!/bin/bash # # Copyright 2015 Google Inc. All rights reserved # # 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. # # A wrapper for kati which generates build.ninja mainly for Android. # set -e kati_dir=$(cd $(dirname $0) && pwd) extra_flags= goma_flag= goma_dir=${GOMA_DIR:-$HOME/goma} while [ x"$1" != x"" ]; do case "$1" in --help) cat - <<EOF Usage: m2n # for default full-build m2n --goma # use goma. \$HOME/goma must exist, or set \$GOMA_DIR m2n --go # use go version. Slower but maybe more portable. m2n cts # for target 'cts' EOF exit 1 ;; --go) kati=${kati_dir}/kati shift ${kati} --m2n "$@" echo echo ninja.sh and build.ninja were generated, please run ./ninja.sh exit ;; --goma) if [ ! -e $goma_dir/goma_ctl.py ]; then echo "To use Goma you must set GOMA_DIR, or install goma in $HOME/goma" exit 1 fi $goma_dir/goma_ctl.py ensure_start goma_flag=--goma_dir=$goma_dir shift ;; --mmm) echo 'Note: --mmm may not work' shift; mmm="$1" shift ;; -*) extra_flags+=" $1" shift ;; *) targets="${targets} $1" shift ;; esac done if [ x"${goma_flag}" != x ]; then for k in CC_WRAPPER CXX_WRAPPER JAVAC_WRAPPER; do val=$(eval echo \$$k) if [ x"${val}" != x ]; then echo "Note: \$$k=${val} may confuse m2n --goma, unsetting" unset $k fi done fi kati=${kati_dir}/ckati ninja_suffix= ninja_suffix_flag= if [ x"${mmm}" != x"" ]; then mk="${mmm}/Android.mk" if [ ! -f ${mk} ]; then echo "${mk} does not exist" exit 1 fi export ONE_SHOT_MAKEFILE=${mk} echo ONE_SHOT_MAKEFILE=${ONE_SHOT_MAKEFILE} ninja_suffix+=-mmm-${mmm} fi if [ x"${targets}" != x"" ]; then ninja_suffix+=-$(echo ${targets} | sed 's/ /-/') elif [ x"${mmm}" != x"" ]; then targets=all_modules fi if [ x"${ninja_suffix}" != x"" ]; then ninja_suffix=$(echo ${ninja_suffix} | sed 'y/\//_/') ninja_suffix_flag=--ninja_suffix=${ninja_suffix} fi ${kati} --ninja ${ninja_suffix_flag} --ignore_optional_include=out/%.P --ignore_dirty=out/% --use_find_emulator --detect_android_echo --detect_depfiles --gen_all_targets ${goma_flag} ${extra_flags} ${targets} echo echo ninja${ninja_suffix}.sh and build${ninja_suffix}.ninja were generated, please run ./ninja${ninja_suffix}.sh