Created
February 8, 2015 14:21
-
-
Save cr1901/28c7c1a2a0581eb5e02f to your computer and use it in GitHub Desktop.
Compile LLVM/Rust on Ubuntu 12.04 using non-standard paths.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
BOOTSTRAP_ROOT=/home/william/Projects | |
#TEMP_TOOLS=$BOOTSTRAP_ROOT/llvm-temp-tools | |
TEMP_TOOLS=$BOOTSTRAP_ROOT/llvm-toolchain | |
LLVM_TOOLCHAIN=$BOOTSTRAP_ROOT/llvm-toolchain | |
FETCH=wget #Try BSD FTP if wget doesn't exist. | |
NUM_JOBS=4 | |
#export PATH=$TEMP_TOOLS/bin:$PATH | |
export LD_LIBRARY_PATH=$TEMP_TOOLS/lib:$LD_LIBRARY_PATH | |
get_phase() { | |
PHASE=`cat llvm_phase` | |
} | |
put_phase() { | |
echo "$1" > llvm_phase | |
} | |
get_gcc() { | |
$FETCH ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.3/gcc-4.8.3.tar.bz2 | |
tar -xjf gcc-4.8.3.tar.bz2 | |
rm gcc-4.8.3.tar.bz2 | |
cd gcc-4.8.3 | |
./contrib/download_prerequisites | |
cd $BOOTSTRAP_ROOT | |
mkdir build-gcc-for-llvm | |
} | |
build_gcc() { | |
cd build-gcc-for-llvm | |
../gcc-4.8.3/configure --prefix=$TEMP_TOOLS --enable-languages=c,c++ | |
make -j$NUM_JOBS | |
make install | |
cd $BOOTSTRAP_ROOT | |
} | |
get_cmake() { | |
$FETCH http://www.cmake.org/files/v3.1/cmake-3.1.0.tar.gz | |
tar -xzf cmake-3.1.0.tar.gz | |
rm cmake-3.1.0.tar.gz | |
cd $BOOTSTRAP_ROOT | |
} | |
build_cmake() { | |
cd cmake-3.1.0 | |
./bootstrap --prefix=$TEMP_TOOLS | |
make -j$NUM_JOBS | |
make install | |
cd $BOOTSTRAP_ROOT | |
} | |
get_llvm() { | |
git clone http://llvm.org/git/llvm | |
mkdir build-llvm | |
} | |
get_clang() { | |
cd llvm/tools | |
git clone http://llvm.org/git/clang | |
cd $BOOTSTRAP_ROOT | |
} | |
build_llvm() { | |
cd build-llvm | |
CC=$TEMP_TOOLS/bin/gcc CXX=$TEMP_TOOLS/bin/g++ \ | |
$TEMP_TOOLS/bin/cmake \ | |
-DCMAKE_CXX_LINK_FLAGS="-Wl,-rpath,$TEMP_TOOLS/lib -L$TEMP_TOOLS/lib" \ | |
-DCMAKE_INSTALL_PREFIX=$TEMP_TOOLS ../llvm | |
make -j$NUM_JOBS | |
make install | |
cd $BOOTSTRAP_ROOT | |
} | |
get_rust() { | |
git clone https://github.com/rust-lang/rust | |
mkdir build-rust-external-llvm | |
} | |
build_rust() { | |
cd build-rust-external-llvm | |
CC=$TEMP_TOOLS/bin/gcc CXX=$TEMP_TOOLS/bin/g++ \ | |
CPPFLAGS="-I$TEMP_TOOLS/include" LDFLAGS="-Wl,-rpath,$TEMP_TOOLS/lib -L$TEMP_TOOLS/lib" \ | |
./configure --prefix=$TEMP_TOOLS --llvm-root=$TEMP_TOOLS | |
RUSTFLAGS="-L$TEMP_TOOLS/lib" make -j$NUM_JOBS | |
make install | |
cd $BOOTSTRAP_ROOT | |
} | |
cd $BOOTSTRAP_ROOT | |
if [ ! -f llvm_phase ]; then | |
PHASE=0 | |
else | |
get_phase | |
fi | |
while [ $PHASE -lt 8 ]; do | |
case $PHASE in | |
0) | |
get_gcc | |
put_phase 1 | |
;; | |
1) | |
build_gcc | |
put_phase 2 | |
;; | |
2) | |
get_cmake | |
put_phase 3 | |
;; | |
3) | |
build_cmake | |
put_phase 4 | |
;; | |
4) | |
get_llvm | |
get_clang | |
put_phase 5 | |
;; | |
5) | |
build_llvm | |
put_phase 6 | |
;; | |
6) | |
get_rust | |
put_phase 7 | |
;; | |
7) | |
build_rust | |
put_phase 8 | |
;; | |
esac | |
get_phase | |
done | |
cd $BOOTSTRAP_ROOT | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment