blob: 709000ae72f3830ccc20eb1ad998d6d67cb1f802 [file] [log] [blame]
Shinichiro Hamaji5fb52572015-06-04 16:20:32 +09001#!/bin/bash
2#
Shinichiro Hamajib69bf8a2015-06-10 14:52:06 +09003# Copyright 2015 Google Inc. All rights reserved
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16#
Shinichiro Hamaji5fb52572015-06-04 16:20:32 +090017# A wrapper for kati which generates build.ninja mainly for Android.
18#
19
20set -e
21
22kati_dir=$(cd $(dirname $0) && pwd)
Shinichiro Hamaji71161a32015-07-06 15:48:28 +090023extra_flags=
24goma_flag=
Shinichiro Hamaji5fb52572015-06-04 16:20:32 +090025
Shinichiro Hamaji71161a32015-07-06 15:48:28 +090026while [ x"$1" != x"" ]; do
27 case "$1" in
28 --help)
Shinichiro Hamaji2eac7682015-06-05 13:27:56 +090029 cat - <<EOF
Shinichiro Hamaji5fb52572015-06-04 16:20:32 +090030Usage:
Shinichiro Hamaji8bddb462015-07-06 18:55:47 +090031 m2n # for default full-build
32 m2n --goma # use goma. \$HOME/goma must exist
33 m2n --go # use go version. Slower but maybe more portable.
34 m2n cts # for target 'cts'
Shinichiro Hamaji5fb52572015-06-04 16:20:32 +090035EOF
Shinichiro Hamaji5fb52572015-06-04 16:20:32 +090036 exit 1
Shinichiro Hamaji71161a32015-07-06 15:48:28 +090037 ;;
Shinichiro Hamaji5fb52572015-06-04 16:20:32 +090038
Shinichiro Hamaji71161a32015-07-06 15:48:28 +090039 --go)
40 kati=${kati_dir}/kati
41 shift
42 ${kati} --m2n "$@"
43 echo
44 echo ninja.sh and build.ninja were generated, please run ./ninja.sh
45 exit
46 ;;
47
48 --goma)
49 if [ ! -e $HOME/goma/goma_ctl.py ]; then
50 echo "$HOME/goma/goma_ctl.py should exist to use goma"
51 exit 1
52 fi
53 $HOME/goma/goma_ctl.py ensure_start
54 goma_flag=--goma_dir=$HOME/goma
55 shift
56 ;;
57
Shinichiro Hamaji8bddb462015-07-06 18:55:47 +090058 --mmm)
59 echo 'Note: --mmm may not work'
60 shift;
61 mmm="$1"
62 shift
63 ;;
64
Shinichiro Hamaji71161a32015-07-06 15:48:28 +090065 --*)
66 extra_flags+=" $1"
67 shift
68 ;;
69
70 *)
Shinichiro Hamaji8bddb462015-07-06 18:55:47 +090071 targets="${targets} $1"
Shinichiro Hamaji71161a32015-07-06 15:48:28 +090072 shift
73 ;;
74 esac
75done
76
77kati=${kati_dir}/ckati
78
Shinichiro Hamaji8bddb462015-07-06 18:55:47 +090079ninja_suffix=
80ninja_suffix_flag=
81
82if [ x"${mmm}" != x"" ]; then
83 mk="${mmm}/Android.mk"
84 if [ ! -f ${mk} ]; then
85 echo "${mk} does not exist"
86 exit 1
Shinichiro Hamajiebcc8492015-07-06 17:16:20 +090087 fi
Shinichiro Hamaji8bddb462015-07-06 18:55:47 +090088
89 export ONE_SHOT_MAKEFILE=${mk}
90 echo ONE_SHOT_MAKEFILE=${ONE_SHOT_MAKEFILE}
91
92 ninja_suffix=-mmm-${mmm}
Shinichiro Hamaji71161a32015-07-06 15:48:28 +090093fi
94
Shinichiro Hamaji8bddb462015-07-06 18:55:47 +090095if [ x"${targets}" != x"" ]; then
96 ninja_suffix+=-$(echo ${targets} | sed 's/ /-/')
97fi
98
99if [ x"${ninja_suffix}" != x"" ]; then
100 ninja_suffix=$(echo ${ninja_suffix} | sed 'y/\//_/')
101 ninja_suffix_flag=--ninja_suffix=${ninja_suffix}
102fi
103
104${kati} --ninja ${ninja_suffix_flag} --ignore_optional_include=out/%.P --use_find_emulator ${goma_flag} ${extra_flags} ${targets}
Shinichiro Hamaji71161a32015-07-06 15:48:28 +0900105
106echo
Shinichiro Hamaji8bddb462015-07-06 18:55:47 +0900107echo ninja${ninja_suffix}.sh and build${ninja_suffix}.ninja were generated, please run ./ninja${ninja_suffix}.sh