From c88984c5cfc09f5fd2021f849b1150b0bd3177d8 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott <ian@iandouglasscott.com> Date: Sat, 3 Jun 2017 20:12:48 -0700 Subject: [PATCH] Recipes for gcc, binutils, newlib --- cook.sh | 7 +++- recipes/gcc/recipe.sh | 60 ++++++++++++++++++++++++++++++++++ recipes/gnu-binutils/recipe.sh | 50 ++++++++++++++++++++++++++++ recipes/newlib/recipe.sh | 59 +++++++++++++++++++++++++++++++++ 4 files changed, 175 insertions(+), 1 deletion(-) create mode 100644 recipes/gcc/recipe.sh create mode 100644 recipes/gnu-binutils/recipe.sh create mode 100644 recipes/newlib/recipe.sh diff --git a/cook.sh b/cook.sh index 7de389fb2..713296153 100755 --- a/cook.sh +++ b/cook.sh @@ -62,7 +62,12 @@ function op { then if [ ! -d source ] then - git clone --recursive "$GIT" source + if [ -n "$BRANCH" ] + then + git clone --recursive "$GIT" -b "$BRANCH" source + else + git clone --recursive "$GIT" source + fi fi pushd source > /dev/null diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh new file mode 100644 index 000000000..7554b5cd9 --- /dev/null +++ b/recipes/gcc/recipe.sh @@ -0,0 +1,60 @@ +GIT=https://github.com/redox-os/gcc.git +BRANCH=redox + +HOST=x86_64-elf-redox +export AR="${HOST}-ar" +export AS="${HOST}-as" +export CC="${HOST}-gcc" +export CXX="${HOST}-g++" +export LD="${HOST}-ld" +export NM="${HOST}-nm" +export OBJCOPY="${HOST}-objcopy" +export OBJDUMP="${HOST}-objdump" +export RANLIB="${HOST}-ranlib" +export READELF="${HOST}-readelf" +export STRIP="${HOST}-strip" + +function recipe_version { + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + return 1 +} + +function recipe_update { + echo "skipping update" + return 1 +} + +function recipe_build { + ./contrib/download_prerequisites + cp config.sub gmp/config.sub + cp config.sub isl/config.sub + cp config.sub mpfr/config.sub + cp -f config.sub mpc/config.sub + pushd libstdc++-v3 + autoconf2.64 + popd + + mkdir build + cd build + ../configure --host=${HOST} --target=${HOST} --prefix=/ --enable-static --disable-shared --disable-dlopen --disable-nls --enable-languages=c --without-headers + make all-gcc all-target-libgcc + return 1 +} + +function recipe_test { + echo "skipping test" + return 1 +} + +function recipe_clean { + cd build + make clean + return 1 +} + +function recipe_stage { + dest="$(realpath $1)" + cd build + make DESTDIR="$dest" install-gcc install-target-libgcc + return 1 +} diff --git a/recipes/gnu-binutils/recipe.sh b/recipes/gnu-binutils/recipe.sh new file mode 100644 index 000000000..51040bb82 --- /dev/null +++ b/recipes/gnu-binutils/recipe.sh @@ -0,0 +1,50 @@ +GIT=https://github.com/redox-os/binutils-gdb.git + +HOST=x86_64-elf-redox +export AR="${HOST}-ar" +export AS="${HOST}-as" +export CC="${HOST}-gcc" +export CXX="${HOST}-g++" +export LD="${HOST}-ld" +export NM="${HOST}-nm" +export OBJCOPY="${HOST}-objcopy" +export OBJDUMP="${HOST}-objdump" +export RANLIB="${HOST}-ranlib" +export READELF="${HOST}-readelf" +export STRIP="${HOST}-strip" + +function recipe_version { + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + return 1 +} + +function recipe_update { + echo "skipping update" + return 1 +} + +function recipe_build { + mkdir build + cd build + ../configure --host=${HOST} --target=${HOST} --prefix=/ --with-sysroot=/usr/x86_64-elf-redox --disable-gdb --disable-nls --disable-werror + make + return 1 +} + +function recipe_test { + echo "skipping test" + return 1 +} + +function recipe_clean { + cd build + make clean + return 1 +} + +function recipe_stage { + dest="$(realpath $1)" + cd build + make DESTDIR="$dest" install + return 1 +} diff --git a/recipes/newlib/recipe.sh b/recipes/newlib/recipe.sh new file mode 100644 index 000000000..b2aef6c52 --- /dev/null +++ b/recipes/newlib/recipe.sh @@ -0,0 +1,59 @@ +GIT=https://github.com/redox-os/newlib.git +BRANCH=redox + +CC= + +HOST=x86_64-elf-redox + +function recipe_version { + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + return 1 +} + +function recipe_update { + echo "skipping update" + return 1 +} + +function recipe_build { + pushd newlib/libc/sys + aclocal-1.11 -I ../.. + autoconf + automake-1.11 --cygnus Makefile + popd + + pushd newlib/libc/sys/redox + aclocal-1.11 -I ../../.. + autoconf + automake-1.11 --cygnus Makefile + popd + + mkdir build + cd build + + ../configure --target="${HOST}" --prefix=/ + make + + return 1 +} + +function recipe_test { + echo "skipping test" + return 1 +} + +function recipe_clean { + cd build + make clean + return 1 +} + +function recipe_stage { + dest="$(realpath $1)" + cd build + make DESTDIR="$dest" install + cd "$dest" + mv x86_64-elf-redox/* ./ + rmdir x86_64-elf-redox + return 1 +} -- GitLab