The board config file is where board specfic config data is stored. A board config file contains all the higher-level configuration settings. There is a rough inheritance scheme, where it is possible to base a new board description file on an existing one. There are also collections of custom procedures for common environments. For more information on adding a new board config file, go to the Adding A New Board chapter.
An example board config file for a GNU simulator is as
follows. set_board_info
is a procedure that sets the
field name to the specified value. The procedures in square brackets
[] are helper procedures. Thes
are used to find parts of a tool chain required to build an executable
image that may reside in various locations. This is mostly of use for
when the startup code, the standard C lobraries, or the tool chain itself
is part of your build tree.
Example 3-5. Board Config File
# This is a list of toolchains that are supported on this board. set_board_info target_install {sparc64-elf} # Load the generic configuration for this board. This will define any # routines needed by the tool to communicate with the board. load_generic_config "sim" # We need this for find_gcc and *_include_flags/*_link_flags. load_base_board_description "basic-sim" # Use long64 by default. process_multilib_options "long64" setup_sim sparc64 # We only support newlib on this target. We assume that all multilib # options have been specified before we get here. set_board_info compiler "[find_gcc]" set_board_info cflags "[libgloss_include_flags] [newlib_include_flags]" set_board_info ldflags "[libgloss_link_flags] [newlib_link_flags]" # No linker script. set_board_info ldscript ""; # Used by a few gcc.c-torture testcases to delimit how large the # stack can be. set_board_info gcc,stack_size 16384 # The simulator doesn't return exit statuses and we need to indicate this # the standard GCC wrapper will work with this target. set_board_info needs_status_wrapper 1 # We can't pass arguments to programs. set_board_info noargs 1
There are five helper procedures used in this example. The first
one, find gcc
looks for a copy of the GNU compiler in
your build tree, or it uses the one in your path. This will also return
the proper transformed name for a cross compiler if you whole build tree
is configured for one. The next helper procedures are
libgloss_include_flags
&
libgloss_link_flags
. These return the proper flags to
compiler and link an executable image using Libgloss, the GNU BSP (Board Support Package). The final
procedures are newlib_include_flag
&
newlib_include_flag
. These find the Newlib C
library, which is a reentrant standard C library for embedded systems
comprising of non GPL'd code.