Services and Modeling for Embedded Software Development
Embecosm divider strip
Prev  Next

2.1.  The Unified Source Tree

2.1.1. Incorporating Newlib within the Tool Chain Build

The three separate packages, binutils, GCC and GDB are all taken from a common source tree. GCC and GDB both use many libraries from binutils. It is convenient to reassemble that source tree and make a single build of all the tools together.

The easiest way to achieve this is to link all the top level directories in each package into a single unified directory, leaving out any duplicated files or directories.

The following bash script will take unpacked distributions of binutils GCC and GDB and link them into a single directory, srcw.

#!/bin/bash

component_dirs='binutils-2.18.50 gcc-4.2.2 gdb-6.8'
unified_src=srcw

cd ${unified_src}
ignore_list=". .. CVS .svn"
    
for srcdir in ${component_dirs}
do
    echo "Component: $srcdir"
    case srcdir
        in
        /* | [A-Za-z]:[\\/]*)
            ;;
            
        *)
            srcdir="../${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

cd ..
	

The entire tool chain can then be configured and built in a separate directory. The configure script understands to pass on top level arguments to subsidiary configuration scripts. For example to configure to build a C only tool chain for the 32-bit OpenRISC 1000  architecture to be installed in /opt/or32-elf, the following would be appropriate.

mkdir build
cd build
../src/configure --target=or32-elf --enable-languages=c --prefix=/opt/or32-elf
cd ..
	

Each tool can be built with its own specific target within that build directory

cd build
make all-build all-binutils all-gas all-ld all-gcc all-gdb
cd ..
	
[Note]Note

The initial make target, all-build is used to build some of the baseline libraries and tools used throughout the tool chain.

Similarly the tools can be installed using the following:

cd build
make install-build install-binutils install-gas install-ld install-gcc \
     install-gdb
cd ..
	
Embecosm divider strip