This is the mail archive of the mailing list for the newlib project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Building the toolchain

I'm looking for the best way to compile the toolchain from scratch
with recent versions of binutils (2.18), gcc/g++ (4.2.2), and newlib
(20080125_cvs_import).  Target is arm-elf which I use on bare metal.

What I have works great but I have to compile g++ separately and
disable libssp (see below)

I compile g++ separately because it goes looking for sys/types.h
during the build and can't find it if gcc and newlib aren't compiled
and installed first.  Is that normal?

I still have to disable libssp in the gcc/g++ build because I get
configure warnings and then compiler errors.  I reported it a while
ago on the gcc list and in a PR. If it hasn't been fixed, then I'll
keep working the way I am.

Libssp warnings from configure:

checking limits.h usability... no
checking limits.h presence... yes
configure: WARNING: limits.h: present but cannot be compiled
configure: WARNING: limits.h:     check for missing prerequisite headers?
configure: WARNING: limits.h: see the Autoconf documentation
configure: WARNING: limits.h:     section "Present But Cannot Be Compiled"
configure: WARNING: limits.h: proceeding with the preprocessor's result
configure: WARNING: limits.h: in the future, the compiler will take precedence
configure: WARNING:     ## --------------------------------- ##
configure: WARNING:     ## Report this to the libssp lists.  ##
configure: WARNING:     ## --------------------------------- ##
checking for limits.h... yes

Here's how I currently do it Makefile style....

all: cross-binutils cross-gcc cross-g++ cross-newlib

# awful hack using cp in binutils b/c the bfd/docs will not build
outside their tree
        mkdir -p build/binutils && cd build/binutils && \
        mkdir -p bfd/doc && cp ../../binutils/bfd/doc/* bfd/doc/ && \
        (./config.status || ../../binutils/configure
--prefix=$(PREFIX) --target=$(TARGET)) && \
        $(MAKE) -j$(PROCS)&& \
        $(MAKE) install

cross-gcc: cross-binutils
        mkdir -p build/gcc && cd build/gcc && \
        (./config.status || ../../gcc/configure --prefix=$(PREFIX)
--target=$(TARGET) --enable-languages="c" --with-gnu-ld --with-gnu-as
--with-newlib --disable-libssp) && \
        $(MAKE) && \
        $(MAKE) install

cross-g++: cross-binutils cross-gcc cross-newlib
        mkdir -p build/g++ && cd build/g++ && \
        (./config.status || ../../gcc/configure --prefix=$(PREFIX)
--target=$(TARGET) --enable-languages="c++" --with-gnu-ld
--with-gnu-as --with-newlib --disable-libssp) && \
        $(MAKE) && \
        $(MAKE) install

cross-newlib: cross-binutils cross-gcc
        mkdir -p build/newlib && cd build/newlib && \
        (./config.status || ../../newlib/configure --prefix=$(PREFIX)
--target=$(TARGET)) && \
        $(MAKE) -j$(PROCS) && \
        $(MAKE) install
-- snip--

Thanks for any input!


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]