<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML
><HEAD
><TITLE
>Global Config File</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="DejaGnu"
HREF="book1.html"><LINK
REL="UP"
TITLE="Customizing DejaGnu"
HREF="c848.html"><LINK
REL="PREVIOUS"
TITLE="Customizing DejaGnu"
HREF="c848.html"><LINK
REL="NEXT"
TITLE="Board Config File"
HREF="x935.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>DejaGnu: The GNU Testing Framework</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="c848.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Customizing DejaGnu</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x935.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="GLOBAL"
></A
>Global Config File</H1
><P
>The master config file is where all the target specific
      config variables for a whole site get set. The idea is
      that for a centralized testing lab where people have to share a
      target between multiple developers. There are settings for both
      remote targets and remote hosts.  Here's an example of a Master
      Config File (also called the Global config file) for a
      <I
CLASS="EMPHASIS"
>canadian cross</I
>. A canadian cross is when
      you build and test a cross compiler on a machine other than the
      one it's to be hosted on.</P
><P
>Here we have the config settings for our California
      office. Note that all config values are site dependant. Here we
      have two sets of values that we use for testing m68k-aout cross
      compilers. As both of these target boards has a different
      debugging protocol, we test on both of them in sequence.</P
><DIV
CLASS="EXAMPLE"
><A
NAME="AEN921"
></A
><P
><B
>Example 4. Global Config file</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>&#13;      # Make sure we look in the right place for the board description files.
      if ![info exists boards_dir] {
          set boards_dir {}
      }
      lappend boards_dir "/nfs/cygint/s1/cygnus/dejagnu/boards"

      verbose "Global Config File: target_triplet is $target_triplet" 2
      global target_list

      case "$target_triplet" in {
          { "native" } {
              set target_list "unix"
          }
          { "sparc64-*elf" } {
              set target_list "sparc64-sim"
          }
          { "mips-*elf" } {
              set target_list "mips-sim wilma barney"
          }
          { "mips-lsi-elf" } {
              set target_list "mips-lsi-sim{,soft-float,el}"
          }
          { "sh-*hms" } {
              set target_list { "sh-hms-sim" "bloozy" }
          }
      }
      </PRE
></TD
></TR
></TABLE
></DIV
><P
>In this case, we have support for several cross compilers,
    that all run on this host. For testing on operating systems that
    don't support Expect, DejaGnu can be run on the local build
    machine, and it can connect to the remote host and run all the
    tests for this cross compiler on that host. All the remote OS
    requires is a working telnetd.</P
><P
>As you can see, all one does is set the variable
    <SPAN
CLASS="SYMBOL"
>target_list</SPAN
> to the list of targets and options to
    test. The simple settings, like for
    <I
CLASS="EMPHASIS"
>sparc64-elf</I
> only require setting the name of
    the single board config file. The <I
CLASS="EMPHASIS"
>mips-elf</I
>
    target is more complicated. Here it sets the list to three target
    boards. One is the default mips target, and both
    <I
CLASS="EMPHASIS"
>wilma</I
> <I
CLASS="EMPHASIS"
>barney</I
> are
    symbolic names for other mips boards. Symbolic names are covered
    in the <A
HREF="x1214.html"
>Adding A New Board</A
> chapter. The more complicated
    example is the one for <I
CLASS="EMPHASIS"
>mips-lsi-elf</I
>. This one
    runs the tests with multiple iterations using all possible
    combinations of the <TT
CLASS="OPTION"
>--soft-float</TT
> and the
    <TT
CLASS="OPTION"
>--el</TT
> (little endian) option. Needless to say,
    this last feature is mostly compiler specific.</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="c848.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x935.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Customizing DejaGnu</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c848.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Board Config File</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>