Colin Cross | 0ffa5a0 | 2016-04-01 16:45:40 -0700 | [diff] [blame] | 1 | #!/bin/bash -ex |
2 | |||||
Sasha Smundak | 2244273 | 2019-11-18 18:27:12 -0800 | [diff] [blame] | 3 | : "${OUT_DIR:?Must set OUT_DIR}" |
Colin Cross | 0ffa5a0 | 2016-04-01 16:45:40 -0700 | [diff] [blame] | 4 | TOP=$(pwd) |
5 | |||||
6 | UNAME="$(uname)" | ||||
7 | case "$UNAME" in | ||||
8 | Linux) | ||||
9 | OS='linux' | ||||
10 | ;; | ||||
11 | Darwin) | ||||
12 | OS='darwin' | ||||
13 | ;; | ||||
14 | *) | ||||
15 | exit 1 | ||||
16 | ;; | ||||
17 | esac | ||||
18 | |||||
19 | build_soong=1 | ||||
Sasha Smundak | 2244273 | 2019-11-18 18:27:12 -0800 | [diff] [blame] | 20 | [[ ! -d ${TOP}/toolchain/go ]] || build_go=1 |
21 | clean=t | ||||
22 | [[ "${1:-}" != '--resume' ]] || clean='' | ||||
Colin Cross | 0ffa5a0 | 2016-04-01 16:45:40 -0700 | [diff] [blame] | 23 | |
Dan Willemsen | 0d4cca5 | 2020-04-29 15:46:22 -0700 | [diff] [blame] | 24 | # Use toybox and other prebuilts even outside of the build (test running, go, etc) |
25 | export PATH=${TOP}/prebuilts/build-tools/path/${OS}-x86:$PATH | ||||
26 | |||||
Colin Cross | 0ffa5a0 | 2016-04-01 16:45:40 -0700 | [diff] [blame] | 27 | if [ -n ${build_soong} ]; then |
Colin Cross | 0ffa5a0 | 2016-04-01 16:45:40 -0700 | [diff] [blame] | 28 | SOONG_OUT=${OUT_DIR}/soong |
29 | SOONG_HOST_OUT=${OUT_DIR}/soong/host/${OS}-x86 | ||||
Sasha Smundak | 2244273 | 2019-11-18 18:27:12 -0800 | [diff] [blame] | 30 | [[ -z "${clean}" ]] || rm -rf ${SOONG_OUT} |
Colin Cross | 0ffa5a0 | 2016-04-01 16:45:40 -0700 | [diff] [blame] | 31 | mkdir -p ${SOONG_OUT} |
32 | cat > ${SOONG_OUT}/soong.variables << EOF | ||||
33 | { | ||||
34 | "Allow_missing_dependencies": true, | ||||
Dan Willemsen | 0455a26 | 2018-08-28 17:50:21 -0700 | [diff] [blame] | 35 | "HostArch":"x86_64" |
Colin Cross | 0ffa5a0 | 2016-04-01 16:45:40 -0700 | [diff] [blame] | 36 | } |
37 | EOF | ||||
Colin Cross | c5042c7 | 2017-06-20 17:22:32 -0700 | [diff] [blame] | 38 | SOONG_BINARIES=( |
39 | acp | ||||
Dan Willemsen | 52503bb | 2017-11-17 10:11:03 -0800 | [diff] [blame] | 40 | aidl |
Dan Willemsen | 10aabfe | 2018-01-08 17:12:38 -0800 | [diff] [blame] | 41 | bison |
Colin Cross | c5042c7 | 2017-06-20 17:22:32 -0700 | [diff] [blame] | 42 | bpfmt |
Elliott Hughes | 8355f23 | 2019-02-19 12:57:48 -0800 | [diff] [blame] | 43 | bzip2 |
Colin Cross | c5042c7 | 2017-06-20 17:22:32 -0700 | [diff] [blame] | 44 | ckati |
45 | ckati_stamp_dump | ||||
Dan Willemsen | 77ad4b9 | 2018-05-22 16:38:31 -0700 | [diff] [blame] | 46 | flex |
Dan Willemsen | 6656b71 | 2019-12-09 15:00:19 -0800 | [diff] [blame] | 47 | gavinhoward-bc |
Sasha Smundak | 1d2ebbb | 2019-12-03 18:00:54 -0800 | [diff] [blame] | 48 | go_extractor |
Neel Mehta | 487def6 | 2019-07-30 17:26:20 -0700 | [diff] [blame] | 49 | hidl-lint |
Dan Willemsen | 9867042 | 2019-04-22 11:11:58 -0700 | [diff] [blame] | 50 | m4 |
Dan Willemsen | c4e38f5 | 2018-10-04 17:41:49 -0700 | [diff] [blame] | 51 | make |
Colin Cross | c5042c7 | 2017-06-20 17:22:32 -0700 | [diff] [blame] | 52 | ninja |
Elliott Hughes | 8355f23 | 2019-02-19 12:57:48 -0800 | [diff] [blame] | 53 | one-true-awk |
Dan Willemsen | 882ed39 | 2019-02-17 14:41:11 -0800 | [diff] [blame] | 54 | py2-cmd |
Dan Willemsen | f7bf4cd | 2019-12-09 08:54:43 -0800 | [diff] [blame] | 55 | py3-cmd |
Sasha Smundak | eccfaaf | 2020-04-27 23:03:34 -0700 | [diff] [blame] | 56 | runextractor |
Colin Cross | c5042c7 | 2017-06-20 17:22:32 -0700 | [diff] [blame] | 57 | soong_zip |
Dan Willemsen | 17dbeae | 2019-08-21 13:34:54 -0700 | [diff] [blame] | 58 | toybox |
Dan Willemsen | 9672d7a | 2018-03-09 01:00:47 -0800 | [diff] [blame] | 59 | xz |
Colin Cross | c5042c7 | 2017-06-20 17:22:32 -0700 | [diff] [blame] | 60 | zip2zip |
Dan Willemsen | 52503bb | 2017-11-17 10:11:03 -0800 | [diff] [blame] | 61 | zipalign |
Colin Cross | c5042c7 | 2017-06-20 17:22:32 -0700 | [diff] [blame] | 62 | ziptime |
Elliott Hughes | 754018d | 2019-10-29 13:56:37 -0700 | [diff] [blame] | 63 | ziptool |
Colin Cross | c5042c7 | 2017-06-20 17:22:32 -0700 | [diff] [blame] | 64 | ) |
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 65 | SOONG_ASAN_BINARIES=( |
66 | acp | ||||
Dan Willemsen | 52503bb | 2017-11-17 10:11:03 -0800 | [diff] [blame] | 67 | aidl |
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 68 | ckati |
Dan Willemsen | 6656b71 | 2019-12-09 15:00:19 -0800 | [diff] [blame] | 69 | gavinhoward-bc |
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 70 | ninja |
Dan Willemsen | 17dbeae | 2019-08-21 13:34:54 -0700 | [diff] [blame] | 71 | toybox |
Dan Willemsen | 52503bb | 2017-11-17 10:11:03 -0800 | [diff] [blame] | 72 | zipalign |
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 73 | ziptime |
Elliott Hughes | 754018d | 2019-10-29 13:56:37 -0700 | [diff] [blame] | 74 | ziptool |
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 75 | ) |
76 | SOONG_JAVA_LIBRARIES=( | ||||
Sasha Smundak | 2244273 | 2019-11-18 18:27:12 -0800 | [diff] [blame] | 77 | desugar.jar |
78 | dx.jar | ||||
79 | turbine.jar | ||||
80 | javac_extractor.jar | ||||
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 81 | ) |
82 | SOONG_JAVA_WRAPPERS=( | ||||
83 | dx | ||||
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 84 | ) |
Dan Willemsen | 7c8949f | 2018-10-29 11:00:43 -0700 | [diff] [blame] | 85 | if [[ $OS == "linux" ]]; then |
86 | SOONG_BINARIES+=( | ||||
Dan Willemsen | 5e68d97 | 2019-01-10 12:50:28 -0800 | [diff] [blame] | 87 | nsjail |
Dan Willemsen | 7c8949f | 2018-10-29 11:00:43 -0700 | [diff] [blame] | 88 | ) |
89 | fi | ||||
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 90 | |
Sasha Smundak | 2244273 | 2019-11-18 18:27:12 -0800 | [diff] [blame] | 91 | binaries="${SOONG_BINARIES[@]/#/${SOONG_HOST_OUT}/bin/}" |
92 | asan_binaries="${SOONG_ASAN_BINARIES[@]/#/${SOONG_HOST_OUT}/bin/}" | ||||
93 | jars="${SOONG_JAVA_LIBRARIES[@]/#/${SOONG_HOST_OUT}/framework/}" | ||||
94 | wrappers="${SOONG_JAVA_WRAPPERS[@]/#/${SOONG_HOST_OUT}/bin/}" | ||||
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 95 | |
96 | # Build everything | ||||
97 | build/soong/soong_ui.bash --make-mode --skip-make \ | ||||
98 | ${binaries} \ | ||||
99 | ${wrappers} \ | ||||
100 | ${jars} \ | ||||
Colin Cross | acad53f | 2017-12-12 10:59:25 -0800 | [diff] [blame] | 101 | ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test \ |
Dan Willemsen | fe85be0 | 2018-02-15 13:59:35 -0800 | [diff] [blame] | 102 | ${SOONG_HOST_OUT}/nativetest64/ckati_test/find_test \ |
Colin Cross | acad53f | 2017-12-12 10:59:25 -0800 | [diff] [blame] | 103 | soong_docs |
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 104 | |
105 | # Run ninja tests | ||||
Dan Willemsen | 7674849 | 2016-04-21 12:40:04 -0700 | [diff] [blame] | 106 | ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test |
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 107 | |
Dan Willemsen | fe85be0 | 2018-02-15 13:59:35 -0800 | [diff] [blame] | 108 | # Run ckati tests |
109 | ${SOONG_HOST_OUT}/nativetest64/ckati_test/find_test | ||||
110 | |||||
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 111 | # Copy arch-specific binaries |
Dan Willemsen | 6adbc36 | 2016-10-05 22:41:25 -0700 | [diff] [blame] | 112 | mkdir -p ${SOONG_OUT}/dist/bin |
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 113 | cp ${binaries} ${SOONG_OUT}/dist/bin/ |
Dan Willemsen | 6adbc36 | 2016-10-05 22:41:25 -0700 | [diff] [blame] | 114 | cp -R ${SOONG_HOST_OUT}/lib* ${SOONG_OUT}/dist/ |
115 | |||||
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 116 | # Copy jars and wrappers |
Dan Willemsen | 97f1b90 | 2019-12-23 15:13:20 -0800 | [diff] [blame] | 117 | mkdir -p ${SOONG_OUT}/dist-common/{bin,flex,framework} |
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 118 | cp ${wrappers} ${SOONG_OUT}/dist-common/bin |
119 | cp ${jars} ${SOONG_OUT}/dist-common/framework | ||||
120 | |||||
Dan Willemsen | 10aabfe | 2018-01-08 17:12:38 -0800 | [diff] [blame] | 121 | cp -r external/bison/data ${SOONG_OUT}/dist-common/bison |
Dan Willemsen | 97f1b90 | 2019-12-23 15:13:20 -0800 | [diff] [blame] | 122 | cp external/bison/NOTICE ${SOONG_OUT}/dist-common/bison/ |
123 | cp -r external/flex/src/FlexLexer.h ${SOONG_OUT}/dist-common/flex/ | ||||
124 | cp external/flex/NOTICE ${SOONG_OUT}/dist-common/flex/ | ||||
Dan Willemsen | 10aabfe | 2018-01-08 17:12:38 -0800 | [diff] [blame] | 125 | |
Dan Willemsen | 6adbc36 | 2016-10-05 22:41:25 -0700 | [diff] [blame] | 126 | if [[ $OS == "linux" ]]; then |
127 | # Build ASAN versions | ||||
128 | export ASAN_OPTIONS=detect_leaks=0 | ||||
129 | cat > ${SOONG_OUT}/soong.variables << EOF | ||||
130 | { | ||||
131 | "Allow_missing_dependencies": true, | ||||
132 | "HostArch":"x86_64", | ||||
Dan Willemsen | 6adbc36 | 2016-10-05 22:41:25 -0700 | [diff] [blame] | 133 | "SanitizeHost": ["address"] |
134 | } | ||||
135 | EOF | ||||
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 136 | |
Dan Willemsen | 070ee5b | 2020-01-03 20:35:41 -0800 | [diff] [blame] | 137 | export ASAN_SYMBOLIZER_PATH=${PWD}/prebuilts/clang/host/linux-x86/llvm-binutils-stable/llvm-symbolizer |
138 | |||||
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 139 | # Clean up non-ASAN installed versions |
Colin Cross | 85c2d92 | 2017-05-09 20:30:40 -0700 | [diff] [blame] | 140 | rm -rf ${SOONG_HOST_OUT} |
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 141 | |
142 | # Build everything with ASAN | ||||
143 | build/soong/soong_ui.bash --make-mode --skip-make \ | ||||
Dan Willemsen | d447508 | 2017-10-04 15:40:35 -0700 | [diff] [blame] | 144 | ${asan_binaries} \ |
Dan Willemsen | fe85be0 | 2018-02-15 13:59:35 -0800 | [diff] [blame] | 145 | ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test \ |
146 | ${SOONG_HOST_OUT}/nativetest64/ckati_test/find_test | ||||
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 147 | |
148 | # Run ninja tests | ||||
Dan Willemsen | 6adbc36 | 2016-10-05 22:41:25 -0700 | [diff] [blame] | 149 | ${SOONG_HOST_OUT}/nativetest64/ninja_test/ninja_test |
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 150 | |
Dan Willemsen | fe85be0 | 2018-02-15 13:59:35 -0800 | [diff] [blame] | 151 | # Run ckati tests |
152 | ${SOONG_HOST_OUT}/nativetest64/ckati_test/find_test | ||||
153 | |||||
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 154 | # Copy arch-specific binaries |
Dan Willemsen | 6adbc36 | 2016-10-05 22:41:25 -0700 | [diff] [blame] | 155 | mkdir -p ${SOONG_OUT}/dist/asan/bin |
Dan Willemsen | d447508 | 2017-10-04 15:40:35 -0700 | [diff] [blame] | 156 | cp ${asan_binaries} ${SOONG_OUT}/dist/asan/bin/ |
Dan Willemsen | 6adbc36 | 2016-10-05 22:41:25 -0700 | [diff] [blame] | 157 | cp -R ${SOONG_HOST_OUT}/lib* ${SOONG_OUT}/dist/asan/ |
158 | fi | ||||
159 | |||||
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 160 | # Package arch-specific prebuilts |
Dan Willemsen | 6adbc36 | 2016-10-05 22:41:25 -0700 | [diff] [blame] | 161 | ( |
162 | cd ${SOONG_OUT}/dist | ||||
163 | zip -qryX build-prebuilts.zip * | ||||
164 | ) | ||||
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 165 | |
166 | # Package common prebuilts | ||||
167 | ( | ||||
168 | cd ${SOONG_OUT}/dist-common | ||||
169 | zip -qryX build-common-prebuilts.zip * | ||||
170 | ) | ||||
Colin Cross | 0ffa5a0 | 2016-04-01 16:45:40 -0700 | [diff] [blame] | 171 | fi |
172 | |||||
173 | # Go | ||||
174 | if [ -n ${build_go} ]; then | ||||
175 | GO_OUT=${OUT_DIR}/obj/go | ||||
176 | rm -rf ${GO_OUT} | ||||
177 | mkdir -p ${GO_OUT} | ||||
178 | cp -a ${TOP}/toolchain/go/* ${GO_OUT}/ | ||||
179 | ( | ||||
180 | cd ${GO_OUT}/src | ||||
181 | export GOROOT_BOOTSTRAP=${TOP}/prebuilts/go/${OS}-x86 | ||||
Colin Cross | 42f43d9 | 2016-04-18 12:31:06 -0700 | [diff] [blame] | 182 | export GOROOT_FINAL=./prebuilts/go/${OS}-x86 |
Colin Cross | 0ffa5a0 | 2016-04-01 16:45:40 -0700 | [diff] [blame] | 183 | export GO_TEST_TIMEOUT_SCALE=100 |
184 | ./make.bash | ||||
Dan Willemsen | 817bd2e | 2017-02-21 14:37:36 -0800 | [diff] [blame] | 185 | rm -rf ../pkg/bootstrap |
Dan Willemsen | 77ba553 | 2018-07-23 10:48:27 -0700 | [diff] [blame] | 186 | rm -rf ../pkg/obj |
Colin Cross | 0ffa5a0 | 2016-04-01 16:45:40 -0700 | [diff] [blame] | 187 | GOROOT=$(pwd)/.. ../bin/go install -race std |
188 | ) | ||||
189 | ( | ||||
190 | cd ${GO_OUT} | ||||
191 | zip -qryX go.zip * | ||||
192 | ) | ||||
193 | fi | ||||
194 | |||||
195 | if [ -n "${DIST_DIR}" ]; then | ||||
196 | mkdir -p ${DIST_DIR} || true | ||||
197 | |||||
198 | if [ -n ${build_soong} ]; then | ||||
Dan Willemsen | 6adbc36 | 2016-10-05 22:41:25 -0700 | [diff] [blame] | 199 | cp ${SOONG_OUT}/dist/build-prebuilts.zip ${DIST_DIR}/ |
Colin Cross | 14cd25f | 2017-09-22 14:27:44 -0700 | [diff] [blame] | 200 | cp ${SOONG_OUT}/dist-common/build-common-prebuilts.zip ${DIST_DIR}/ |
Jaewoong Jung | 8f0c912 | 2019-02-20 15:10:39 -0800 | [diff] [blame] | 201 | cp ${SOONG_OUT}/docs/*.html ${DIST_DIR}/ |
Colin Cross | 0ffa5a0 | 2016-04-01 16:45:40 -0700 | [diff] [blame] | 202 | fi |
Colin Cross | 0ffa5a0 | 2016-04-01 16:45:40 -0700 | [diff] [blame] | 203 | if [ -n ${build_go} ]; then |
204 | cp ${GO_OUT}/go.zip ${DIST_DIR}/ | ||||
205 | fi | ||||
206 | fi |