blob: 514565d351f4a36871b16fe62ce18bd9cb926b87 [file] [log] [blame]
Colin Cross0ffa5a02016-04-01 16:45:40 -07001#!/bin/bash -ex
2
Sasha Smundak22442732019-11-18 18:27:12 -08003: "${OUT_DIR:?Must set OUT_DIR}"
Colin Cross0ffa5a02016-04-01 16:45:40 -07004TOP=$(pwd)
5
6UNAME="$(uname)"
7case "$UNAME" in
8Linux)
9 OS='linux'
10 ;;
11Darwin)
12 OS='darwin'
13 ;;
14*)
15 exit 1
16 ;;
17esac
18
19build_soong=1
Sasha Smundak22442732019-11-18 18:27:12 -080020[[ ! -d ${TOP}/toolchain/go ]] || build_go=1
21clean=t
22[[ "${1:-}" != '--resume' ]] || clean=''
Colin Cross0ffa5a02016-04-01 16:45:40 -070023
24if [ -n ${build_soong} ]; then
Colin Cross0ffa5a02016-04-01 16:45:40 -070025 SOONG_OUT=${OUT_DIR}/soong
26 SOONG_HOST_OUT=${OUT_DIR}/soong/host/${OS}-x86
Sasha Smundak22442732019-11-18 18:27:12 -080027 [[ -z "${clean}" ]] || rm -rf ${SOONG_OUT}
Colin Cross0ffa5a02016-04-01 16:45:40 -070028 mkdir -p ${SOONG_OUT}
29 cat > ${SOONG_OUT}/soong.variables << EOF
30{
31 "Allow_missing_dependencies": true,
Dan Willemsen0455a262018-08-28 17:50:21 -070032 "HostArch":"x86_64"
Colin Cross0ffa5a02016-04-01 16:45:40 -070033}
34EOF
Colin Crossc5042c72017-06-20 17:22:32 -070035 SOONG_BINARIES=(
36 acp
Dan Willemsen52503bb2017-11-17 10:11:03 -080037 aidl
Dan Willemsen10aabfe2018-01-08 17:12:38 -080038 bison
Colin Crossc5042c72017-06-20 17:22:32 -070039 bpfmt
Elliott Hughes8355f232019-02-19 12:57:48 -080040 bzip2
Colin Crossc5042c72017-06-20 17:22:32 -070041 ckati
42 ckati_stamp_dump
Dan Willemsen77ad4b92018-05-22 16:38:31 -070043 flex
Dan Willemsen6656b712019-12-09 15:00:19 -080044 gavinhoward-bc
Neel Mehta487def62019-07-30 17:26:20 -070045 hidl-lint
Dan Willemsen98670422019-04-22 11:11:58 -070046 m4
Dan Willemsenc4e38f52018-10-04 17:41:49 -070047 make
Colin Crossc5042c72017-06-20 17:22:32 -070048 ninja
Elliott Hughes8355f232019-02-19 12:57:48 -080049 one-true-awk
Dan Willemsen882ed392019-02-17 14:41:11 -080050 py2-cmd
Dan Willemsenf7bf4cd2019-12-09 08:54:43 -080051 py3-cmd
Colin Crossc5042c72017-06-20 17:22:32 -070052 soong_zip
Dan Willemsen17dbeae2019-08-21 13:34:54 -070053 toybox
Dan Willemsen9672d7a2018-03-09 01:00:47 -080054 xz
Colin Crossc5042c72017-06-20 17:22:32 -070055 zip2zip
Dan Willemsen52503bb2017-11-17 10:11:03 -080056 zipalign
Colin Crossc5042c72017-06-20 17:22:32 -070057 ziptime
Elliott Hughes754018d2019-10-29 13:56:37 -070058 ziptool
Colin Crossc5042c72017-06-20 17:22:32 -070059 )
Colin Cross14cd25f2017-09-22 14:27:44 -070060 SOONG_ASAN_BINARIES=(
61 acp
Dan Willemsen52503bb2017-11-17 10:11:03 -080062 aidl
Colin Cross14cd25f2017-09-22 14:27:44 -070063 ckati
Dan Willemsen6656b712019-12-09 15:00:19 -080064 gavinhoward-bc
Colin Cross14cd25f2017-09-22 14:27:44 -070065 ninja
Dan Willemsen17dbeae2019-08-21 13:34:54 -070066 toybox
Dan Willemsen52503bb2017-11-17 10:11:03 -080067 zipalign
Colin Cross14cd25f2017-09-22 14:27:44 -070068 ziptime
Elliott Hughes754018d2019-10-29 13:56:37 -070069 ziptool
Colin Cross14cd25f2017-09-22 14:27:44 -070070 )
71 SOONG_JAVA_LIBRARIES=(
Sasha Smundak22442732019-11-18 18:27:12 -080072 desugar.jar
73 dx.jar
74 turbine.jar
75 javac_extractor.jar
Colin Cross14cd25f2017-09-22 14:27:44 -070076 )
77 SOONG_JAVA_WRAPPERS=(
78 dx
Colin Cross14cd25f2017-09-22 14:27:44 -070079 )
Dan Willemsen7c8949f2018-10-29 11:00:43 -070080 if [[ $OS == "linux" ]]; then
81 SOONG_BINARIES+=(
Dan Willemsen5e68d972019-01-10 12:50:28 -080082 nsjail
Dan Willemsen7c8949f2018-10-29 11:00:43 -070083 )
84 fi
Colin Cross14cd25f2017-09-22 14:27:44 -070085
Sasha Smundak22442732019-11-18 18:27:12 -080086 binaries="${SOONG_BINARIES[@]/#/${SOONG_HOST_OUT}/bin/}"
87 asan_binaries="${SOONG_ASAN_BINARIES[@]/#/${SOONG_HOST_OUT}/bin/}"
88 jars="${SOONG_JAVA_LIBRARIES[@]/#/${SOONG_HOST_OUT}/framework/}"
89 wrappers="${SOONG_JAVA_WRAPPERS[@]/#/${SOONG_HOST_OUT}/bin/}"
Colin Cross14cd25f2017-09-22 14:27:44 -070090
91 # Build everything
92 build/soong/soong_ui.bash --make-mode --skip-make \
93 ${binaries} \
94 ${wrappers} \
95 ${jars} \
Colin Crossacad53f2017-12-12 10:59:25 -080096 ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test \
Dan Willemsenfe85be02018-02-15 13:59:35 -080097 ${SOONG_HOST_OUT}/nativetest64/ckati_test/find_test \
Colin Crossacad53f2017-12-12 10:59:25 -080098 soong_docs
Colin Cross14cd25f2017-09-22 14:27:44 -070099
100 # Run ninja tests
Dan Willemsen76748492016-04-21 12:40:04 -0700101 ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test
Colin Cross14cd25f2017-09-22 14:27:44 -0700102
Dan Willemsenfe85be02018-02-15 13:59:35 -0800103 # Run ckati tests
104 ${SOONG_HOST_OUT}/nativetest64/ckati_test/find_test
105
Colin Cross14cd25f2017-09-22 14:27:44 -0700106 # Copy arch-specific binaries
Dan Willemsen6adbc362016-10-05 22:41:25 -0700107 mkdir -p ${SOONG_OUT}/dist/bin
Colin Cross14cd25f2017-09-22 14:27:44 -0700108 cp ${binaries} ${SOONG_OUT}/dist/bin/
Dan Willemsen6adbc362016-10-05 22:41:25 -0700109 cp -R ${SOONG_HOST_OUT}/lib* ${SOONG_OUT}/dist/
110
Colin Cross14cd25f2017-09-22 14:27:44 -0700111 # Copy jars and wrappers
112 mkdir -p ${SOONG_OUT}/dist-common/bin ${SOONG_OUT}/dist-common/framework
113 cp ${wrappers} ${SOONG_OUT}/dist-common/bin
114 cp ${jars} ${SOONG_OUT}/dist-common/framework
115
Dan Willemsen10aabfe2018-01-08 17:12:38 -0800116 cp -r external/bison/data ${SOONG_OUT}/dist-common/bison
117
Dan Willemsen6adbc362016-10-05 22:41:25 -0700118 if [[ $OS == "linux" ]]; then
119 # Build ASAN versions
120 export ASAN_OPTIONS=detect_leaks=0
121 cat > ${SOONG_OUT}/soong.variables << EOF
122{
123 "Allow_missing_dependencies": true,
124 "HostArch":"x86_64",
Dan Willemsen6adbc362016-10-05 22:41:25 -0700125 "SanitizeHost": ["address"]
126}
127EOF
Colin Cross14cd25f2017-09-22 14:27:44 -0700128
129 # Clean up non-ASAN installed versions
Colin Cross85c2d922017-05-09 20:30:40 -0700130 rm -rf ${SOONG_HOST_OUT}
Colin Cross14cd25f2017-09-22 14:27:44 -0700131
132 # Build everything with ASAN
133 build/soong/soong_ui.bash --make-mode --skip-make \
Dan Willemsend4475082017-10-04 15:40:35 -0700134 ${asan_binaries} \
Dan Willemsenfe85be02018-02-15 13:59:35 -0800135 ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test \
136 ${SOONG_HOST_OUT}/nativetest64/ckati_test/find_test
Colin Cross14cd25f2017-09-22 14:27:44 -0700137
138 # Run ninja tests
Dan Willemsen6adbc362016-10-05 22:41:25 -0700139 ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test
Colin Cross14cd25f2017-09-22 14:27:44 -0700140
Dan Willemsenfe85be02018-02-15 13:59:35 -0800141 # Run ckati tests
142 ${SOONG_HOST_OUT}/nativetest64/ckati_test/find_test
143
Colin Cross14cd25f2017-09-22 14:27:44 -0700144 # Copy arch-specific binaries
Dan Willemsen6adbc362016-10-05 22:41:25 -0700145 mkdir -p ${SOONG_OUT}/dist/asan/bin
Dan Willemsend4475082017-10-04 15:40:35 -0700146 cp ${asan_binaries} ${SOONG_OUT}/dist/asan/bin/
Dan Willemsen6adbc362016-10-05 22:41:25 -0700147 cp -R ${SOONG_HOST_OUT}/lib* ${SOONG_OUT}/dist/asan/
148 fi
149
Colin Cross14cd25f2017-09-22 14:27:44 -0700150 # Package arch-specific prebuilts
Dan Willemsen6adbc362016-10-05 22:41:25 -0700151 (
152 cd ${SOONG_OUT}/dist
153 zip -qryX build-prebuilts.zip *
154 )
Colin Cross14cd25f2017-09-22 14:27:44 -0700155
156 # Package common prebuilts
157 (
158 cd ${SOONG_OUT}/dist-common
159 zip -qryX build-common-prebuilts.zip *
160 )
Colin Cross0ffa5a02016-04-01 16:45:40 -0700161fi
162
163# Go
164if [ -n ${build_go} ]; then
165 GO_OUT=${OUT_DIR}/obj/go
166 rm -rf ${GO_OUT}
167 mkdir -p ${GO_OUT}
168 cp -a ${TOP}/toolchain/go/* ${GO_OUT}/
169 (
170 cd ${GO_OUT}/src
171 export GOROOT_BOOTSTRAP=${TOP}/prebuilts/go/${OS}-x86
Colin Cross42f43d92016-04-18 12:31:06 -0700172 export GOROOT_FINAL=./prebuilts/go/${OS}-x86
Colin Cross0ffa5a02016-04-01 16:45:40 -0700173 export GO_TEST_TIMEOUT_SCALE=100
174 ./make.bash
Dan Willemsen817bd2e2017-02-21 14:37:36 -0800175 rm -rf ../pkg/bootstrap
Dan Willemsen77ba5532018-07-23 10:48:27 -0700176 rm -rf ../pkg/obj
Colin Cross0ffa5a02016-04-01 16:45:40 -0700177 GOROOT=$(pwd)/.. ../bin/go install -race std
178 )
179 (
180 cd ${GO_OUT}
181 zip -qryX go.zip *
182 )
183fi
184
185if [ -n "${DIST_DIR}" ]; then
186 mkdir -p ${DIST_DIR} || true
187
188 if [ -n ${build_soong} ]; then
Dan Willemsen6adbc362016-10-05 22:41:25 -0700189 cp ${SOONG_OUT}/dist/build-prebuilts.zip ${DIST_DIR}/
Colin Cross14cd25f2017-09-22 14:27:44 -0700190 cp ${SOONG_OUT}/dist-common/build-common-prebuilts.zip ${DIST_DIR}/
Jaewoong Jung8f0c9122019-02-20 15:10:39 -0800191 cp ${SOONG_OUT}/docs/*.html ${DIST_DIR}/
Colin Cross0ffa5a02016-04-01 16:45:40 -0700192 fi
Colin Cross0ffa5a02016-04-01 16:45:40 -0700193 if [ -n ${build_go} ]; then
194 cp ${GO_OUT}/go.zip ${DIST_DIR}/
195 fi
196fi