32 lines
1.2 KiB
Bash
Executable File
32 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
THIS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
INSTALL_DIR=/opt/occlum/toolchains/rust
|
|
|
|
mkdir -p ${INSTALL_DIR}/bin
|
|
|
|
rustup target add x86_64-unknown-linux-musl
|
|
|
|
# Generate the wrapper for Cargo
|
|
# Use -crt-static to dynamically link the application to musl libc library.
|
|
# Refer to https://github.com/rust-lang/rfcs/blob/master/text/1721-crt-static.md
|
|
# for more information about crt-static
|
|
cat > ${INSTALL_DIR}/bin/occlum-cargo <<EOF
|
|
#!/bin/bash
|
|
env CC_x86_64_unknown_linux_musl=x86_64-linux-musl-gcc \
|
|
CCFLAGS_x86_64_unknown_linux_musl="-fPIC -pie -Wl,-rpath,/opt/occlum/toolchains/gcc/x86_64-linux-musl/lib" \
|
|
CXX_x86_64_unknown_linux_musl=x86_64-linux-musl-g++ \
|
|
CXXFLAGS_x86_64_unknown_linux_musl="-fPIC -pie -Wl,-rpath,/opt/occlum/toolchains/gcc/x86_64-linux-musl/lib" \
|
|
RUSTFLAGS="-C target-feature=-crt-static -C linker=occlum-gcc" \
|
|
CARGO_BUILD_TARGET=x86_64-unknown-linux-musl \
|
|
cargo "\$@"
|
|
EOF
|
|
|
|
# Generate the wrapper for rustc
|
|
cat > ${INSTALL_DIR}/bin/occlum-rustc <<EOF
|
|
#!/bin/bash
|
|
rustc -C linker=occlum-gcc -C target-feature=-crt-static "\$@" --target=x86_64-unknown-linux-musl
|
|
EOF
|
|
|
|
chmod +x ${INSTALL_DIR}/bin/occlum-cargo
|
|
chmod +x ${INSTALL_DIR}/bin/occlum-rustc
|