xref: /aosp_15_r20/prebuilts/rust/bootstrap/mrustc-bootstrap/bootstrap.bash (revision b40554a23088fb75aa6945dfe8e65169c8484da3)
1*b40554a2SAndroid Build Coastguard Workerset -e
2*b40554a2SAndroid Build Coastguard Worker
3*b40554a2SAndroid Build Coastguard Worker# Grab libraries we'll need later at the beginning
4*b40554a2SAndroid Build Coastguard Workersudo apt-get install libssl1.0-dev libcurl4-openssl-dev
5*b40554a2SAndroid Build Coastguard Worker
6*b40554a2SAndroid Build Coastguard Worker# Grab clang prebuilt
7*b40554a2SAndroid Build Coastguard Workergit clone https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86 clang-prebuilt --filter=blob:none -n
8*b40554a2SAndroid Build Coastguard Workergit -C clang-prebuilt checkout 8a6de3cbfcd642b21ebaf9663596b3f7e942d1c5
9*b40554a2SAndroid Build Coastguard WorkerCLANGDIR=${PWD}/clang-prebuilt/clang-r353983c/bin
10*b40554a2SAndroid Build Coastguard Workerexport CC=${CLANGDIR}/clang
11*b40554a2SAndroid Build Coastguard Workerexport CXX=${CLANGDIR}/clang++
12*b40554a2SAndroid Build Coastguard Workerexport AR=${CLANGDIR}/llvm-ar
13*b40554a2SAndroid Build Coastguard Worker# Old rustc incorrectly assumed ar lived next to cc
14*b40554a2SAndroid Build Coastguard Workercp ${AR} ${CLANGDIR}/ar
15*b40554a2SAndroid Build Coastguard Worker
16*b40554a2SAndroid Build Coastguard Worker# Fetch rustc-1.19 and rustc-1.20
17*b40554a2SAndroid Build Coastguard Workerwget https://static.rust-lang.org/dist/rustc-1.19.0-src.tar.gz
18*b40554a2SAndroid Build Coastguard Workerwget https://static.rust-lang.org/dist/rustc-1.20.0-src.tar.gz
19*b40554a2SAndroid Build Coastguard Workersha256sum -c rustc-shasums
20*b40554a2SAndroid Build Coastguard Workerexport RUSTC_1_19=${PWD}/rustc-1.19.0-src.tar.gz
21*b40554a2SAndroid Build Coastguard Workerexport RUSTC_1_20=${PWD}/rustc-1.20.0-src.tar.gz
22*b40554a2SAndroid Build Coastguard Worker
23*b40554a2SAndroid Build Coastguard Worker# Build rustc-1.19 with mrustc
24*b40554a2SAndroid Build Coastguard Workergit clone https://github.com/thepowersgang/mrustc -b v0.8.0
25*b40554a2SAndroid Build Coastguard Workergit -C mrustc am ${PWD}/mrustc-patches/*
26*b40554a2SAndroid Build Coastguard Workercd mrustc
27*b40554a2SAndroid Build Coastguard Worker
28*b40554a2SAndroid Build Coastguard Worker# Build mrustc
29*b40554a2SAndroid Build Coastguard Workermake bin/mrustc
30*b40554a2SAndroid Build Coastguard Worker
31*b40554a2SAndroid Build Coastguard Workertar xf ${RUSTC_1_19}
32*b40554a2SAndroid Build Coastguard Worker# Build rustc/cargo
33*b40554a2SAndroid Build Coastguard Workermake output/rustc
34*b40554a2SAndroid Build Coastguard Workermake output/cargo
35*b40554a2SAndroid Build Coastguard Worker
36*b40554a2SAndroid Build Coastguard Worker# Build prefix and stdlibs
37*b40554a2SAndroid Build Coastguard Workermake -C run_rustc
38*b40554a2SAndroid Build Coastguard Worker
39*b40554a2SAndroid Build Coastguard Worker# Build rustc-1.20 with our mrustc-rustc 1.19
40*b40554a2SAndroid Build Coastguard WorkerPREFIX=${PWD}/run_rustc/prefix/
41*b40554a2SAndroid Build Coastguard WorkerMRUSTC_RUSTC=${PWD}/mrustc-rustc-rustc/
42*b40554a2SAndroid Build Coastguard Workermkdir -p ${MRUSTC_RUSTC}
43*b40554a2SAndroid Build Coastguard Workertar xf ${RUSTC_1_20} -C ${MRUSTC_RUSTC}
44*b40554a2SAndroid Build Coastguard WorkerMRUSTC_RUSTC_SRC=${MRUSTC_RUSTC}/rustc-1.20.0-src
45*b40554a2SAndroid Build Coastguard Workercat - > ${MRUSTC_RUSTC_SRC}/config.toml <<EOF
46*b40554a2SAndroid Build Coastguard Worker[build]
47*b40554a2SAndroid Build Coastguard Workercargo = "${PREFIX}bin/cargo"
48*b40554a2SAndroid Build Coastguard Workerrustc = "${PREFIX}bin/rustc"
49*b40554a2SAndroid Build Coastguard Workerfull-bootstrap = true
50*b40554a2SAndroid Build Coastguard Workervendor = true
51*b40554a2SAndroid Build Coastguard Workerextended = true
52*b40554a2SAndroid Build Coastguard Worker[target.x86_64-unknown-linux-gnu]
53*b40554a2SAndroid Build Coastguard Workercc = "${CC}"
54*b40554a2SAndroid Build Coastguard Workercxx = "${CXX}"
55*b40554a2SAndroid Build Coastguard Workerar = "${AR}"
56*b40554a2SAndroid Build Coastguard WorkerEOF
57*b40554a2SAndroid Build Coastguard Workermv ${MRUSTC_RUSTC_SRC} build
58*b40554a2SAndroid Build Coastguard Workerpushd build
59*b40554a2SAndroid Build Coastguard Worker./x.py build --stage 3 2>&1 > build.log
60*b40554a2SAndroid Build Coastguard Workerpopd
61*b40554a2SAndroid Build Coastguard Workermv build ${MRUSTC_RUSTC_SRC}
62*b40554a2SAndroid Build Coastguard Worker
63*b40554a2SAndroid Build Coastguard Worker# Build rustc-1.20 with official 1.19 for comparison
64*b40554a2SAndroid Build Coastguard WorkerOFFICIAL_RUSTC=${PWD}/official-rustc-rustc/
65*b40554a2SAndroid Build Coastguard Workermkdir -p ${OFFICIAL_RUSTC}
66*b40554a2SAndroid Build Coastguard Workertar xf ${RUSTC_1_20} -C ${OFFICIAL_RUSTC}
67*b40554a2SAndroid Build Coastguard WorkerOFFICIAL_RUSTC_SRC=${OFFICIAL_RUSTC}/rustc-1.20.0-src
68*b40554a2SAndroid Build Coastguard Workercat - > ${OFFICIAL_RUSTC_SRC}/config.toml <<EOF
69*b40554a2SAndroid Build Coastguard Worker[build]
70*b40554a2SAndroid Build Coastguard Workerfull-bootstrap = true
71*b40554a2SAndroid Build Coastguard Workervendor = true
72*b40554a2SAndroid Build Coastguard Workerextended = true
73*b40554a2SAndroid Build Coastguard Worker[target.x86_64-unknown-linux-gnu]
74*b40554a2SAndroid Build Coastguard Workercc = "${CC}"
75*b40554a2SAndroid Build Coastguard Workercxx = "${CXX}"
76*b40554a2SAndroid Build Coastguard Workerar = "${AR}"
77*b40554a2SAndroid Build Coastguard WorkerEOF
78*b40554a2SAndroid Build Coastguard Workermv ${OFFICIAL_RUSTC_SRC} build
79*b40554a2SAndroid Build Coastguard Workerpushd build
80*b40554a2SAndroid Build Coastguard Worker./x.py build --stage 3 2>&1 > build.log
81*b40554a2SAndroid Build Coastguard Workerpopd
82*b40554a2SAndroid Build Coastguard Workermv build ${OFFICIAL_RUSTC_SRC}
83*b40554a2SAndroid Build Coastguard Worker
84*b40554a2SAndroid Build Coastguard Worker# Summarize differences
85*b40554a2SAndroid Build Coastguard Workerdiff -r ${OFFICIAL_RUSTC_SRC}/build/x86_64-unknown-linux-gnu/stage3 ${MRUSTC_RUSTC_SRC}/build/x86_64-unknown-linux-gnu/stage3
86