blob: 7dbf590a4bf09b047b8a9f1ffdd823cde010920a [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
29 # ckati and makeparallel (Soong)
30 SOONG_OUT=${OUT_DIR}/soong
31 SOONG_HOST_OUT=${OUT_DIR}/soong/host/${OS}-x86
32 rm -rf ${SOONG_OUT}
33 mkdir -p ${SOONG_OUT}
34 cat > ${SOONG_OUT}/soong.variables << EOF
35{
36 "Allow_missing_dependencies": true,
37 "HostArch":"x86_64",
Dan Willemsen49667402016-07-11 14:39:35 -070038 "HostSecondaryArch":"x86"
Colin Cross0ffa5a02016-04-01 16:45:40 -070039}
40EOF
Colin Crossc5042c72017-06-20 17:22:32 -070041 SOONG_BINARIES=(
42 acp
Dan Willemsen52503bb2017-11-17 10:11:03 -080043 aidl
Dan Willemsen10aabfe2018-01-08 17:12:38 -080044 bison
Colin Crossc5042c72017-06-20 17:22:32 -070045 bpfmt
46 ckati
47 ckati_stamp_dump
48 header-abi-linker
49 header-abi-dumper
50 header-abi-diff
Colin Crossc5042c72017-06-20 17:22:32 -070051 makeparallel
52 merge-abi-diff
53 ninja
54 soong_zip
55 zip2zip
Dan Willemsen52503bb2017-11-17 10:11:03 -080056 zipalign
Colin Crossc5042c72017-06-20 17:22:32 -070057 ziptime
58 )
Colin Cross14cd25f2017-09-22 14:27:44 -070059 SOONG_ASAN_BINARIES=(
60 acp
Dan Willemsen52503bb2017-11-17 10:11:03 -080061 aidl
Colin Cross14cd25f2017-09-22 14:27:44 -070062 ckati
63 makeparallel
64 ninja
Dan Willemsen52503bb2017-11-17 10:11:03 -080065 zipalign
Colin Cross14cd25f2017-09-22 14:27:44 -070066 ziptime
67 )
68 SOONG_JAVA_LIBRARIES=(
69 desugar
70 dx
Nan Zhangac1bdea2017-10-24 14:46:58 -070071 turbine
Colin Cross14cd25f2017-09-22 14:27:44 -070072 )
73 SOONG_JAVA_WRAPPERS=(
74 dx
Colin Cross14cd25f2017-09-22 14:27:44 -070075 )
76
77 binaries=$(for i in "${SOONG_BINARIES[@]}"; do echo ${SOONG_HOST_OUT}/bin/${i}; done)
Dan Willemsend4475082017-10-04 15:40:35 -070078 asan_binaries=$(for i in "${SOONG_ASAN_BINARIES[@]}"; do echo ${SOONG_HOST_OUT}/bin/${i}; done)
Colin Cross14cd25f2017-09-22 14:27:44 -070079 jars=$(for i in "${SOONG_JAVA_LIBRARIES[@]}"; do echo ${SOONG_HOST_OUT}/framework/${i}.jar; done)
80 wrappers=$(for i in "${SOONG_JAVA_WRAPPERS[@]}"; do echo ${SOONG_HOST_OUT}/bin/${i}; done)
81
82 # Build everything
83 build/soong/soong_ui.bash --make-mode --skip-make \
84 ${binaries} \
85 ${wrappers} \
86 ${jars} \
Colin Crossacad53f2017-12-12 10:59:25 -080087 ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test \
Dan Willemsenfe85be02018-02-15 13:59:35 -080088 ${SOONG_HOST_OUT}/nativetest64/ckati_test/find_test \
Colin Crossacad53f2017-12-12 10:59:25 -080089 soong_docs
Colin Cross14cd25f2017-09-22 14:27:44 -070090
91 # Run ninja tests
Dan Willemsen76748492016-04-21 12:40:04 -070092 ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test
Colin Cross14cd25f2017-09-22 14:27:44 -070093
Dan Willemsenfe85be02018-02-15 13:59:35 -080094 # Run ckati tests
95 ${SOONG_HOST_OUT}/nativetest64/ckati_test/find_test
96
Colin Cross14cd25f2017-09-22 14:27:44 -070097 # Copy arch-specific binaries
Dan Willemsen6adbc362016-10-05 22:41:25 -070098 mkdir -p ${SOONG_OUT}/dist/bin
Colin Cross14cd25f2017-09-22 14:27:44 -070099 cp ${binaries} ${SOONG_OUT}/dist/bin/
Dan Willemsen6adbc362016-10-05 22:41:25 -0700100 cp -R ${SOONG_HOST_OUT}/lib* ${SOONG_OUT}/dist/
101
Colin Cross14cd25f2017-09-22 14:27:44 -0700102 # Copy jars and wrappers
103 mkdir -p ${SOONG_OUT}/dist-common/bin ${SOONG_OUT}/dist-common/framework
104 cp ${wrappers} ${SOONG_OUT}/dist-common/bin
105 cp ${jars} ${SOONG_OUT}/dist-common/framework
106
Dan Willemsen10aabfe2018-01-08 17:12:38 -0800107 cp -r external/bison/data ${SOONG_OUT}/dist-common/bison
108
Dan Willemsen6adbc362016-10-05 22:41:25 -0700109 if [[ $OS == "linux" ]]; then
110 # Build ASAN versions
111 export ASAN_OPTIONS=detect_leaks=0
112 cat > ${SOONG_OUT}/soong.variables << EOF
113{
114 "Allow_missing_dependencies": true,
115 "HostArch":"x86_64",
116 "HostSecondaryArch":"x86",
117 "SanitizeHost": ["address"]
118}
119EOF
Colin Cross14cd25f2017-09-22 14:27:44 -0700120
121 # Clean up non-ASAN installed versions
Colin Cross85c2d922017-05-09 20:30:40 -0700122 rm -rf ${SOONG_HOST_OUT}
Colin Cross14cd25f2017-09-22 14:27:44 -0700123
124 # Build everything with ASAN
125 build/soong/soong_ui.bash --make-mode --skip-make \
Dan Willemsend4475082017-10-04 15:40:35 -0700126 ${asan_binaries} \
Dan Willemsenfe85be02018-02-15 13:59:35 -0800127 ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test \
128 ${SOONG_HOST_OUT}/nativetest64/ckati_test/find_test
Colin Cross14cd25f2017-09-22 14:27:44 -0700129
130 # Run ninja tests
Dan Willemsen6adbc362016-10-05 22:41:25 -0700131 ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test
Colin Cross14cd25f2017-09-22 14:27:44 -0700132
Dan Willemsenfe85be02018-02-15 13:59:35 -0800133 # Run ckati tests
134 ${SOONG_HOST_OUT}/nativetest64/ckati_test/find_test
135
Colin Cross14cd25f2017-09-22 14:27:44 -0700136 # Copy arch-specific binaries
Dan Willemsen6adbc362016-10-05 22:41:25 -0700137 mkdir -p ${SOONG_OUT}/dist/asan/bin
Dan Willemsend4475082017-10-04 15:40:35 -0700138 cp ${asan_binaries} ${SOONG_OUT}/dist/asan/bin/
Dan Willemsen6adbc362016-10-05 22:41:25 -0700139 cp -R ${SOONG_HOST_OUT}/lib* ${SOONG_OUT}/dist/asan/
140 fi
141
Colin Cross14cd25f2017-09-22 14:27:44 -0700142 # Package arch-specific prebuilts
Dan Willemsen6adbc362016-10-05 22:41:25 -0700143 (
144 cd ${SOONG_OUT}/dist
145 zip -qryX build-prebuilts.zip *
146 )
Colin Cross14cd25f2017-09-22 14:27:44 -0700147
148 # Package common prebuilts
149 (
150 cd ${SOONG_OUT}/dist-common
151 zip -qryX build-common-prebuilts.zip *
152 )
Colin Cross0ffa5a02016-04-01 16:45:40 -0700153fi
154
155# Go
156if [ -n ${build_go} ]; then
157 GO_OUT=${OUT_DIR}/obj/go
158 rm -rf ${GO_OUT}
159 mkdir -p ${GO_OUT}
160 cp -a ${TOP}/toolchain/go/* ${GO_OUT}/
161 (
162 cd ${GO_OUT}/src
163 export GOROOT_BOOTSTRAP=${TOP}/prebuilts/go/${OS}-x86
Colin Cross42f43d92016-04-18 12:31:06 -0700164 export GOROOT_FINAL=./prebuilts/go/${OS}-x86
Colin Cross0ffa5a02016-04-01 16:45:40 -0700165 export GO_TEST_TIMEOUT_SCALE=100
166 ./make.bash
Dan Willemsen817bd2e2017-02-21 14:37:36 -0800167 rm -rf ../pkg/bootstrap
Colin Cross0ffa5a02016-04-01 16:45:40 -0700168 GOROOT=$(pwd)/.. ../bin/go install -race std
169 )
170 (
171 cd ${GO_OUT}
172 zip -qryX go.zip *
173 )
174fi
175
176if [ -n "${DIST_DIR}" ]; then
177 mkdir -p ${DIST_DIR} || true
178
179 if [ -n ${build_soong} ]; then
Dan Willemsen6adbc362016-10-05 22:41:25 -0700180 cp ${SOONG_OUT}/dist/build-prebuilts.zip ${DIST_DIR}/
Colin Cross14cd25f2017-09-22 14:27:44 -0700181 cp ${SOONG_OUT}/dist-common/build-common-prebuilts.zip ${DIST_DIR}/
Colin Crossacad53f2017-12-12 10:59:25 -0800182 cp ${SOONG_OUT}/docs/soong_build.html ${DIST_DIR}/
Colin Cross0ffa5a02016-04-01 16:45:40 -0700183 fi
Colin Cross0ffa5a02016-04-01 16:45:40 -0700184 if [ -n ${build_go} ]; then
185 cp ${GO_OUT}/go.zip ${DIST_DIR}/
186 fi
187fi