Skip to content

Instantly share code, notes, and snippets.

@logicalparadox
Forked from crabtw/lib.sh
Created October 15, 2013 02:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save logicalparadox/6985601 to your computer and use it in GitHub Desktop.
Save logicalparadox/6985601 to your computer and use it in GitHub Desktop.
HOST=x86_64-unknown-linux-gnu
#TARGET=mips-unknown-linux-gnu
#CROSS_TOOL=$HOME/tmp/mips-2013.05/bin
#CXX=mips-linux-gnu-g++
#CXXFLAGS="-shared -fPIC -mips32r2 -msoft-float -mabi=32"
#LLCFLAGS="-march=mips -mcpu=mips32r2 -soft-float -mattr=+mips32r2,+o32 -relocation-model=pic -disable-fp-elim -segmented-stacks"
TARGET=arm-unknown-linux-gnueabihf
CROSS_TOOL=$HOME/tmp/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
CXX=arm-linux-gnueabihf-g++
CXXFLAGS="-shared -fPIC"
LLCFLAGS="-march=arm -mcpu=arm1176jzf-s -float-abi=hard -relocation-model=pic -disable-fp-elim -segmented-stacks -arm-enable-ehabi -arm-enable-ehabi-descriptors"
RUST_SRC=$HOME/src/rust-git
RUST_BUILD=$RUST_SRC/b
RUST_LIB=$RUST_BUILD/$HOST/stage2/lib/rustc
LLVM_TOOL=$RUST_BUILD/llvm/$HOST/Release+Asserts/bin
export PATH=$RUST_BUILD/$HOST/stage2/bin:$CROSS_TOOL:$LLVM_TOOL:$PATH
rustc --target=$TARGET --cfg stage2 --emit-llvm $RUST_SRC/src/libstd/std.rs -o $RUST_BUILD/libstd.bc
llc $LLCFLAGS $RUST_BUILD/libstd.bc -o $RUST_BUILD/libstd.s
$CXX $CXXFLAGS $RUST_BUILD/libstd.s -o $RUST_BUILD/libstd.so -L$RUST_BUILD -lrustrt -pthread -ldl -lrt -lmorestack
yes|cp $RUST_BUILD/libstd.so $RUST_LIB/$TARGET/lib/`find $RUST_LIB/$HOST/lib -name libstd-*.so -exec basename {} \;`
rustc --target=$TARGET --cfg stage2 --emit-llvm $RUST_SRC/src/libextra/extra.rs -o $RUST_BUILD/libextra.bc
llc $LLCFLAGS $RUST_BUILD/libextra.bc -o $RUST_BUILD/libextra.s
$CXX $CXXFLAGS $RUST_BUILD/libextra.s -o $RUST_BUILD/libextra.so -L$RUST_BUILD -lstd -lmorestack
yes|cp $RUST_BUILD/libextra.so $RUST_LIB/$TARGET/lib/`find $RUST_LIB/$HOST/lib -name libextra-*.so -exec basename {} \;`
HOST=x86_64-unknown-linux-gnu
#TARGET=mips-unknown-linux-gnu
#CROSS_TOOL=$HOME/tmp/mips-2013.05/bin
#CXX=mips-linux-gnu-g++
#AR=mips-linux-gnu-ar
#CXXFLAGS="-c -fPIC -mips32r2 -msoft-float -mabi=32"
TARGET=arm-unknown-linux-gnueabihf
CROSS_TOOL=$HOME/tmp/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
CXX=arm-linux-gnueabihf-g++
AR=arm-linux-gnueabihf-ar
CXXFLAGS="-c -fPIC"
ARCH=`echo $TARGET|cut -d - -f 1`
RUST_SRC=$HOME/src/rust-git
RUST_BUILD=$RUST_SRC/b
export PATH=$RUST_BUILD/$HOST/stage2/bin:$CROSS_TOOL:$PATH
RT_SRC_ARCH=$RUST_SRC/src/rt/arch/$ARCH
RT_BUILD=$RUST_BUILD/rt/$TARGET/stage2
RT_BUILD_ARCH=$RT_BUILD/arch/$ARCH
$CXX $CXXFLAGS $RT_SRC_ARCH/ccall.S -o $RT_BUILD_ARCH/ccall.o
$CXX $CXXFLAGS $RT_SRC_ARCH/_context.S -o $RT_BUILD_ARCH/_context.o
$CXX $CXXFLAGS $RT_SRC_ARCH/record_sp.S -o $RT_BUILD_ARCH/record_sp.o
$CXX $CXXFLAGS $RT_SRC_ARCH/morestack.S -o $RT_BUILD_ARCH/morestack.o
$AR rcs $RUST_BUILD/libmorestack.a $RT_BUILD_ARCH/morestack.o
make -C $RUST_BUILD `echo $RT_BUILD|sed "s,$RUST_BUILD/,,"`/librustrt.so VERBOSE=1 -j4
yes|cp $RT_BUILD/librustrt.so $RUST_BUILD
HOST=x86_64-unknown-linux-gnu
#TARGET=mips-unknown-linux-gnu
#CROSS_TOOL=$HOME/tmp/mips-2013.05/bin
#CXX=mips-linux-gnu-g++
#CXXFLAGS="-fPIC -mips32r2 -msoft-float -mabi=32"
#LLCFLAGS="-march=mips -mcpu=mips32r2 -soft-float -mattr=+mips32r2,+o32 -relocation-model=pic -disable-fp-elim -segmented-stacks"
TARGET=arm-unknown-linux-gnueabihf
CROSS_TOOL=$HOME/tmp/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
CXX=arm-linux-gnueabihf-g++
CXXFLAGS="-fPIC"
LLCFLAGS="-march=arm -mcpu=arm1176jzf-s -float-abi=hard -relocation-model=pic -disable-fp-elim -segmented-stacks -arm-enable-ehabi -arm-enable-ehabi-descriptors"
RUST_SRC=$HOME/src/rust-git
RUST_BUILD=$RUST_SRC/b
LLVM_TOOL=$RUST_BUILD/llvm/$HOST/Release+Asserts/bin
ROOTFS=/mnt/rpi
CP="sudo cp"
export PATH=$RUST_BUILD/$HOST/stage2/bin:$CROSS_TOOL:$LLVM_TOOL:$PATH
#sh rt.sh
#sh lib.sh
#yes|$CP $RUST_BUILD/librustrt.so $RUST_BUILD/libstd.so $RUST_BUILD/libextra.so $ROOTFS/usr/lib/
TEST_SRC=$RUST_BUILD/test.rs
#TEST_SRC="--cfg stage2 --test $RUST_SRC/src/libstd/std.rs"
#TEST_SRC="--cfg stage2 --test $RUST_SRC/src/libextra/extra.rs"
rustc --target=$TARGET --emit-llvm $TEST_SRC -o $RUST_BUILD/test.bc
llc $LLCFLAGS $RUST_BUILD/test.bc -o $RUST_BUILD/test.s
$CXX $CXXFLAGS $RUST_BUILD/test.s -L$RUST_BUILD -lextra -lstd -lrustrt -lpthread -lmorestack -lrt -ldl
yes|$CP $RUST_BUILD/a.out $ROOTFS/root/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment