blob: 2a81e6bbef0a7d8c4a2d3999d969803a984b99e7 [file] [log] [blame]
Colin Cross0ffa5a02016-04-01 16:45:40 -07001#!/bin/bash -ex
2
3if [ -z "${OUT_DIR}" ]; then
4 echo Must set OUT_DIR
5 exit 1
6fi
7
8TOP=$(pwd)
9
10UNAME="$(uname)"
11case "$UNAME" in
12Linux)
13 OS='linux'
14 ;;
15Darwin)
16 OS='darwin'
17 ;;
18*)
19 exit 1
20 ;;
21esac
22
23build_soong=1
24if [ -d ${TOP}/toolchain/go ]; then
25 build_go=1
26fi
Colin Cross0ffa5a02016-04-01 16:45:40 -070027
28if [ -n ${build_soong} ]; then
Colin Cross0ffa5a02016-04-01 16:45:40 -070029 SOONG_OUT=${OUT_DIR}/soong
30 SOONG_HOST_OUT=${OUT_DIR}/soong/host/${OS}-x86
31 rm -rf ${SOONG_OUT}
32 mkdir -p ${SOONG_OUT}
33 cat > ${SOONG_OUT}/soong.variables << EOF
34{
35 "Allow_missing_dependencies": true,
Dan Willemsen0455a262018-08-28 17:50:21 -070036 "HostArch":"x86_64"
Colin Cross0ffa5a02016-04-01 16:45:40 -070037}
38EOF
Colin Crossc5042c72017-06-20 17:22:32 -070039 SOONG_BINARIES=(
40 acp
Dan Willemsen52503bb2017-11-17 10:11:03 -080041 aidl
Dan Willemsen10aabfe2018-01-08 17:12:38 -080042 bison
Colin Crossc5042c72017-06-20 17:22:32 -070043 bpfmt
Elliott Hughes8355f232019-02-19 12:57:48 -080044 bzip2
Colin Crossc5042c72017-06-20 17:22:32 -070045 ckati
46 ckati_stamp_dump
Dan Willemsen77ad4b92018-05-22 16:38:31 -070047 flex
Neel Mehta487def62019-07-30 17:26:20 -070048 hidl-lint
Dan Willemsen98670422019-04-22 11:11:58 -070049 m4
Dan Willemsenc4e38f52018-10-04 17:41:49 -070050 make
Colin Crossc5042c72017-06-20 17:22:32 -070051 ninja
Elliott Hughes8355f232019-02-19 12:57:48 -080052 one-true-awk
Dan Willemsen882ed392019-02-17 14:41:11 -080053 py2-cmd
Colin Crossc5042c72017-06-20 17:22:32 -070054 soong_zip
Dan Willemsen17dbeae2019-08-21 13:34:54 -070055 toybox
Dan Willemsen9672d7a2018-03-09 01:00:47 -080056 xz
Colin Crossc5042c72017-06-20 17:22:32 -070057 zip2zip
Dan Willemsen52503bb2017-11-17 10:11:03 -080058 zipalign
Colin Crossc5042c72017-06-20 17:22:32 -070059 ziptime
Elliott Hughes754018d2019-10-29 13:56:37 -070060 ziptool
Colin Crossc5042c72017-06-20 17:22:32 -070061 )
Colin Cross14cd25f2017-09-22 14:27:44 -070062 SOONG_ASAN_BINARIES=(
63 acp
Dan Willemsen52503bb2017-11-17 10:11:03 -080064 aidl
Colin Cross14cd25f2017-09-22 14:27:44 -070065 ckati
Colin Cross14cd25f2017-09-22 14:27:44 -070066 ninja
Dan Willemsen17dbeae2019-08-21 13:34:54 -070067 toybox
Dan Willemsen52503bb2017-11-17 10:11:03 -080068 zipalign
Colin Cross14cd25f2017-09-22 14:27:44 -070069 ziptime
Elliott Hughes754018d2019-10-29 13:56:37 -070070 ziptool
Colin Cross14cd25f2017-09-22 14:27:44 -070071 )
72 SOONG_JAVA_LIBRARIES=(
73 desugar
74 dx
Nan Zhangac1bdea2017-10-24 14:46:58 -070075 turbine
Sasha Smundak3f5f1052019-06-26 16:25:45 -070076 javac_extractor
Colin Cross14cd25f2017-09-22 14:27:44 -070077 )
78 SOONG_JAVA_WRAPPERS=(
79 dx
Colin Cross14cd25f2017-09-22 14:27:44 -070080 )
Dan Willemsen7c8949f2018-10-29 11:00:43 -070081 if [[ $OS == "linux" ]]; then
82 SOONG_BINARIES+=(
Dan Willemsen5e68d972019-01-10 12:50:28 -080083 nsjail
Dan Willemsen7c8949f2018-10-29 11:00:43 -070084 )
85 fi
Colin Cross14cd25f2017-09-22 14:27:44 -070086
87 binaries=$(for i in "${SOONG_BINARIES[@]}"; do echo ${SOONG_HOST_OUT}/bin/${i}; done)
Dan Willemsend4475082017-10-04 15:40:35 -070088 asan_binaries=$(for i in "${SOONG_ASAN_BINARIES[@]}"; do echo ${SOONG_HOST_OUT}/bin/${i}; done)
Colin Cross14cd25f2017-09-22 14:27:44 -070089 jars=$(for i in "${SOONG_JAVA_LIBRARIES[@]}"; do echo ${SOONG_HOST_OUT}/framework/${i}.jar; done)
90 wrappers=$(for i in "${SOONG_JAVA_WRAPPERS[@]}"; do echo ${SOONG_HOST_OUT}/bin/${i}; done)
91
92 # Build everything
93 build/soong/soong_ui.bash --make-mode --skip-make \
94 ${binaries} \
95 ${wrappers} \
96 ${jars} \
Colin Crossacad53f2017-12-12 10:59:25 -080097 ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test \
Dan Willemsenfe85be02018-02-15 13:59:35 -080098 ${SOONG_HOST_OUT}/nativetest64/ckati_test/find_test \
Colin Crossacad53f2017-12-12 10:59:25 -080099 soong_docs
Colin Cross14cd25f2017-09-22 14:27:44 -0700100
101 # Run ninja tests
Dan Willemsen76748492016-04-21 12:40:04 -0700102 ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test
Colin Cross14cd25f2017-09-22 14:27:44 -0700103
Dan Willemsenfe85be02018-02-15 13:59:35 -0800104 # Run ckati tests
105 ${SOONG_HOST_OUT}/nativetest64/ckati_test/find_test
106
Colin Cross14cd25f2017-09-22 14:27:44 -0700107 # Copy arch-specific binaries
Dan Willemsen6adbc362016-10-05 22:41:25 -0700108 mkdir -p ${SOONG_OUT}/dist/bin
Colin Cross14cd25f2017-09-22 14:27:44 -0700109 cp ${binaries} ${SOONG_OUT}/dist/bin/
Dan Willemsen6adbc362016-10-05 22:41:25 -0700110 cp -R ${SOONG_HOST_OUT}/lib* ${SOONG_OUT}/dist/
111
Colin Cross14cd25f2017-09-22 14:27:44 -0700112 # Copy jars and wrappers
113 mkdir -p ${SOONG_OUT}/dist-common/bin ${SOONG_OUT}/dist-common/framework
114 cp ${wrappers} ${SOONG_OUT}/dist-common/bin
115 cp ${jars} ${SOONG_OUT}/dist-common/framework
116
Dan Willemsen10aabfe2018-01-08 17:12:38 -0800117 cp -r external/bison/data ${SOONG_OUT}/dist-common/bison
118
Dan Willemsen6adbc362016-10-05 22:41:25 -0700119 if [[ $OS == "linux" ]]; then
120 # Build ASAN versions
121 export ASAN_OPTIONS=detect_leaks=0
122 cat > ${SOONG_OUT}/soong.variables << EOF
123{
124 "Allow_missing_dependencies": true,
125 "HostArch":"x86_64",
Dan Willemsen6adbc362016-10-05 22:41:25 -0700126 "SanitizeHost": ["address"]
127}
128EOF
Colin Cross14cd25f2017-09-22 14:27:44 -0700129
130 # Clean up non-ASAN installed versions
Colin Cross85c2d922017-05-09 20:30:40 -0700131 rm -rf ${SOONG_HOST_OUT}
Colin Cross14cd25f2017-09-22 14:27:44 -0700132
133 # Build everything with ASAN
134 build/soong/soong_ui.bash --make-mode --skip-make \
Dan Willemsend4475082017-10-04 15:40:35 -0700135 ${asan_binaries} \
Dan Willemsenfe85be02018-02-15 13:59:35 -0800136 ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test \
137 ${SOONG_HOST_OUT}/nativetest64/ckati_test/find_test
Colin Cross14cd25f2017-09-22 14:27:44 -0700138
139 # Run ninja tests
Dan Willemsen6adbc362016-10-05 22:41:25 -0700140 ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test
Colin Cross14cd25f2017-09-22 14:27:44 -0700141
Dan Willemsenfe85be02018-02-15 13:59:35 -0800142 # Run ckati tests
143 ${SOONG_HOST_OUT}/nativetest64/ckati_test/find_test
144
Colin Cross14cd25f2017-09-22 14:27:44 -0700145 # Copy arch-specific binaries
Dan Willemsen6adbc362016-10-05 22:41:25 -0700146 mkdir -p ${SOONG_OUT}/dist/asan/bin
Dan Willemsend4475082017-10-04 15:40:35 -0700147 cp ${asan_binaries} ${SOONG_OUT}/dist/asan/bin/
Dan Willemsen6adbc362016-10-05 22:41:25 -0700148 cp -R ${SOONG_HOST_OUT}/lib* ${SOONG_OUT}/dist/asan/
149 fi
150
Colin Cross14cd25f2017-09-22 14:27:44 -0700151 # Package arch-specific prebuilts
Dan Willemsen6adbc362016-10-05 22:41:25 -0700152 (
153 cd ${SOONG_OUT}/dist
154 zip -qryX build-prebuilts.zip *
155 )
Colin Cross14cd25f2017-09-22 14:27:44 -0700156
157 # Package common prebuilts
158 (
159 cd ${SOONG_OUT}/dist-common
160 zip -qryX build-common-prebuilts.zip *
161 )
Colin Cross0ffa5a02016-04-01 16:45:40 -0700162fi
163
164# Go
165if [ -n ${build_go} ]; then
166 GO_OUT=${OUT_DIR}/obj/go
167 rm -rf ${GO_OUT}
168 mkdir -p ${GO_OUT}
169 cp -a ${TOP}/toolchain/go/* ${GO_OUT}/
170 (
171 cd ${GO_OUT}/src
172 export GOROOT_BOOTSTRAP=${TOP}/prebuilts/go/${OS}-x86
Colin Cross42f43d92016-04-18 12:31:06 -0700173 export GOROOT_FINAL=./prebuilts/go/${OS}-x86
Colin Cross0ffa5a02016-04-01 16:45:40 -0700174 export GO_TEST_TIMEOUT_SCALE=100
175 ./make.bash
Dan Willemsen817bd2e2017-02-21 14:37:36 -0800176 rm -rf ../pkg/bootstrap
Dan Willemsen77ba5532018-07-23 10:48:27 -0700177 rm -rf ../pkg/obj
Colin Cross0ffa5a02016-04-01 16:45:40 -0700178 GOROOT=$(pwd)/.. ../bin/go install -race std
179 )
180 (
181 cd ${GO_OUT}
182 zip -qryX go.zip *
183 )
184fi
185
186if [ -n "${DIST_DIR}" ]; then
187 mkdir -p ${DIST_DIR} || true
188
189 if [ -n ${build_soong} ]; then
Dan Willemsen6adbc362016-10-05 22:41:25 -0700190 cp ${SOONG_OUT}/dist/build-prebuilts.zip ${DIST_DIR}/
Colin Cross14cd25f2017-09-22 14:27:44 -0700191 cp ${SOONG_OUT}/dist-common/build-common-prebuilts.zip ${DIST_DIR}/
Jaewoong Jung8f0c9122019-02-20 15:10:39 -0800192 cp ${SOONG_OUT}/docs/*.html ${DIST_DIR}/
Colin Cross0ffa5a02016-04-01 16:45:40 -0700193 fi
Colin Cross0ffa5a02016-04-01 16:45:40 -0700194 if [ -n ${build_go} ]; then
195 cp ${GO_OUT}/go.zip ${DIST_DIR}/
196 fi
197fi