Skip to content
Snippets Groups Projects
recipe.sh 2.06 KiB
GIT=https://github.com/redox-os/rust.git
BRANCH=compile-redox-stage-0
DEPENDS="gcc cargo"

LLVM_PREFIX="$PWD/build/llvm-root"
SYSROOT="/usr/$HOST"
unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP


LLVM_CMAKE_ARGS=(-Wno-dev -DCMAKE_CROSSCOMPILING=True -DCMAKE_INSTALL_PREFIX="$LLVM_PREFIX" -DLLVM_DEFAULT_TARGET_TRIPLE=$HOST -DLLVM_TARGET_ARCH=$ARCH -DLLVM_TARGETS_TO_BUILD=X86 -DCMAKE_SYSTEM_NAME=Generic -DPYTHON_EXECUTABLE=/usr/bin/python2 -DUNIX=1 -DLLVM_ENABLE_THREADS=Off -DLLVM_INCLUDE_TESTS=OFF -target=$HOST -DLLVM_TABLEGEN=/usr/bin/llvm-tblgen -I"$SYSROOT/include" -DCMAKE_CXX_FLAGS='--std=gnu++11' -DLLVM_TOOL_LTO_BUILD=Off -DLLVM_TOOL_LLVM_PROFDATA_BUILD=Off -DLLVM_TOOL_LLI_BUILD=Off -DLLVM_TOOL_RDOBJ_BUILD=Off -DLLVM_TOOL_LLVM_COV_BUILD=Off -DLLVM_TOOL_LLVM_XRAY_BUILD=Off -DLLVM_TOOL_LLVM_LTO2_BUILD=Off -DLLVM_TOOL_LLVM_LTO_BUILD=Off -DLLVM_TOOL_LLVM_RTDYLD_BUILD=Off)

function recipe_version {
    printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
    skip=1
}

function recipe_update {
    echo "skipping update"
    skip=1
}

function recipe_build {
    # Download patched LLVM
    if [ -d llvm-redox ]
    then
        git -C llvm-redox pull
    else
        git clone https://github.com/redox-os/llvm.git -b redox --depth 1 llvm-redox
    fi

    # Build LLVM
    rm -rf "$LLVM_PREFIX"
    mkdir -p "$LLVM_PREFIX"
    rm -rf llvm-redox/build
    mkdir -p llvm-redox/build
    pushd llvm-redox/build
        CC=$HOST-gcc CXX=$HOST-g++ cmake "${LLVM_CMAKE_ARGS[@]}" ..
        make -j$(nproc)
        make install
    popd

    cp ../{config.toml,llvm-config} ./
    python x.py build
    skip=1
}

function recipe_test {
    echo "skipping test"
    skip=1
}

function recipe_clean {
    make clean
    skip=1
}

function recipe_stage {
    binpath="$1/bin"
    libpath="$1/lib/rustlib/${TARGET}/lib"
    mkdir -p "$binpath" "$libpath"
    cp -fv "build/${TARGET}/stage2/bin/rustc" "$binpath"
    ${HOST}-strip "$binpath/rustc"
    cp -fv $(find build/${TARGET}/stage2/lib/rustlib/${TARGET}/lib/ -type f | grep -v librustc) "$libpath"
    skip=1
}