### 4.3 Board configuration file ¶

The board configuration file is where board-specific configuration details are stored. A board configuration file contains all the higher-level configuration settings. There is a rough inheritance scheme, where it is possible to derive a new board description file from an existing one. There are also collections of custom procedures for common environments. For more information on adding a new board config file, see Adding a new board.

An example board configuration 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 mentioned in brackets are helper procedures. These are used to find parts of a toolchain required to build an executable image that may reside in various locations. This is mostly of use when the startup code, the standard C libraries, or the toolchain itself is part of your build tree.

Example 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 status 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:

- `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. DejaGnu will use this procedure to locate a compiler if the `compiler` field is not set.
- `libgloss_include_flags` returns the flags to compile using libgloss, the GNU board support package (BSP).
- `libgloss_link_flags` returns the flags to link an executable using libgloss.
- `newlib_include_flags` returns the flags to compile using newlib, a re-entrant standard C library for embedded systems comprising of non-GPL’d code
- `newlib_link_flags` returns the flags to link an executable with newlib.