This summary can be used as a checklist when creating a new port of
newlib
. The configuration and build steps are typically encapsulated
in a simple shell script, which builds, tests and installs the entire
GNU tool chain as well as newlib
and libgloss
Throughout this checklist, the new target architecture is referred to as
target
. It is recommended newlib
and
libgloss
are built as part of a unified source tree including the
newlib
distribution (see Section 2.1).
Edit newlib/configure.host
adding entries for
the new target (Section 3.3).
Decide whether to implement reentrant or non-reentrant system calls and whether to use namespace clean system call names (Section 3.2).
Add a newlib
machine subdirectory for the new target,
newlib/libc/machine/
(Section 4.1).
target
Modify configure.in
in
newlib/libc/machine
to configure the new
target subdirectory and run autoconf in
newlib/libc/machine
to regenerate the
configure
script (Section 4.1.1).
Implement setjmp
and
longjmp
in the target specific machine
directory,
newlib/libc/machine/
(Section 4.1.2).
target
Copy and modify Makefile.am
and
configure.in
from the fr30 directory and
run aclocal, autoconf and automake in
newlib/libc/machine/
to regenerate the target
configure
script and
Makefile template. (Section 4.1.3).
Modify newlib
header files (Section 4.2).
Add entries in newlib/libc/include/ieeefp.c
(Section 4.2.1)
Add entry in in
newlib/libc/include/setjmp.c
(Section 4.2.2)
Add entries in
newlib/libc/include/sys/config.h
(Section 4.2.3).
Optionally add other custom headers in
newlib/libc/machine/target/machine
(Section 4.2.4).
Add a libgloss
platform directory,
libgloss/
(Section 5.1).
target
Modify libgloss/configure.in
to configure the
platform subdirectory and run autoconf in the
libgloss
directory to regenerate the
configure
script (Section 5.1.1).
Implement the Board Support Package(s) for the target (Chapter 5).
Implement the C Runtime start up,
crt0.o
for each BSP (Section 5.2).
Implement the environment global variable and 18 system call
functions for each BSP following the convention namespace and
reentrancy conventions specified in
newlib/configure.host
(Section 5.3 and Section 5.4).
Create
libgloss/
and
target
/Makefile.inlibgloss/
,
based on the versions in the
target
/configure.aclibgloss/libnosys
directory and run
aclocal and autoconf in
libgloss/
(Section 5.5).
target
If necessary update
libgloss/libnosys/configure.in
to indicate the
target is using namespace clean system calls and run autoconf in
libgloss/libnosys
(Section 5.6).
Modify GCC for newlib
(Section 7.2).
Optionally add target specific option(s) to specify newlib
BSP(s) (Section 7.2.1).
Optionally specify the location of newlib
headers, the BSP C
runtime start up file and the newlib libraries, if they have been
moved from their standard locations and/or names (Section 7.2.2)
Specify the libgloss
BSP library to be linked, ensuring
malloc
and free
are
linked in if required (the section called “
Adding a BSP to the link line.
”).
Ensure the linker scripts are suitable for use with newlib
(Section 7.3).
Configure and build newlib
and libgloss
(Chapter 6).
Optionally move the newlib
header directory, libraries, C
start-up and BSP(s) to a custom location (Section 7.1).
Rebuild GCC
Rebuild ld if any linker scripts have been changed.
Test newlib
(Section 8.1).
Install newlib
and libgloss
(Chapter 6).
Reinstall GCC
Reinstall ld if any linker scripts have been changed.
You should now have a working newlib
implementation integrated within
your GNU tool chain.