view native-compiler.sh @ 1477:431d5b4ee537

Switch from busybox defconfig to baseconfig-busybox selecting just what we need, with a config variable to use defconfig instead if you really want that. Busybox defconfig doesn't build on Ubuntu 11.10 because of an app that didn't exist until recently breaking. Busybox keeps ininitely adding more and more stuff (with the Katamari Damacy theme playing), and it becomes more of a portability issue keeping it all working. Plus, most if it should not be in busybox anyway. I've revived my toybox project, and would eventually like to be able to use that here anyway, and a specific set of functionality is easier to replace than a moving target. This is an experimentally determined defconfig good enough to build aboriginal and linux from scratch, plus things like vi and shell history that I obviously missed. I'll probably add more stuff later. If I still want to do static defconfig busybox binaries for each target, I can do them as native builds via hdc.
author Rob Landley <rob@landley.net>
date Tue, 27 Dec 2011 08:58:16 -0600
parents b74d36876c0a
children 35b8949e9d9c
line wrap: on
line source

#!/bin/bash

# Build a compiler for a given target, using one or more existing simple
# cross compilers.

# This can be used to build a native compiler for an aribitrary target, or to
# build a more portable and capable cross compiler for an arbitrary host.

# The new compiler is built --with-shared, with thread support, has uClibc++
# installed, and is linked against uClibc (see BUILD_STATIC in config).

source sources/include.sh && load_target "$1" || exit 1
check_for_base_arch || exit 0

check_prerequisite "${ARCH}-cc"

[ -z "$HOST_ARCH" ] && HOST_ARCH="$ARCH" || check_prerequisite "${HOST_ARCH}-cc"

mkdir -p "$STAGE_DIR/bin" || dienow

# Build C Library

build_section linux-headers
build_section uClibc

# Build binutils, gcc, and ccwrap

build_section binutils
build_section gcc
build_section ccwrap

# Tell future packages to link against the libraries in the new compiler,
# rather than the ones in the simple compiler.

export "$(echo $ARCH | sed 's/-/_/g')"_CCWRAP_TOPDIR="$STAGE_DIR"

# Add C++ standard library

[ -z "$NO_CPLUSPLUS" ] && build_section uClibc++

# For a native compiler, build make, bash, and distcc.  (Yes, this is an old
# version of Bash.  It's intentional.)

if [ -z "$TOOLCHAIN_PREFIX" ]
then
  build_section make
  build_section bash
  build_section distcc
fi

# Delete some unneeded files

[ -z "$SKIP_STRIP" ] &&
  rm -rf "$STAGE_DIR"/{info,man,libexec/gcc/*/*/install-tools}

create_stage_tarball