URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc
- from Rev 818 to Rev 819
- ↔ Reverse comparison
Rev 818 → Rev 819
/trunk/gnu-stable/bld-all.sh
0,0 → 1,980
#!/bin/bash |
|
# Copyright (C) 2009, 2010 Embecosm Limited |
# Copyright (C) 2010 ORSoC AB |
|
# Contributor Joern Rennecke <joern.rennecke@embecosm.com> |
# Contributor Jeremy Bennett <jeremy.bennett@embecosm.com> |
# Contributor Julius Baxter <julius.baxter@orsoc.se> |
|
# This file is a script to build key elements of the OpenRISC tool chain |
|
# This program is free software; you can redistribute it and/or modify it |
# under the terms of the GNU General Public License as published by the Free |
# Software Foundation; either version 3 of the License, or (at your option) |
# any later version. |
|
# This program is distributed in the hope that it will be useful, but WITHOUT |
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
# more details. |
|
# You should have received a copy of the GNU General Public License along |
# with this program. If not, see <http://www.gnu.org/licenses/>. |
|
# ------------------------------------------------------------------------------ |
# This script builds two GNU C/C++ tool chains: |
|
# 1. With target or32-elf (fully or32-unknown-elf-newlib) for use on bare |
# metal targets |
|
# 2. With target or32-linux (fully or32-unknown-linux-uclibc) for use with |
# OpenRISC linux. |
|
# In both cases the binutils, gcc and C/C++ libraries are built using a |
# unified source directory created by linking the top level directories from |
# binutils and gcc. For the first tool chain, newlib and libgloss are also |
# linked into the unified source directory. |
|
# GDB 7.2 does not have fully compatible binutils directories, so is built |
# separately. |
|
# For the or32-linux tool chain, the system headers are needed to bootstrap |
# the building of libgcc. This is achieved by a 2 stage process |
|
# 1. Configure, build and install gcc for C only for or32-linux using the host |
# system's headers, installing into a temporary prefix. |
|
# 2. Clean the gcc build directory and reconfigure, build and install gcc for |
# C and C++ using the headers from the temporary prefix. |
|
# Once this is complete, the Linux headers are installed and uClibc can be |
# built. |
|
# The following arguments control how the script runs: |
|
# --force |
# Ensure the unified source directory and build directories are |
# recreated. Only build directories of targets being built are removed. |
|
# --languages <str> |
# Specify the languages to be built (default c,c++). |
|
# --prefix <dir> |
# Specify the install directory (default /opt/or32-new) |
|
# --prefix-tmp <dir> |
# Specify the temporary install directory (default /tmp/or32-tmp-${USER}). |
# Incorporating the user name avoid name clashes with other users |
|
# --unisrc-dir <dir> |
# Specify the unified source directory (default unisrc) |
|
# --build-dir-elf <dir> |
# Specify the build directory for the newlib (or32-elf) tool chain |
# (default bd-elf). |
|
# --build-dir-elf-gdb <dir> |
# Specify the build directory for the newlib (or32-elf) GDB (default |
# bd-elf-gdb). |
|
# --build-dir-linux <dir> |
# Specify the build directory for the uClibc (or32-linux) tool chain |
# (default bd-linux) |
|
# --build-dir-linux-gdb <dir> |
# Specify the build directory for the uClibc (or32-linux) GDB (default |
# bd-linux-gdb) |
|
# --or1ksim-dir <dir> |
# Specify the Or1ksim installation directory. Used by GDB, which links in |
# the Or1ksim simulator (default /opt/or1ksim-new) |
|
# --binutils-dir |
# Source directory for binutils (default binutils-2.20.1) |
|
# --gcc-dir |
# Source directory for gcc (default gcc-4.5.1') |
|
# --newlib-dir |
# Source directory for newlib (default newlib-1.18.0) |
|
# --uclibc-dir |
# Source directory for uClibc (default uclibc-0.9.32) |
|
# --gdb-dir |
# Source directory for gdb (default gdb-7.2) |
|
# --linux-dir |
# Source directory for Linux (default linux-2.6.35) |
|
# --no-or32-elf |
# Don't configure, build and install the newlib (or32-elf) tool chain. |
|
# --no-or32-linux |
# Don't configure, build and install the uClibc (or32-linux) tool chain. |
|
# --nolink |
# Don't build the unified source directory (default is to build it) |
|
# --noconfig |
# Don't run configure. Note that this will break the two stage build of |
# gcc for Linux, so it should only be used if at least one of the uClibc |
# stages is being omitted (default is to configure) |
|
# --nobuild |
# Don't build any tools. Useful just to reinstall stuff (default is to |
# build). |
|
# --check |
# Run DejaGnu tests using the or32-elf tool chain (default do not run). |
|
# --noinstall |
# Don't run install. Beware that this will omit the installation of Linux |
# headers, required for uClibc building and the installation of headers |
# from stage1 of gcc for Linux, required for stage2 of gcc for Linux. So |
# only use if at least one of the uClibc stages is being omitted (default |
# is to install). |
|
# --no-newlib |
# Don't build newlib (default is to build newlib) |
|
# --no-uclibc |
# Don't build uClibc (default is to build uClibc) |
|
# --no-uclibc-stage1 |
# Don't do the stage1 build of gcc for Linux (default is to build stage1). |
|
# --no-uclibc-stage2 |
# Don't do the stage2 build of gcc for Linux (default is to build stage2). |
|
# --make-load <number> |
# Set make load for make to <number> |
|
# --help |
# List these options and exit |
|
# In general global variables track each of these options. In addition the |
# following global variables are used: |
|
# target - the current target (or32-elf or or32-linux). |
|
|
# ------------------------------------------------------------------------------ |
# Set the default values of all parameters |
function set_defaults { |
# Public params |
force_flag="false" |
languages="c,c++" |
prefix="/opt/or32-new" |
prefix_tmp="/tmp/or32-tmp-${USER}" |
unisrc_dir="unisrc" |
bd_elf="bd-elf" |
bd_elf_gdb="bd-elf-gdb" |
bd_linux="bd-linux" |
bd_linux_gdb="bd-linux-gdb" |
or1ksim_dir="/opt/or1ksim-new" |
binutils_dir="binutils-2.20.1" |
gcc_dir="gcc-4.5.1" |
newlib_dir="newlib-1.18.0" |
uclibc_dir="uclibc-0.9.32" |
gdb_dir="gdb-7.2" |
linux_dir="linux-2.6.39" |
or32_elf_flag="true" |
or32_linux_flag="true" |
link_flag="true" |
config_flag="true" |
build_flag="true" |
check_flag="false" |
install_flag="true" |
newlib_flag="true" |
uclibc_flag="true" |
uclibc_stage1_flag="true" |
uclibc_stage2_flag="true" |
|
# Consequential params |
newlib_config="--with-newlib" |
newlib_build="all-target-newlib all-target-libgloss" |
newlib_check="check-target-newlib check-target-libgloss" |
newlib_install="install-target-newlib install-target-libgloss" |
|
# Determine how many processes to use in parallel building. If |
# /proc/cpuinfo is avaliable, limit load to launch extra jobs to number of |
# processors + 1. If /proc/cpuinfo is not available, we use a constant of |
# 2. |
make_n_jobs=`(echo processor;cat /proc/cpuinfo 2>/dev/null || \ |
echo processor) | grep -c processor` |
make_load="-j $make_n_jobs -l $make_n_jobs" |
unset make_n_jobs |
|
} # set_defaults () |
|
|
# ------------------------------------------------------------------------------ |
# Parse the arguments |
function parse_args { |
until |
opt=$1 |
case ${opt} |
in |
--force) |
force_flag="true"; |
;; |
|
--languages) |
languages=$2; |
shift; |
;; |
|
--prefix) |
prefix=$2; |
shift; |
;; |
|
--prefix-tmp) |
prefix_tmp=$2; |
shift; |
;; |
|
--unisrc_dir) |
unisrc_dir=$2; |
shift; |
;; |
|
--bd-elf) |
bd_elf=$2; |
shift; |
;; |
|
--bd-elf-gdb) |
bd_elf_gdb=$2; |
shift; |
;; |
|
--bd-linux) |
bd_linux=$2; |
shift; |
;; |
|
--bd-linux-gdb) |
bd_linux_gdb=$2; |
shift; |
;; |
|
--or1ksim-dir) |
or1ksim_dir=$2; |
shift; |
;; |
|
--binutils-dir) |
binutils_dir=$2; |
shift; |
;; |
|
--gcc-dir) |
gcc_dir=$2; |
shift; |
;; |
|
--newlib-dir) |
newlib_dir=$2; |
shift; |
;; |
|
--uclibc-dir) |
uclibc_dir=$2; |
shift; |
;; |
|
--gdb-dir) |
gdb_dir=$2; |
shift; |
;; |
|
--linux-dir) |
linux_dir=$2; |
shift; |
;; |
|
--no-or32-elf) |
or32_elf_flag="false" |
;; |
|
--no-or32-linux) |
or32_linux_flag="false" |
;; |
|
--nolink) |
link_flag="false"; |
;; |
|
--noconfig) |
config_flag="false"; |
;; |
|
--nobuild) |
build_flag="false"; |
;; |
|
--check) |
check_flag="true"; |
;; |
|
--noinstall) |
install_flag="false"; |
;; |
|
--no-newlib) |
newlib_flag="false"; |
|
newlib_config=""; |
newlib_build=""; |
newlib_check=""; |
newlib_install=""; |
;; |
|
--no-uclibc) |
uclibc_flag="false"; |
;; |
|
--no-uclibc-stage1) |
uclibc_stage1_flag="false"; |
;; |
|
--no-uclibc-stage2) |
uclibc_stage2_flag="false"; |
;; |
|
--make-load) |
make_load="-j $2 -l $2"; |
shift; |
;; |
|
--help) |
cat <<EOF; |
--force |
Ensure the unified source directory and build directories are |
recreated. Only build directories of targets being built are removed. |
|
--languages <str> |
Specify the languages to be built (default c,c++). |
|
--prefix <dir> |
Specify the install directory (default /opt/or32-new) |
|
--prefix-tmp <dir> |
Specify the temporary install directory (default /tmp/or32-tmp-${USER}). |
Incorporating the user name avoid name clashes with other users |
|
--unisrc-dir <dir> |
Specify the unified source directory (default unisrc) |
|
--build-dir-elf <dir> |
Specify the build directory for the newlib (or32-elf) tool chain |
(default bd-elf). |
|
--build-dir-elf-gdb <dir> |
Specify the build directory for the newlib (or32-elf) GDB (default |
bd-elf-gdb). |
|
--build-dir-linux <dir> |
Specify the build directory for the uClibc (or32-linux) tool chain |
(default bd-linux) |
|
--build-dir-linux-gdb <dir> |
Specify the build directory for the uClibc (or32-linux) GDB (default |
bd-linux-gdb) |
|
--or1ksim-dir <dir> |
Specify the Or1ksim installation directory. Used by GDB, which links in |
the Or1ksim simulator (default /opt/or1ksim-new) |
|
--binutils-dir |
Source directory for binutils (default binutils-2.20.1) |
|
--gcc-dir |
Source directory for gcc (default gcc-4.5.1') |
|
--newlib-dir |
Source directory for newlib (default newlib-1.18.0) |
|
--uclibc-dir |
Source directory for uClibc (default uclibc-0.9.32) |
|
--gdb-dir |
Source directory for gdb (default gdb-7.2) |
|
--linux-dir |
Source directory for Linux (default linux-2.6.35) |
|
--no-or32-elf |
Don't configure, build and install the newlib (or32-elf) tool chain. |
|
--no-or32-linux |
Don't configure, build and install the uClibc (or32-linux) tool chain. |
|
--nolink |
Don't build the unified source directory (default is to build it) |
|
--noconfig |
Don't run configure. Note that this will break the two stage build of |
gcc for Linux, so it should only be used if at least one of the uClibc |
stages is being omitted (default is to configure) |
|
--nobuild |
Don't build any tools. Useful just to reinstall stuff (default is to |
build). |
|
--check |
Run DejaGnu tests using the or32-elf tool chain (default do not run). |
|
--noinstall |
Don't run install. Beware that this will omit the installation of Linux |
headers, required for uClibc building and the installation of headers |
from stage1 of gcc for Linux, required for stage2 of gcc for Linux. So |
only use if at least one of the uClibc stages is being omitted (default |
is to install). |
|
--no-newlib |
Don't build newlib (default is to build newlib) |
|
--no-uclibc |
Don't build uClibc (default is to build uClibc) |
|
--no-uclibc-stage1 |
Don't do the stage1 build of gcc for Linux (default is to build stage1). |
|
--no-uclibc-stage2 |
Don't do the stage2 build of gcc for Linux (default is to build stage2). |
|
--make-load <num> |
Set make load passed with -j and -l options when calling make. Default |
is set to number of processors as detected via /proc/cpuinfo |
|
--help |
List these options and exit |
EOF |
exit 0 |
;; |
|
--*) |
echo "unrecognized option \"$1\"" |
exit 1 |
;; |
|
*) |
opt="" |
;; |
esac; |
[ -z "${opt}" ] |
do |
shift |
done |
|
} # parse_args |
|
|
# ------------------------------------------------------------------------------ |
# Sanity check argument values |
function sanity_check { |
# Check unified source directory is meaningful if we are linking and that |
# we can create it. |
if [ "true" == "${link_flag}" ] |
then |
# Is it meaninful |
case ${unisrc_dir} |
in |
"") |
unisrc_prefix='.' |
;; |
|
*/*) |
echo "/ in unified source directory not implemented" |
exit 1 |
;; |
|
*..*) |
echo ".. in unified source directory not implemented" |
exit 1 |
;; |
*) |
unisrc_prefix='..' |
;; |
esac |
|
# Check it's a directory, and if it doesn't exist that we can create |
# it. |
if [ -n "${unisrc_dir}" ] |
then |
if [ ! -d ${unisrc_dir} ] |
then |
if [ -e ${unisrc_dir} ] |
then |
echo "${unisrc_dir} is not a directory"; |
exit 1 |
fi |
|
mkdir ${unisrc_dir} |
fi |
fi |
fi |
} # sanity_check |
|
|
# ------------------------------------------------------------------------------ |
# Conditionally build the unified source directory. We know by now it's a |
# viable and extant directory. |
function link_unified { |
if [ "true" == "${link_flag}" ] |
then |
mkdir -p ${unisrc_dir} |
cd ${unisrc_dir} |
ignore_list=". .. CVS .svn" |
component_dirs="${binutils_dir} ${gcc_dir} ${newlib_dir}" |
|
for srcdir in ${component_dirs} |
do |
case `dirname $0` in |
'.') ;; |
*) |
case srcdir in |
/* | [A-Za-z]:[\\/]*) ;; |
*) srcdir="`dirname $0`/${srcdir}" ;; |
esac ;; |
esac |
echo "Component: $srcdir" |
case srcdir |
in |
/* | [A-Za-z]:[\\/]*) |
;; |
|
*) |
srcdir="${unisrc_prefix}/${srcdir}" |
;; |
esac |
|
files=`ls -a ${srcdir}` |
|
for f in ${files} |
do |
found= |
|
for i in ${ignore_list} |
do |
if [ "$f" = "$i" ] |
then |
found=yes |
fi |
done |
|
if [ -z "${found}" ] |
then |
echo "$f ..linked" |
ln -s ${srcdir}/$f . |
fi |
done |
|
ignore_list="${ignore_list} ${files}" |
done |
|
if [ $? != 0 ] |
then |
echo "failed to create ${unisrc_dir}" |
exit 1 |
fi |
|
unset component_dirs |
unset ignore_list |
cd - |
fi |
} # link_unified |
|
|
# ------------------------------------------------------------------------------ |
# Conditionally configure a GNU source directory (could be the unified |
# directory, or GDB) |
|
# @param[in] $1 "true" if we should execute this function |
# @param[in] $2 The prefix to use for installation. |
# @param[in] $3 The build directory to configure in. |
# @param[in] $4 The source directory containing configure (relative to $1) |
# @param[in] $5 The languages to configure for. |
# @param[in] $6, ... Additional configure args. |
function gnu_config { |
cond=$1 |
shift |
|
if [ "true" == ${cond} ] |
then |
this_prefix=$1 |
shift |
top_builddir=$1 |
shift |
top_srcdir=$1 |
shift |
langs=$1 |
shift |
|
echo -n "bld-all.sh: gnu_config ${this_prefix} ${top_builddir} " |
echo "${top_srcdir} ${langs} $*" |
|
verstr="OpenRISC 32-bit toolchain for ${target} (built `date +%Y%m%d`)" |
|
# Add --disable-werror, since binutils will not compile with very |
# latest GCC, due to unset variables. |
mkdir -p ${top_builddir} && \ |
cd ${top_builddir} && \ |
${top_srcdir}/configure --target=${target} \ |
--with-pkgversion="${verstr}" --disable-shared \ |
--with-bugurl=http://bugzilla.opencores.org/ \ |
--with-or1ksim=${or1ksim_dir} --disable-werror \ |
--enable-fast-install=N/A --disable-libssp \ |
--enable-languages=${langs} --prefix=${this_prefix} $* |
|
if [ $? != 0 ] |
then |
echo "configure failed." |
exit 1 |
fi |
|
cd - |
|
unset verstr |
unset langs |
unset top_srcdir |
unset top_builddir |
unset this_prefix |
fi |
|
unset cond |
|
} # gnu_config |
|
|
# ------------------------------------------------------------------------------ |
# Conditionally run make and check the result. |
|
# @param[in] $1 "true" if we should execute this function |
# @param[in] $2 The build directory to make in |
# @param[in] $3, ... The targets to make |
function gnu_make { |
cond=$1 |
shift |
|
if [ "true" == ${cond} ] |
then |
echo "bld-all.sh: gnu_make $*" |
|
cd $1 |
shift |
|
make $make_load $* |
|
if [ $? != 0 ] |
then |
echo "make ($*) failed." |
exit 1 |
fi |
|
cd - |
fi |
|
unset cond |
|
} # gnu_make |
|
|
# ------------------------------------------------------------------------------ |
# Change directory to $1 as seen from $0. |
|
function cd_0rel { |
case "$1" in |
/*) cd "$1" ;; |
*) cd "`dirname $0`/$1" ;; |
esac |
} |
|
# ------------------------------------------------------------------------------ |
# Conditionally configure and install the Linux headers |
|
# @param[in] $1 The prefix to use for installation. |
function install_linux_headers { |
this_prefix=$1 |
|
cd_0rel $linux_dir |
|
if [ "true" == "${config_flag}" ] |
then |
echo "bld-all.sh: Configuring Linux headers" |
|
make ARCH=openrisc defconfig |
|
if [ $? != 0 ]; |
then |
echo "Linux configure failed" |
exit 1 |
fi |
fi |
|
# This is a bit iffy. We do rely on the headers being installed for uClibc |
# to build, so not installing the first time would be a bit dodgy. |
if [ "true" == "${install_flag}" ] |
then |
echo "bld-all.sh: Installing Linux headers" |
|
make INSTALL_HDR_PATH=${this_prefix}/or32-linux headers_install |
|
if [ $? != 0 ]; |
then |
echo "Linux header installation failed" |
exit 1 |
fi |
|
unset this_prefix |
fi |
|
cd - |
|
} # install_linux_headers |
|
|
# ------------------------------------------------------------------------------ |
# Conditionally configure uClibc. Clean before configuring. |
|
# @param[in] $1 The prefix to use for installation. |
function uclibc_config { |
|
if [ "true" == "${config_flag}" ] |
then |
this_prefix=$1 |
echo "bld-all.sh: Configuring uClibc" |
|
cd_0rel ${uclibc_dir} |
|
kheaders="KERNEL_HEADERS=\\\"${this_prefix}\\/or32-linux\\/include\\\"" |
devprefix="DEVEL_PREFIX=\\\"${this_prefix}\\/or32-linux\\\"" |
ccprefix="CROSS_COMPILER_PREFIX=\\\"or32-linux-\\\"" |
|
sed -i extra/Configs/defconfigs/or32 \ |
-e "s|KERNEL_HEADERS.*|${kheaders}|g" \ |
-e "s|DEVEL_PREFIX.*|${devprefix}|g" \ |
-e "s|CROSS_COMPILER_PREFIX.*|${ccprefix}|g" |
|
if [ $? != 0 ]; |
then |
echo "uClibc sed failed" |
exit 1 |
fi |
|
make ARCH=or32 clean |
|
if [ $? != 0 ]; |
then |
echo "uClibc clean failed" |
exit 1 |
fi |
|
make ARCH=or32 defconfig |
|
if [ $? != 0 ]; |
then |
echo "uClibc configure failed" |
exit 1 |
fi |
|
unset this_prefix |
unset ccprefix |
unset devprefix |
unset kheaders |
|
cd - |
fi |
} # uclibc_config |
|
|
# ------------------------------------------------------------------------------ |
# Conditionally build and install uClibc |
function uclibc_build_install { |
cd_0rel ${uclibc_dir} |
|
if [ "true" == "${build_flag}" ] |
then |
echo "bld-all.sh: Building uClibc" |
|
make ARCH=or32 all |
|
if [ $? != 0 ]; |
then |
echo "uClibc build failed" |
exit 1 |
fi |
fi |
|
if [ "true" == "${install_flag}" ] |
then |
echo "bld-all.sh: Installing uClibc" |
|
make ARCH=or32 install |
|
if [ $? != 0 ]; |
then |
echo "uClibc install failed" |
exit 1 |
fi |
fi |
|
cd - |
|
} # uclibc_build_install |
|
|
# ------------------------------------------------------------------------------ |
# Main program |
set_defaults |
parse_args $* |
sanity_check |
|
# --force always blows away the link directory. It only blows away build |
# directories we are actually building (see below). |
if [ "true" == "${force_flag}" ] |
then |
echo "bld-all.sh: removing ${unisrc_dir}" |
rm -rf ${unisrc_dir} |
fi |
|
link_unified |
|
# Build the newlib (or32-elf) tool chain. |
if [ "true" == "${or32_elf_flag}" ] |
then |
target="or32-elf" |
echo "bld-all.sh: or32-elf toolchain" |
|
# --force only applies to build directories we are using! |
if [ "true" == "${force_flag}" ] |
then |
echo "bld-all.sh: removing ${bd_elf} ${bd_elf_gdb}" |
rm -rf ${bd_elf} ${bd_elf_gdb} |
fi |
|
# Configure all |
gnu_config ${config_flag} ${prefix} ${bd_elf} ../${unisrc_dir} \ |
"${languages}" "${newlib_config}" |
# ??? should handle absolute pathnames. |
gnu_config ${config_flag} ${prefix} ${bd_elf_gdb} \ |
../`dirname $0`/${gdb_dir} "${languages}" |
|
# Build all |
gnu_make ${build_flag} ${bd_elf} all-build all-binutils all-gas all-ld |
gnu_make ${build_flag} ${bd_elf} all-gcc |
gnu_make ${build_flag} ${bd_elf} all-target-libgcc all-target-libstdc++-v3 \ |
${newlib_build} |
gnu_make ${build_flag} ${bd_elf_gdb} all-build all-sim all-gdb |
|
# Check all |
gnu_make ${check_flag} ${bd_elf} check-binutils check-gas check-ld \ |
check-gcc check-target-libgcc check-target-libstdc++-v3 ${newlib_check} |
gnu_make ${check_flag} ${bd_elf_gdb} check-sim check-gdb |
|
# Install all |
gnu_make ${install_flag} ${bd_elf} install-binutils install-gas install-ld \ |
install-gcc install-target-libgcc install-target-libstdc++-v3 \ |
${newlib_install} |
gnu_make ${install_flag} ${bd_elf_gdb} install-sim install-gdb |
fi |
|
# Build the uClibc (or32-linux) tool chain |
if [ "true" == "${or32_linux_flag}" ] |
then |
target="or32-linux" |
echo "bld-all.sh: or32-linux toolchain" |
|
# --force only applies to build directories we are using! |
if [ "true" == "${force_flag}" ] |
then |
echo "bld-all.sh: removing ${bd_linux} ${bd_linux_gdb}" |
rm -rf ${bd_linux} ${bd_linux_gdb} |
fi |
|
# Stage 1 binutils/GCC build uses no headers and only C |
# language. This is just to create the libc headers, which we put in the |
# temporary prefix directory. |
if [ "true" == "${uclibc_stage1_flag}" ] |
then |
echo "bld-all.sh: uClibc GCC stage 1" |
|
# Make a clean temporary install directory. |
rm -rf ${prefix_tmp} |
mkdir ${prefix_tmp} |
|
# For header building we use just single threads, or we don't find |
# pthread.h. |
thread_config="--enable-threads=single --disable-tls" |
|
# To create the headers we only use C |
gnu_config ${config_flag} ${prefix_tmp} ${bd_linux} ../${unisrc_dir} \ |
"c" "--without-headers ${thread_config}" |
gnu_make ${build_flag} ${bd_linux} all-build all-binutils all-gas all-ld |
gnu_make ${build_flag} ${bd_linux} all-gcc |
gnu_make ${build_flag} ${bd_linux} all-target-libgcc |
gnu_make ${install_flag} ${bd_linux} install-binutils install-gas \ |
install-ld |
gnu_make ${install_flag} ${bd_linux} install-gcc install-target-libgcc |
|
# Create the headers using our temporary tool chain |
save_path="${PATH}" |
export PATH="${prefix_tmp}/bin:${PATH}" |
install_linux_headers ${prefix_tmp} |
uclibc_config ${prefix_tmp} |
uclibc_build_install |
PATH="${save_path}" |
unset save_path |
fi |
|
# If we are doing both stage 1 and stage 2, then we need to completely |
# clean gcc and target libraries. Just blow the entire directory away. |
if [ "truetrue" == "${uclibc_stage1_flag}${uclibc_stage2_flag}" ] |
then |
echo "bld-all.sh: uClibc GCC inter-stage cleaning" |
rm -rf ${bd_linux}/gcc ${bd_linux}/or32-linux |
fi |
|
# Stage 2 GCC uses the headers installed from stage 1. |
if [ "true" == "${uclibc_stage2_flag}" ] |
then |
echo "bld-all.sh: uClibc GCC stage 2" |
|
# uClibc now supports POSIX threads, but not TLS. uClibc |
# linuxthreads.old is a POSIX98 compliant implementation. |
thread_config="--enable-threads=posix --disable-tls" |
|
gnu_config ${config_flag} ${prefix} ${bd_linux} ../${unisrc_dir} \ |
"${languages}" \ |
"--with-headers=${prefix_tmp}/or32-linux/include ${thread_config}" |
gnu_make ${build_flag} ${bd_linux} all-build all-binutils all-gas all-ld |
gnu_make ${build_flag} ${bd_linux} all-gcc |
gnu_make ${build_flag} ${bd_linux} all-target-libgcc |
gnu_make ${install_flag} ${bd_linux} install-binutils install-gas \ |
install-ld |
gnu_make ${install_flag} ${bd_linux} install-gcc install-target-libgcc |
|
# We need to build uClibc before building the C++ libraries, which in |
# turn needs the Linux headers |
export PATH=${prefix}/bin:${PATH} |
install_linux_headers ${prefix} |
uclibc_config ${prefix} |
uclibc_build_install |
|
# Finish building the C++ library |
gnu_make ${build_flag} ${bd_linux} all-target-libstdc++-v3 |
gnu_make ${install_flag} ${bd_linux} install-target-libstdc++-v3 |
fi |
|
# Configure, build and install GDB (note we need to reconfigure in case |
# only stage1 has been run previously). |
# ??? should handle absolute pathnames. |
gnu_config ${config_flag} ${prefix} ${bd_linux_gdb} \ |
../`dirname $0`/${gdb_dir} "${languages}" |
gnu_make ${build_flag} ${bd_linux_gdb} all-build all-sim all-gdb |
gnu_make ${install_flag} ${bd_linux_gdb} install-sim install-gdb |
fi |
trunk/gnu-stable/bld-all.sh
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: trunk/gnu-old/bld-all.sh
===================================================================
--- trunk/gnu-old/bld-all.sh (revision 818)
+++ trunk/gnu-old/bld-all.sh (nonexistent)
@@ -1,980 +0,0 @@
-#!/bin/bash
-
-# Copyright (C) 2009, 2010 Embecosm Limited
-# Copyright (C) 2010 ORSoC AB
-
-# Contributor Joern Rennecke
-# Contributor Jeremy Bennett
-# Contributor Julius Baxter
-
-# This file is a script to build key elements of the OpenRISC tool chain
-
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the Free
-# Software Foundation; either version 3 of the License, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details.
-
-# You should have received a copy of the GNU General Public License along
-# with this program. If not, see .
-
-# ------------------------------------------------------------------------------
-# This script builds two GNU C/C++ tool chains:
-
-# 1. With target or32-elf (fully or32-unknown-elf-newlib) for use on bare
-# metal targets
-
-# 2. With target or32-linux (fully or32-unknown-linux-uclibc) for use with
-# OpenRISC linux.
-
-# In both cases the binutils, gcc and C/C++ libraries are built using a
-# unified source directory created by linking the top level directories from
-# binutils and gcc. For the first tool chain, newlib and libgloss are also
-# linked into the unified source directory.
-
-# GDB 7.2 does not have fully compatible binutils directories, so is built
-# separately.
-
-# For the or32-linux tool chain, the system headers are needed to bootstrap
-# the building of libgcc. This is achieved by a 2 stage process
-
-# 1. Configure, build and install gcc for C only for or32-linux using the host
-# system's headers, installing into a temporary prefix.
-
-# 2. Clean the gcc build directory and reconfigure, build and install gcc for
-# C and C++ using the headers from the temporary prefix.
-
-# Once this is complete, the Linux headers are installed and uClibc can be
-# built.
-
-# The following arguments control how the script runs:
-
-# --force
-# Ensure the unified source directory and build directories are
-# recreated. Only build directories of targets being built are removed.
-
-# --languages
-# Specify the languages to be built (default c,c++).
-
-# --prefix
-# Specify the install directory (default /opt/or32-new)
-
-# --prefix-tmp
-# Specify the temporary install directory (default /tmp/or32-tmp-${USER}).
-# Incorporating the user name avoid name clashes with other users
-
-# --unisrc-dir
-# Specify the unified source directory (default unisrc)
-
-# --build-dir-elf
-# Specify the build directory for the newlib (or32-elf) tool chain
-# (default bd-elf).
-
-# --build-dir-elf-gdb
-# Specify the build directory for the newlib (or32-elf) GDB (default
-# bd-elf-gdb).
-
-# --build-dir-linux
-# Specify the build directory for the uClibc (or32-linux) tool chain
-# (default bd-linux)
-
-# --build-dir-linux-gdb
-# Specify the build directory for the uClibc (or32-linux) GDB (default
-# bd-linux-gdb)
-
-# --or1ksim-dir
-# Specify the Or1ksim installation directory. Used by GDB, which links in
-# the Or1ksim simulator (default /opt/or1ksim-new)
-
-# --binutils-dir
-# Source directory for binutils (default binutils-2.20.1)
-
-# --gcc-dir
-# Source directory for gcc (default gcc-4.5.1')
-
-# --newlib-dir
-# Source directory for newlib (default newlib-1.18.0)
-
-# --uclibc-dir
-# Source directory for uClibc (default uclibc-0.9.32)
-
-# --gdb-dir
-# Source directory for gdb (default gdb-7.2)
-
-# --linux-dir
-# Source directory for Linux (default linux-2.6.35)
-
-# --no-or32-elf
-# Don't configure, build and install the newlib (or32-elf) tool chain.
-
-# --no-or32-linux
-# Don't configure, build and install the uClibc (or32-linux) tool chain.
-
-# --nolink
-# Don't build the unified source directory (default is to build it)
-
-# --noconfig
-# Don't run configure. Note that this will break the two stage build of
-# gcc for Linux, so it should only be used if at least one of the uClibc
-# stages is being omitted (default is to configure)
-
-# --nobuild
-# Don't build any tools. Useful just to reinstall stuff (default is to
-# build).
-
-# --check
-# Run DejaGnu tests using the or32-elf tool chain (default do not run).
-
-# --noinstall
-# Don't run install. Beware that this will omit the installation of Linux
-# headers, required for uClibc building and the installation of headers
-# from stage1 of gcc for Linux, required for stage2 of gcc for Linux. So
-# only use if at least one of the uClibc stages is being omitted (default
-# is to install).
-
-# --no-newlib
-# Don't build newlib (default is to build newlib)
-
-# --no-uclibc
-# Don't build uClibc (default is to build uClibc)
-
-# --no-uclibc-stage1
-# Don't do the stage1 build of gcc for Linux (default is to build stage1).
-
-# --no-uclibc-stage2
-# Don't do the stage2 build of gcc for Linux (default is to build stage2).
-
-# --make-load
-# Set make load for make to
-
-# --help
-# List these options and exit
-
-# In general global variables track each of these options. In addition the
-# following global variables are used:
-
-# target - the current target (or32-elf or or32-linux).
-
-
-# ------------------------------------------------------------------------------
-# Set the default values of all parameters
-function set_defaults {
- # Public params
- force_flag="false"
- languages="c,c++"
- prefix="/opt/or32-new"
- prefix_tmp="/tmp/or32-tmp-${USER}"
- unisrc_dir="unisrc"
- bd_elf="bd-elf"
- bd_elf_gdb="bd-elf-gdb"
- bd_linux="bd-linux"
- bd_linux_gdb="bd-linux-gdb"
- or1ksim_dir="/opt/or1ksim-new"
- binutils_dir="binutils-2.20.1"
- gcc_dir="gcc-4.5.1"
- newlib_dir="newlib-1.18.0"
- uclibc_dir="uclibc-0.9.32"
- gdb_dir="gdb-7.2"
- linux_dir="linux-2.6.39"
- or32_elf_flag="true"
- or32_linux_flag="true"
- link_flag="true"
- config_flag="true"
- build_flag="true"
- check_flag="false"
- install_flag="true"
- newlib_flag="true"
- uclibc_flag="true"
- uclibc_stage1_flag="true"
- uclibc_stage2_flag="true"
-
- # Consequential params
- newlib_config="--with-newlib"
- newlib_build="all-target-newlib all-target-libgloss"
- newlib_check="check-target-newlib check-target-libgloss"
- newlib_install="install-target-newlib install-target-libgloss"
-
- # Determine how many processes to use in parallel building. If
- # /proc/cpuinfo is avaliable, limit load to launch extra jobs to number of
- # processors + 1. If /proc/cpuinfo is not available, we use a constant of
- # 2.
- make_n_jobs=`(echo processor;cat /proc/cpuinfo 2>/dev/null || \
- echo processor) | grep -c processor`
- make_load="-j $make_n_jobs -l $make_n_jobs"
- unset make_n_jobs
-
-} # set_defaults ()
-
-
-# ------------------------------------------------------------------------------
-# Parse the arguments
-function parse_args {
- until
- opt=$1
- case ${opt}
- in
- --force)
- force_flag="true";
- ;;
-
- --languages)
- languages=$2;
- shift;
- ;;
-
- --prefix)
- prefix=$2;
- shift;
- ;;
-
- --prefix-tmp)
- prefix_tmp=$2;
- shift;
- ;;
-
- --unisrc_dir)
- unisrc_dir=$2;
- shift;
- ;;
-
- --bd-elf)
- bd_elf=$2;
- shift;
- ;;
-
- --bd-elf-gdb)
- bd_elf_gdb=$2;
- shift;
- ;;
-
- --bd-linux)
- bd_linux=$2;
- shift;
- ;;
-
- --bd-linux-gdb)
- bd_linux_gdb=$2;
- shift;
- ;;
-
- --or1ksim-dir)
- or1ksim_dir=$2;
- shift;
- ;;
-
- --binutils-dir)
- binutils_dir=$2;
- shift;
- ;;
-
- --gcc-dir)
- gcc_dir=$2;
- shift;
- ;;
-
- --newlib-dir)
- newlib_dir=$2;
- shift;
- ;;
-
- --uclibc-dir)
- uclibc_dir=$2;
- shift;
- ;;
-
- --gdb-dir)
- gdb_dir=$2;
- shift;
- ;;
-
- --linux-dir)
- linux_dir=$2;
- shift;
- ;;
-
- --no-or32-elf)
- or32_elf_flag="false"
- ;;
-
- --no-or32-linux)
- or32_linux_flag="false"
- ;;
-
- --nolink)
- link_flag="false";
- ;;
-
- --noconfig)
- config_flag="false";
- ;;
-
- --nobuild)
- build_flag="false";
- ;;
-
- --check)
- check_flag="true";
- ;;
-
- --noinstall)
- install_flag="false";
- ;;
-
- --no-newlib)
- newlib_flag="false";
-
- newlib_config="";
- newlib_build="";
- newlib_check="";
- newlib_install="";
- ;;
-
- --no-uclibc)
- uclibc_flag="false";
- ;;
-
- --no-uclibc-stage1)
- uclibc_stage1_flag="false";
- ;;
-
- --no-uclibc-stage2)
- uclibc_stage2_flag="false";
- ;;
-
- --make-load)
- make_load="-j $2 -l $2";
- shift;
- ;;
-
- --help)
- cat <
- Specify the languages to be built (default c,c++).
-
---prefix
- Specify the install directory (default /opt/or32-new)
-
---prefix-tmp
- Specify the temporary install directory (default /tmp/or32-tmp-${USER}).
- Incorporating the user name avoid name clashes with other users
-
---unisrc-dir
- Specify the unified source directory (default unisrc)
-
---build-dir-elf
- Specify the build directory for the newlib (or32-elf) tool chain
- (default bd-elf).
-
---build-dir-elf-gdb
- Specify the build directory for the newlib (or32-elf) GDB (default
- bd-elf-gdb).
-
---build-dir-linux
- Specify the build directory for the uClibc (or32-linux) tool chain
- (default bd-linux)
-
---build-dir-linux-gdb
- Specify the build directory for the uClibc (or32-linux) GDB (default
- bd-linux-gdb)
-
---or1ksim-dir
- Specify the Or1ksim installation directory. Used by GDB, which links in
- the Or1ksim simulator (default /opt/or1ksim-new)
-
---binutils-dir
- Source directory for binutils (default binutils-2.20.1)
-
---gcc-dir
- Source directory for gcc (default gcc-4.5.1')
-
---newlib-dir
- Source directory for newlib (default newlib-1.18.0)
-
---uclibc-dir
- Source directory for uClibc (default uclibc-0.9.32)
-
---gdb-dir
- Source directory for gdb (default gdb-7.2)
-
---linux-dir
- Source directory for Linux (default linux-2.6.35)
-
---no-or32-elf
- Don't configure, build and install the newlib (or32-elf) tool chain.
-
---no-or32-linux
- Don't configure, build and install the uClibc (or32-linux) tool chain.
-
---nolink
- Don't build the unified source directory (default is to build it)
-
---noconfig
- Don't run configure. Note that this will break the two stage build of
- gcc for Linux, so it should only be used if at least one of the uClibc
- stages is being omitted (default is to configure)
-
---nobuild
- Don't build any tools. Useful just to reinstall stuff (default is to
- build).
-
---check
- Run DejaGnu tests using the or32-elf tool chain (default do not run).
-
---noinstall
- Don't run install. Beware that this will omit the installation of Linux
- headers, required for uClibc building and the installation of headers
- from stage1 of gcc for Linux, required for stage2 of gcc for Linux. So
- only use if at least one of the uClibc stages is being omitted (default
- is to install).
-
---no-newlib
- Don't build newlib (default is to build newlib)
-
---no-uclibc
- Don't build uClibc (default is to build uClibc)
-
---no-uclibc-stage1
- Don't do the stage1 build of gcc for Linux (default is to build stage1).
-
---no-uclibc-stage2
- Don't do the stage2 build of gcc for Linux (default is to build stage2).
-
---make-load
- Set make load passed with -j and -l options when calling make. Default
- is set to number of processors as detected via /proc/cpuinfo
-
---help
- List these options and exit
-EOF
- exit 0
- ;;
-
- --*)
- echo "unrecognized option \"$1\""
- exit 1
- ;;
-
- *)
- opt=""
- ;;
- esac;
- [ -z "${opt}" ]
- do
- shift
- done
-
-} # parse_args
-
-
-# ------------------------------------------------------------------------------
-# Sanity check argument values
-function sanity_check {
- # Check unified source directory is meaningful if we are linking and that
- # we can create it.
- if [ "true" == "${link_flag}" ]
- then
- # Is it meaninful
- case ${unisrc_dir}
- in
- "")
- unisrc_prefix='.'
- ;;
-
- */*)
- echo "/ in unified source directory not implemented"
- exit 1
- ;;
-
- *..*)
- echo ".. in unified source directory not implemented"
- exit 1
- ;;
- *)
- unisrc_prefix='..'
- ;;
- esac
-
- # Check it's a directory, and if it doesn't exist that we can create
- # it.
- if [ -n "${unisrc_dir}" ]
- then
- if [ ! -d ${unisrc_dir} ]
- then
- if [ -e ${unisrc_dir} ]
- then
- echo "${unisrc_dir} is not a directory";
- exit 1
- fi
-
- mkdir ${unisrc_dir}
- fi
- fi
- fi
-} # sanity_check
-
-
-# ------------------------------------------------------------------------------
-# Conditionally build the unified source directory. We know by now it's a
-# viable and extant directory.
-function link_unified {
- if [ "true" == "${link_flag}" ]
- then
- mkdir -p ${unisrc_dir}
- cd ${unisrc_dir}
- ignore_list=". .. CVS .svn"
- component_dirs="${binutils_dir} ${gcc_dir} ${newlib_dir}"
-
- for srcdir in ${component_dirs}
- do
- case `dirname $0` in
- '.') ;;
- *)
- case srcdir in
- /* | [A-Za-z]:[\\/]*) ;;
- *) srcdir="`dirname $0`/${srcdir}" ;;
- esac ;;
- esac
- echo "Component: $srcdir"
- case srcdir
- in
- /* | [A-Za-z]:[\\/]*)
- ;;
-
- *)
- srcdir="${unisrc_prefix}/${srcdir}"
- ;;
- esac
-
- files=`ls -a ${srcdir}`
-
- for f in ${files}
- do
- found=
-
- for i in ${ignore_list}
- do
- if [ "$f" = "$i" ]
- then
- found=yes
- fi
- done
-
- if [ -z "${found}" ]
- then
- echo "$f ..linked"
- ln -s ${srcdir}/$f .
- fi
- done
-
- ignore_list="${ignore_list} ${files}"
- done
-
- if [ $? != 0 ]
- then
- echo "failed to create ${unisrc_dir}"
- exit 1
- fi
-
- unset component_dirs
- unset ignore_list
- cd -
- fi
-} # link_unified
-
-
-# ------------------------------------------------------------------------------
-# Conditionally configure a GNU source directory (could be the unified
-# directory, or GDB)
-
-# @param[in] $1 "true" if we should execute this function
-# @param[in] $2 The prefix to use for installation.
-# @param[in] $3 The build directory to configure in.
-# @param[in] $4 The source directory containing configure (relative to $1)
-# @param[in] $5 The languages to configure for.
-# @param[in] $6, ... Additional configure args.
-function gnu_config {
- cond=$1
- shift
-
- if [ "true" == ${cond} ]
- then
- this_prefix=$1
- shift
- top_builddir=$1
- shift
- top_srcdir=$1
- shift
- langs=$1
- shift
-
- echo -n "bld-all.sh: gnu_config ${this_prefix} ${top_builddir} "
- echo "${top_srcdir} ${langs} $*"
-
- verstr="OpenRISC 32-bit toolchain for ${target} (built `date +%Y%m%d`)"
-
- # Add --disable-werror, since binutils will not compile with very
- # latest GCC, due to unset variables.
- mkdir -p ${top_builddir} && \
- cd ${top_builddir} && \
- ${top_srcdir}/configure --target=${target} \
- --with-pkgversion="${verstr}" --disable-shared \
- --with-bugurl=http://bugzilla.opencores.org/ \
- --with-or1ksim=${or1ksim_dir} --disable-werror \
- --enable-fast-install=N/A --disable-libssp \
- --enable-languages=${langs} --prefix=${this_prefix} $*
-
- if [ $? != 0 ]
- then
- echo "configure failed."
- exit 1
- fi
-
- cd -
-
- unset verstr
- unset langs
- unset top_srcdir
- unset top_builddir
- unset this_prefix
- fi
-
- unset cond
-
-} # gnu_config
-
-
-# ------------------------------------------------------------------------------
-# Conditionally run make and check the result.
-
-# @param[in] $1 "true" if we should execute this function
-# @param[in] $2 The build directory to make in
-# @param[in] $3, ... The targets to make
-function gnu_make {
- cond=$1
- shift
-
- if [ "true" == ${cond} ]
- then
- echo "bld-all.sh: gnu_make $*"
-
- cd $1
- shift
-
- make $make_load $*
-
- if [ $? != 0 ]
- then
- echo "make ($*) failed."
- exit 1
- fi
-
- cd -
- fi
-
- unset cond
-
-} # gnu_make
-
-
-# ------------------------------------------------------------------------------
-# Change directory to $1 as seen from $0.
-
-function cd_0rel {
- case "$1" in
- /*) cd "$1" ;;
- *) cd "`dirname $0`/$1" ;;
- esac
-}
-
-# ------------------------------------------------------------------------------
-# Conditionally configure and install the Linux headers
-
-# @param[in] $1 The prefix to use for installation.
-function install_linux_headers {
- this_prefix=$1
-
- cd_0rel $linux_dir
-
- if [ "true" == "${config_flag}" ]
- then
- echo "bld-all.sh: Configuring Linux headers"
-
- make ARCH=openrisc defconfig
-
- if [ $? != 0 ];
- then
- echo "Linux configure failed"
- exit 1
- fi
- fi
-
- # This is a bit iffy. We do rely on the headers being installed for uClibc
- # to build, so not installing the first time would be a bit dodgy.
- if [ "true" == "${install_flag}" ]
- then
- echo "bld-all.sh: Installing Linux headers"
-
- make INSTALL_HDR_PATH=${this_prefix}/or32-linux headers_install
-
- if [ $? != 0 ];
- then
- echo "Linux header installation failed"
- exit 1
- fi
-
- unset this_prefix
- fi
-
- cd -
-
-} # install_linux_headers
-
-
-# ------------------------------------------------------------------------------
-# Conditionally configure uClibc. Clean before configuring.
-
-# @param[in] $1 The prefix to use for installation.
-function uclibc_config {
-
- if [ "true" == "${config_flag}" ]
- then
- this_prefix=$1
- echo "bld-all.sh: Configuring uClibc"
-
- cd_0rel ${uclibc_dir}
-
- kheaders="KERNEL_HEADERS=\\\"${this_prefix}\\/or32-linux\\/include\\\""
- devprefix="DEVEL_PREFIX=\\\"${this_prefix}\\/or32-linux\\\""
- ccprefix="CROSS_COMPILER_PREFIX=\\\"or32-linux-\\\""
-
- sed -i extra/Configs/defconfigs/or32 \
- -e "s|KERNEL_HEADERS.*|${kheaders}|g" \
- -e "s|DEVEL_PREFIX.*|${devprefix}|g" \
- -e "s|CROSS_COMPILER_PREFIX.*|${ccprefix}|g"
-
- if [ $? != 0 ];
- then
- echo "uClibc sed failed"
- exit 1
- fi
-
- make ARCH=or32 clean
-
- if [ $? != 0 ];
- then
- echo "uClibc clean failed"
- exit 1
- fi
-
- make ARCH=or32 defconfig
-
- if [ $? != 0 ];
- then
- echo "uClibc configure failed"
- exit 1
- fi
-
- unset this_prefix
- unset ccprefix
- unset devprefix
- unset kheaders
-
- cd -
- fi
-} # uclibc_config
-
-
-# ------------------------------------------------------------------------------
-# Conditionally build and install uClibc
-function uclibc_build_install {
- cd_0rel ${uclibc_dir}
-
- if [ "true" == "${build_flag}" ]
- then
- echo "bld-all.sh: Building uClibc"
-
- make ARCH=or32 all
-
- if [ $? != 0 ];
- then
- echo "uClibc build failed"
- exit 1
- fi
- fi
-
- if [ "true" == "${install_flag}" ]
- then
- echo "bld-all.sh: Installing uClibc"
-
- make ARCH=or32 install
-
- if [ $? != 0 ];
- then
- echo "uClibc install failed"
- exit 1
- fi
- fi
-
- cd -
-
-} # uclibc_build_install
-
-
-# ------------------------------------------------------------------------------
-# Main program
-set_defaults
-parse_args $*
-sanity_check
-
-# --force always blows away the link directory. It only blows away build
-# directories we are actually building (see below).
-if [ "true" == "${force_flag}" ]
-then
- echo "bld-all.sh: removing ${unisrc_dir}"
- rm -rf ${unisrc_dir}
-fi
-
-link_unified
-
-# Build the newlib (or32-elf) tool chain.
-if [ "true" == "${or32_elf_flag}" ]
-then
- target="or32-elf"
- echo "bld-all.sh: or32-elf toolchain"
-
- # --force only applies to build directories we are using!
- if [ "true" == "${force_flag}" ]
- then
- echo "bld-all.sh: removing ${bd_elf} ${bd_elf_gdb}"
- rm -rf ${bd_elf} ${bd_elf_gdb}
- fi
-
- # Configure all
- gnu_config ${config_flag} ${prefix} ${bd_elf} ../${unisrc_dir} \
- "${languages}" "${newlib_config}"
- # ??? should handle absolute pathnames.
- gnu_config ${config_flag} ${prefix} ${bd_elf_gdb} \
- ../`dirname $0`/${gdb_dir} "${languages}"
-
- # Build all
- gnu_make ${build_flag} ${bd_elf} all-build all-binutils all-gas all-ld
- gnu_make ${build_flag} ${bd_elf} all-gcc
- gnu_make ${build_flag} ${bd_elf} all-target-libgcc all-target-libstdc++-v3 \
- ${newlib_build}
- gnu_make ${build_flag} ${bd_elf_gdb} all-build all-sim all-gdb
-
- # Check all
- gnu_make ${check_flag} ${bd_elf} check-binutils check-gas check-ld \
- check-gcc check-target-libgcc check-target-libstdc++-v3 ${newlib_check}
- gnu_make ${check_flag} ${bd_elf_gdb} check-sim check-gdb
-
- # Install all
- gnu_make ${install_flag} ${bd_elf} install-binutils install-gas install-ld \
- install-gcc install-target-libgcc install-target-libstdc++-v3 \
- ${newlib_install}
- gnu_make ${install_flag} ${bd_elf_gdb} install-sim install-gdb
-fi
-
-# Build the uClibc (or32-linux) tool chain
-if [ "true" == "${or32_linux_flag}" ]
-then
- target="or32-linux"
- echo "bld-all.sh: or32-linux toolchain"
-
- # --force only applies to build directories we are using!
- if [ "true" == "${force_flag}" ]
- then
- echo "bld-all.sh: removing ${bd_linux} ${bd_linux_gdb}"
- rm -rf ${bd_linux} ${bd_linux_gdb}
- fi
-
- # Stage 1 binutils/GCC build uses no headers and only C
- # language. This is just to create the libc headers, which we put in the
- # temporary prefix directory.
- if [ "true" == "${uclibc_stage1_flag}" ]
- then
- echo "bld-all.sh: uClibc GCC stage 1"
-
- # Make a clean temporary install directory.
- rm -rf ${prefix_tmp}
- mkdir ${prefix_tmp}
-
- # For header building we use just single threads, or we don't find
- # pthread.h.
- thread_config="--enable-threads=single --disable-tls"
-
- # To create the headers we only use C
- gnu_config ${config_flag} ${prefix_tmp} ${bd_linux} ../${unisrc_dir} \
- "c" "--without-headers ${thread_config}"
- gnu_make ${build_flag} ${bd_linux} all-build all-binutils all-gas all-ld
- gnu_make ${build_flag} ${bd_linux} all-gcc
- gnu_make ${build_flag} ${bd_linux} all-target-libgcc
- gnu_make ${install_flag} ${bd_linux} install-binutils install-gas \
- install-ld
- gnu_make ${install_flag} ${bd_linux} install-gcc install-target-libgcc
-
- # Create the headers using our temporary tool chain
- save_path="${PATH}"
- export PATH="${prefix_tmp}/bin:${PATH}"
- install_linux_headers ${prefix_tmp}
- uclibc_config ${prefix_tmp}
- uclibc_build_install
- PATH="${save_path}"
- unset save_path
- fi
-
- # If we are doing both stage 1 and stage 2, then we need to completely
- # clean gcc and target libraries. Just blow the entire directory away.
- if [ "truetrue" == "${uclibc_stage1_flag}${uclibc_stage2_flag}" ]
- then
- echo "bld-all.sh: uClibc GCC inter-stage cleaning"
- rm -rf ${bd_linux}/gcc ${bd_linux}/or32-linux
- fi
-
- # Stage 2 GCC uses the headers installed from stage 1.
- if [ "true" == "${uclibc_stage2_flag}" ]
- then
- echo "bld-all.sh: uClibc GCC stage 2"
-
- # uClibc now supports POSIX threads, but not TLS. uClibc
- # linuxthreads.old is a POSIX98 compliant implementation.
- thread_config="--enable-threads=posix --disable-tls"
-
- gnu_config ${config_flag} ${prefix} ${bd_linux} ../${unisrc_dir} \
- "${languages}" \
- "--with-headers=${prefix_tmp}/or32-linux/include ${thread_config}"
- gnu_make ${build_flag} ${bd_linux} all-build all-binutils all-gas all-ld
- gnu_make ${build_flag} ${bd_linux} all-gcc
- gnu_make ${build_flag} ${bd_linux} all-target-libgcc
- gnu_make ${install_flag} ${bd_linux} install-binutils install-gas \
- install-ld
- gnu_make ${install_flag} ${bd_linux} install-gcc install-target-libgcc
-
- # We need to build uClibc before building the C++ libraries, which in
- # turn needs the Linux headers
- export PATH=${prefix}/bin:${PATH}
- install_linux_headers ${prefix}
- uclibc_config ${prefix}
- uclibc_build_install
-
- # Finish building the C++ library
- gnu_make ${build_flag} ${bd_linux} all-target-libstdc++-v3
- gnu_make ${install_flag} ${bd_linux} install-target-libstdc++-v3
- fi
-
- # Configure, build and install GDB (note we need to reconfigure in case
- # only stage1 has been run previously).
- # ??? should handle absolute pathnames.
- gnu_config ${config_flag} ${prefix} ${bd_linux_gdb} \
- ../`dirname $0`/${gdb_dir} "${languages}"
- gnu_make ${build_flag} ${bd_linux_gdb} all-build all-sim all-gdb
- gnu_make ${install_flag} ${bd_linux_gdb} install-sim install-gdb
-fi
trunk/gnu-old/bld-all.sh
Property changes :
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property