blob: 5fe3967b2564b0a1b8e3b25bc3f4e8c6b7bd43bc [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
43 bpfmt
44 ckati
45 ckati_stamp_dump
46 header-abi-linker
47 header-abi-dumper
48 header-abi-diff
Colin Crossc5042c72017-06-20 17:22:32 -070049 makeparallel
50 merge-abi-diff
51 ninja
52 soong_zip
53 zip2zip
54 ziptime
55 )
Colin Cross14cd25f2017-09-22 14:27:44 -070056 SOONG_ASAN_BINARIES=(
57 acp
58 ckati
59 makeparallel
60 ninja
61 ziptime
62 )
63 SOONG_JAVA_LIBRARIES=(
64 desugar
65 dx
66 d8
Nan Zhangac1bdea2017-10-24 14:46:58 -070067 turbine
Colin Cross14cd25f2017-09-22 14:27:44 -070068 )
69 SOONG_JAVA_WRAPPERS=(
70 dx
71 d8
72 )
73
74 binaries=$(for i in "${SOONG_BINARIES[@]}"; do echo ${SOONG_HOST_OUT}/bin/${i}; done)
Dan Willemsend4475082017-10-04 15:40:35 -070075 asan_binaries=$(for i in "${SOONG_ASAN_BINARIES[@]}"; do echo ${SOONG_HOST_OUT}/bin/${i}; done)
Colin Cross14cd25f2017-09-22 14:27:44 -070076 jars=$(for i in "${SOONG_JAVA_LIBRARIES[@]}"; do echo ${SOONG_HOST_OUT}/framework/${i}.jar; done)
77 wrappers=$(for i in "${SOONG_JAVA_WRAPPERS[@]}"; do echo ${SOONG_HOST_OUT}/bin/${i}; done)
78
79 # Build everything
80 build/soong/soong_ui.bash --make-mode --skip-make \
81 ${binaries} \
82 ${wrappers} \
83 ${jars} \
84 ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test
85
86 # Run ninja tests
Dan Willemsen76748492016-04-21 12:40:04 -070087 ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test
Colin Cross14cd25f2017-09-22 14:27:44 -070088
89 # Copy arch-specific binaries
Dan Willemsen6adbc362016-10-05 22:41:25 -070090 mkdir -p ${SOONG_OUT}/dist/bin
Colin Cross14cd25f2017-09-22 14:27:44 -070091 cp ${binaries} ${SOONG_OUT}/dist/bin/
Dan Willemsen6adbc362016-10-05 22:41:25 -070092 cp -R ${SOONG_HOST_OUT}/lib* ${SOONG_OUT}/dist/
93
Colin Cross14cd25f2017-09-22 14:27:44 -070094 # Copy jars and wrappers
95 mkdir -p ${SOONG_OUT}/dist-common/bin ${SOONG_OUT}/dist-common/framework
96 cp ${wrappers} ${SOONG_OUT}/dist-common/bin
97 cp ${jars} ${SOONG_OUT}/dist-common/framework
98
Dan Willemsen6adbc362016-10-05 22:41:25 -070099 if [[ $OS == "linux" ]]; then
100 # Build ASAN versions
101 export ASAN_OPTIONS=detect_leaks=0
102 cat > ${SOONG_OUT}/soong.variables << EOF
103{
104 "Allow_missing_dependencies": true,
105 "HostArch":"x86_64",
106 "HostSecondaryArch":"x86",
107 "SanitizeHost": ["address"]
108}
109EOF
Colin Cross14cd25f2017-09-22 14:27:44 -0700110
111 # Clean up non-ASAN installed versions
Colin Cross85c2d922017-05-09 20:30:40 -0700112 rm -rf ${SOONG_HOST_OUT}
Colin Cross14cd25f2017-09-22 14:27:44 -0700113
114 # Build everything with ASAN
115 build/soong/soong_ui.bash --make-mode --skip-make \
Dan Willemsend4475082017-10-04 15:40:35 -0700116 ${asan_binaries} \
Colin Cross14cd25f2017-09-22 14:27:44 -0700117 ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test
118
119 # Run ninja tests
Dan Willemsen6adbc362016-10-05 22:41:25 -0700120 ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test
Colin Cross14cd25f2017-09-22 14:27:44 -0700121
122 # Copy arch-specific binaries
Dan Willemsen6adbc362016-10-05 22:41:25 -0700123 mkdir -p ${SOONG_OUT}/dist/asan/bin
Dan Willemsend4475082017-10-04 15:40:35 -0700124 cp ${asan_binaries} ${SOONG_OUT}/dist/asan/bin/
Dan Willemsen6adbc362016-10-05 22:41:25 -0700125 cp -R ${SOONG_HOST_OUT}/lib* ${SOONG_OUT}/dist/asan/
126 fi
127
Colin Cross14cd25f2017-09-22 14:27:44 -0700128 # Package arch-specific prebuilts
Dan Willemsen6adbc362016-10-05 22:41:25 -0700129 (
130 cd ${SOONG_OUT}/dist
131 zip -qryX build-prebuilts.zip *
132 )
Colin Cross14cd25f2017-09-22 14:27:44 -0700133
134 # Package common prebuilts
135 (
136 cd ${SOONG_OUT}/dist-common
137 zip -qryX build-common-prebuilts.zip *
138 )
Colin Cross0ffa5a02016-04-01 16:45:40 -0700139fi
140
141# Go
142if [ -n ${build_go} ]; then
143 GO_OUT=${OUT_DIR}/obj/go
144 rm -rf ${GO_OUT}
145 mkdir -p ${GO_OUT}
146 cp -a ${TOP}/toolchain/go/* ${GO_OUT}/
147 (
148 cd ${GO_OUT}/src
149 export GOROOT_BOOTSTRAP=${TOP}/prebuilts/go/${OS}-x86
Colin Cross42f43d92016-04-18 12:31:06 -0700150 export GOROOT_FINAL=./prebuilts/go/${OS}-x86
Colin Cross0ffa5a02016-04-01 16:45:40 -0700151 export GO_TEST_TIMEOUT_SCALE=100
152 ./make.bash
Dan Willemsen817bd2e2017-02-21 14:37:36 -0800153 rm -rf ../pkg/bootstrap
Colin Cross0ffa5a02016-04-01 16:45:40 -0700154 GOROOT=$(pwd)/.. ../bin/go install -race std
155 )
156 (
157 cd ${GO_OUT}
158 zip -qryX go.zip *
159 )
160fi
161
162if [ -n "${DIST_DIR}" ]; then
163 mkdir -p ${DIST_DIR} || true
164
165 if [ -n ${build_soong} ]; then
Dan Willemsen6adbc362016-10-05 22:41:25 -0700166 cp ${SOONG_OUT}/dist/build-prebuilts.zip ${DIST_DIR}/
Colin Cross14cd25f2017-09-22 14:27:44 -0700167 cp ${SOONG_OUT}/dist-common/build-common-prebuilts.zip ${DIST_DIR}/
Dan Willemsen6adbc362016-10-05 22:41:25 -0700168 cp ${SOONG_OUT}/.bootstrap/docs/soong_build.html ${DIST_DIR}/
Colin Cross0ffa5a02016-04-01 16:45:40 -0700169 fi
Colin Cross0ffa5a02016-04-01 16:45:40 -0700170 if [ -n ${build_go} ]; then
171 cp ${GO_OUT}/go.zip ${DIST_DIR}/
172 fi
173fi