From e97e76da7b72afcd1025e445157e54cdd62e54af Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 6 Oct 2020 20:06:19 -0400 Subject: [PATCH] add cross compiler build script and configure script --- .gitignore | 6 ++++ rscons | 21 +++++++++++++ x86_64-cross/Rsconscript | 11 +++++++ x86_64-cross/build.sh | 64 ++++++++++++++++++++++++++++++++++++++++ x86_64-cross/configure | 2 ++ 5 files changed, 104 insertions(+) create mode 100755 rscons create mode 100644 x86_64-cross/Rsconscript create mode 100755 x86_64-cross/build.sh create mode 100755 x86_64-cross/configure diff --git a/.gitignore b/.gitignore index 4524879..db4a228 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,9 @@ *.lst *.map *.bin +/.rscons* +/x86_64-cross/.rscons* +/x86_64-cross/build*/ +/x86_64-cross/*.xz +/x86_64-cross/binutils-*/ +/x86_64-cross/gcc-*/ diff --git a/rscons b/rscons new file mode 100755 index 0000000..cdc09d6 --- /dev/null +++ b/rscons @@ -0,0 +1,21 @@ +#!/usr/bin/env ruby +script = File.join(File.dirname(__FILE__), ".rscons-2.1.0-967afecbb5d879b13cd42f3785ed037b.rb") +unless File.exists?(script) + if File.read(__FILE__, mode: "rb") =~ /^#==>(.*)/ + require "zlib" + require "base64" + encoded_compressed = $1 + unescaped_compressed = Base64.decode64(encoded_compressed) + inflated = Zlib::Inflate.inflate(unescaped_compressed) + File.open(script, "wb") do |fh| + fh.write(inflated) + end + else + raise "Could not decompress." + end +end +load script +if __FILE__ == $0 + Rscons::Cli.run(ARGV) +end +#==>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 diff --git a/x86_64-cross/Rsconscript b/x86_64-cross/Rsconscript new file mode 100644 index 0000000..704b960 --- /dev/null +++ b/x86_64-cross/Rsconscript @@ -0,0 +1,11 @@ +configure do + check_c_compiler "gcc" + check_program "make" + check_program "bison" + check_program "flex" + check_program "texi2any" + check_program "wget" + check_lib "gmp" + check_lib "mpc" + check_lib "mpfr" +end diff --git a/x86_64-cross/build.sh b/x86_64-cross/build.sh new file mode 100755 index 0000000..df7ff80 --- /dev/null +++ b/x86_64-cross/build.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +BINUTILS_VERSION="2.35" +BINUTILS_CHECKSUM="1b11659fb49e20e18db460d44485f09442c8c56d5df165de9461eb09c8302f85" +GCC_VERSION="10.2.0" +GCC_CHECKSUM="b8dd4368bb9c7f0b98188317ee0254dd8cc99d1e3a18d0ff146c855fe16c1d8c" + +if [ ! -e binutils-${BINUTILS_VERSION}.tar.xz ]; then + wget -O binutils-${BINUTILS_VERSION}.tar.xz https://ftp.gnu.org/gnu/binutils/binutils-${BINUTILS_VERSION}.tar.xz +fi + +if [[ ! `sha256sum binutils-${BINUTILS_VERSION}.tar.xz` =~ $BINUTILS_CHECKSUM ]]; then + echo "Invalid binutils-${BINUTILS_VERSION}.tar.xz checksum" + exit +fi + +if [ ! -d binutils-${BINUTILS_VERSION} ]; then + tar xJf binutils-${BINUTILS_VERSION}.tar.xz +fi + +if [ ! -e gcc-${GCC_VERSION}.tar.xz ]; then + wget -O gcc-${GCC_VERSION}.tar.xz https://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.xz +fi + +if [[ ! `sha256sum gcc-${GCC_VERSION}.tar.xz` =~ $GCC_CHECKSUM ]]; then + echo "Invalid gcc-${GCC_VERSION}.tar.xz checksum" + exit +fi + +if [ ! -d gcc-${GCC_VERSION} ]; then + tar xJf gcc-${GCC_VERSION}.tar.xz +fi + +export PREFIX="$HOME/.local" +export TARGET="x86_64-elf" +export PATH="$PREFIX/bin:$PATH" + +function build_binutils() +{ + rm -rf build-binutils + mkdir -p build-binutils + ( + cd build-binutils + ../binutils-${BINUTILS_VERSION}/configure --target="$TARGET" --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror && \ + make && \ + make install + ) +} + +function build_gcc() +{ + rm -rf build-gcc + mkdir -p build-gcc + ( + cd build-gcc + ../gcc-${GCC_VERSION}/configure --target="$TARGET" --prefix="$PREFIX" --disable-nls --enable-languages=c,c++ --without-headers && \ + make all-gcc && \ + make all-target-libgcc && \ + make install-gcc && \ + make install-target-libgcc + ) +} + +build_binutils && build_gcc diff --git a/x86_64-cross/configure b/x86_64-cross/configure new file mode 100755 index 0000000..dce1c6b --- /dev/null +++ b/x86_64-cross/configure @@ -0,0 +1,2 @@ +#!/bin/sh +../rscons configure