<?xml version="1.0" ?>
<gprconfig>
   <!--  This package provides the default standard options for a gcc
         C compiler -->

   <configuration>
     <compilers>
       <compiler name="^GCC$" language="C" />
       <compiler name="^GCC_Pro$" language="C" />
       <compiler name="^GCC-28$" language="C" />
       <compiler name="^GCC-CYGMING$" language="C" />
       <compiler name="^GCC-SYSGO-X86$" language="C" />
       <compiler name="^GCC-SYSGO-PPC$" language="C" />
     </compilers>
     <config>
   package Compiler is
      for Driver              ("C") use "${PATH(c)}${EXEC(c)}";
   end Compiler;
     </config>
   </configuration>

   <configuration>
     <compilers>
        <compiler name="^GCC-MINGW32$" language="C" />
     </compilers>
     <config>
   package Compiler is
      for Driver              ("C") use "${PATH(c)}${PREFIX(c)}gcc";
   end Compiler;
     </config>
   </configuration>

   <configuration>
     <compilers>
       <compiler name="^GCC-WRS5$" language="C" />
       <compiler name="^GCC-WRS6$" language="C" />
       <compiler name="^GCC-WRS6CERT$" language="C" />
       <compiler name="^GCC-WRS6CERTE500V2$" language="C" />
       <compiler name="^GCC-WRS6E500V2$" language="C" />
       <compiler name="^GCC-WRS653-PPC$" language="C" />
       <compiler name="^GCC-WRS653-E500V2$" language="C" />
       <compiler name="^GCC-WRS7ARM$" language="C" />
       <compiler name="^GCC-WRS7E500V2$" language="C" />
       <compiler name="^GCC-WRS7PPC$" language="C" />
       <compiler name="^GCC-WRS7X86$" language="C" />
       <compiler name="^GCC-WRS7X86_64$" language="C" />
     </compilers>
     <config>
   package Compiler is
      for Driver              ("C") use "${PATH(c)}cc${PREFIX(c)}";
   end Compiler;
     </config>
   </configuration>

   <configuration>
     <compilers>
       <compiler name="DIABC" language="C" />
     </compilers>
     <config>
   package Compiler is
      for Driver              ("C") use "${PATH(c)}dcc";
   end Compiler;
     </config>
   </configuration>

   <configuration>
     <compilers>
       <compiler name="CLANG-C" language="C" />
       <compiler name="LLVM" language="C" />
     </compilers>
     <config>
   package Compiler is
      for Driver              ("C") use "${PATH(c)}${PREFIX(c)}clang";
   end Compiler;
     </config>
   </configuration>

  <!--     GCC -I parameter passing
   Starting with 4.5, we use spec file to avoid line length limitations
   -->
   <configuration>
     <compilers>
       <compiler name="GCC" language="C" />
     </compilers>
   <compilers negate="true">
     <compiler version="^2\.\d+" />
     <compiler version="^3\.\d+" />
     <compiler version="^4\.[01234]" />
     <!--
	 On VxWorks 6, 6 cert and 653, version is not the version of
	 gcc but the version of the OS. All of these are using gcc
	 that are older than 4.5, and we do not expect more releases
	 for these products at this point. FTR, here are the most recent
	 versions:
	 - VxWorks Cert 6.6.4.1: 4.1.2
	 - VxWorks 6.9: gcc 4.3.3
	 - VxWorks 653 2.5.0.2: gcc 4.3.3
	 - VxWorks 653 3.1.3: gcc 4.3.3.2
     -->
     <compiler version="^vxworks-6\.\d+" />
     <compiler version="^vxworks-cert-6\.\d+" />
     <compiler version="^vxworks653-.*" />
   </compilers>
     <config>
   package Compiler is
      for Leading_Required_Switches   ("C") use
         ("-c", "-x", "c") &amp; Compiler'Leading_Required_Switches ("C");
      for Include_Switches_Via_Spec   ("C") use ("cc1", "-I");
      for Max_Command_Line_Length use "8192";
      for Response_File_Format    ("C") use "GCC_GNU";
   end Compiler;
     </config>
   </configuration>

   <configuration>
     <compilers>
       <compiler name="GCC" language="C" />
     </compilers>
   <compilers>
     <compiler version="^2\.\d+" />
     <compiler version="^3\.\d+" />
     <compiler version="^4\.[01234]" />
     <compiler version="^vxworks-6\.\d+" />
     <compiler version="^vxworks-cert-6\.\d+" />
     <compiler version="^vxworks653-.*" />
   </compilers>
     <config>
   package Compiler is
      for Leading_Required_Switches   ("C") use
         ("-c", "-x", "c") &amp; Compiler'Leading_Required_Switches ("C");
      for Include_Switches   ("C") use ("-I");
      for Max_Command_Line_Length use "8192";
      for Response_File_Format    ("C") use "GCC_GNU";
   end Compiler;
     </config>
   </configuration>

   <configuration>
     <compilers>
       <compiler name="CLANG-C" language="C" />
       <compiler name="LLVM" language="C" />
     </compilers>
     <config>
   package Compiler is
      for Leading_Required_Switches   ("C") use
         ("-c", "-x", "c") &amp; Compiler'Leading_Required_Switches ("C");
      for Include_Switches   ("C") use ("-I");
      for Max_Command_Line_Length use "8192";
      for Response_File_Format    ("C") use "GCC_GNU";
   end Compiler;
     </config>
   </configuration>

  <!--     GCC 2.8.1 & VxWorks 5
   Switch -MMD is not supported on GCC 2.8.1. So, we use an undocumented
   switch. -MF is not supported by the VxWorks 5 gcc
   -->
   <configuration>
     <compilers>
       <compiler name="^GCC-28$" language="C" />
       <compiler name="^GCC-WRS5$" language="C" />
     </compilers>
     <config>
   package Compiler is
      for Dependency_Switches ("C") use ("-Wp,-MMD,");
   end Compiler;
     </config>
   </configuration>

   <configuration>
     <compilers>
       <compiler name="^CLANG-C$" language="C" />
       <compiler name="^GCC$" language="C" />
       <compiler name="^GCC_Pro$" language="C" />
       <compiler name="^GCC-CYGMING$" language="C" />
       <compiler name="^GCC-MINGW32$" language="C" />
       <compiler name="^GCC-WRS6$" language="C" />
       <compiler name="^GCC-WRS6E500V2$" language="C" />
       <compiler name="^GCC-WRS6CERT$" language="C" />
       <compiler name="^GCC-WRS6CERTE500V2$" language="C" />
       <compiler name="^GCC-WRS653-PPC$" language="C" />
       <compiler name="^GCC-WRS653-E500V2$" language="C" />
       <compiler name="^GCC-WRS7X86$" language="C" />
       <compiler name="^GCC-WRS7X86_64$" language="C" />
       <compiler name="^GCC-WRS7PPC$" language="C" />
       <compiler name="^GCC-WRS7E500V2$" language="C" />
     </compilers>
     <config>
   package Compiler is
      for Dependency_Switches ("C") use ("-MMD", "-MF", "");
   end Compiler;
     </config>
   </configuration>

   <configuration>
     <compilers>
       <compiler name="^DIABC-PPC$" language="C" />
     </compilers>
     <config>
   package Compiler is
      for Leading_Required_Switches   ("C") use
         Compiler'Leading_Required_Switches ("C") &amp; ("-tPPC750EH:cross", "-c");
      for Dependency_Switches ("C") use
         ("-Xmake-dependency=6", "-Xmake-dependency-savefile=");
      for Include_Path        ("C") use "CPATH";
   end Compiler;
     </config>
   </configuration>

   <configuration>
     <compilers>
       <compiler name="^DIABC-PPC64$" language="C" />
     </compilers>
     <config>
   package Compiler is
      for Leading_Required_Switches   ("C") use
        Compiler'Leading_Required_Switches ("C")
        &amp; ("-tPPCLP64FH:vxworks7",
               "-c",
               "-ffixed-r13",
               "-Xclib-optim-off",
               "-Xlocal-data-area-static-only",
               "-Xc-new",
               "-Xcode-absolute-far",
               "-D_WRS_HARDWARE_FP",
               "-DCPU=_VX_PPCE6500",
               "-D_WRS_VX_SMP",
               "-D_WRS_CONFIG_SMP");
      for Dependency_Switches ("C") use
         ("-Xmake-dependency=6", "-Xmake-dependency-savefile=");
      for Include_Path        ("C") use "CPATH";
   end Compiler;
     </config>
   </configuration>

   <!--  Additional switches needed on some platforms -->

   <configuration>
     <compilers>
       <compiler name="^CLANG-C$" language="C" />
       <compiler name="^GCC$" language="C" />
       <compiler name="^GCC_Pro$" language="C" />
       <compiler name="^GCC-28$" language="C" />
     </compilers>
     <targets negate="true">
       <target name="^.*LynxOS.*$" />
       <target name="^.*mingw.*$" />
       <target name="^.*cygwin.*$" />
       <target name="^.*dec-osf.*$" />
       <target name="^.*wrs-vxworks.*$" />
     </targets>
     <config>
   package Compiler is
      for PIC_Option ("C") use ("-fPIC");
   end Compiler;
     </config>
   </configuration>

   <!-- for cygming we make sure that the option -mno-cygwin is used -->
   <configuration>
     <compilers>
       <compiler name="^GCC-CYGMING$" language="C" />
     </compilers>
     <config>
   package Compiler is
      for Leading_Required_Switches ("C") use
        Compiler'Leading_Required_Switches ("C") &amp; ("-mno-cygwin");
   end Compiler;
     </config>
   </configuration>

   <!-- Clang on x86-windows needs -fno-omit-frame-pointer -->

   <configuration>
     <compilers>
       <compiler name="^CLANG-C" language="C" />
     </compilers>
     <targets>
       <target name="^i686-pc-windows-gnu$" />
     </targets>
     <config>
   package Compiler is
      for Leading_Required_Switches ("C") use
        Compiler'Leading_Required_Switches ("C")
        &amp; ("-fno-omit-frame-pointer");
   end Compiler;
     </config>
   </configuration>

   <!-- VxWorks 7.x C support using the WRS compilers  -->

   <configuration>
     <compilers>
       <compiler name="^GCC-WRS7ARM$" runtime="^kernel$" />
       <compiler name="^GCC-WRS7PPC$" runtime="^kernel$" />
       <compiler name="^GCC-WRS7E500V2$" runtime="^kernel$" />
       <compiler name="^GCC-WRS7X86$" runtime="^kernel$" />
       <compiler name="^GCC-WRS7X86_64$" runtime="^kernel$" />
       <compiler name="^DIABC-PPC64$" runtime="^kernel$" />
     </compilers>
     <config>
   package Compiler is
      for Leading_Required_Switches ("C") use
        Compiler'Leading_Required_Switches ("C")
        &amp; ("-I" &amp; VSB_Dir &amp; "/h",
               "-I" &amp; VSB_Dir &amp; "/share/h",
               "-I" &amp; VSB_Dir &amp; "/krnl/h/system",
               "-I" &amp; VSB_Dir &amp; "/krnl/h/public",
               "-D_WRS_KERNEL");
   end Compiler;
     </config>
   </configuration>

   <configuration>
     <compilers>
       <compiler name="^GCC_Pro$" runtime="^rtp$" />
     </compilers>
     <config>
   package Compiler is
      for Leading_Required_Switches ("C") use
        Compiler'Leading_Required_Switches ("C") &amp; ("-mrtp");
   end Compiler;
     </config>
   </configuration>

   <configuration>
     <compilers>
       <compiler name="^GCC-WRS7ARM$" runtime="^rtp$" />
       <compiler name="^GCC-WRS7PPC$" runtime="^rtp$" />
       <compiler name="^GCC-WRS7E500V2$" runtime="^rtp$" />
       <compiler name="^GCC-WRS7X86$" runtime="^rtp$" />
       <compiler name="^GCC-WRS7X86_64$" runtime="^rtp$" />
     </compilers>
     <config>
   package Compiler is
      for Leading_Required_Switches ("C") use
        Compiler'Leading_Required_Switches ("C") &amp; ("-mrtp")
        &amp; ("-I" &amp; VSB_Dir &amp; "/h",
               "-I" &amp; VSB_Dir &amp; "/share/h",
               "-I" &amp; VSB_Dir &amp; "/usr/h/public",
               "-I" &amp; VSB_Dir &amp; "/usr/h");
   end Compiler;
     </config>
   </configuration>

   <configuration>
     <compilers>
       <compiler name="^GCC-WRS7ARM$" />
       <compiler name="^GCC-WRS7E500V2$" />
       <compiler name="^GCC-WRS7PPC$" />
       <compiler name="^GCC-WRS7X86$" />
       <compiler name="^GCC-WRS7X86_64$" />
     </compilers>
     <config>
   package Compiler is
      for Leading_Required_Switches ("C") use
        Compiler'Leading_Required_Switches ("C")
        &amp; ("-DTOOL_FAMILY=gnu",
               "-DTOOL=gnu",
               "-D_VSB_CONFIG_FILE=&lt;config/vsbConfig.h&gt;");
   end Compiler;
     </config>
   </configuration>

   <configuration>
     <compilers>
       <compiler name="^DIABC-PPC64$" />
     </compilers>
     <config>
   package Compiler is
      for Leading_Required_Switches ("C") use
        Compiler'Leading_Required_Switches ("C")
        &amp; ("-DTOOL_FAMILY=diab",
               "-DTOOL=diab",
               "-D_VSB_CONFIG_FILE=&lt;config/vsbConfig.h&gt;");
   end Compiler;
     </config>
   </configuration>

   <configuration>
     <compilers>
       <compiler name="^GCC-WRS7X86_64$" />
     </compilers>
     <config>
   package Compiler is
      for Leading_Required_Switches ("C") use
        Compiler'Leading_Required_Switches ("C")
        &amp; ("-m64", "-mcmodel=large",  "-mno-red-zone");
   end Compiler;
     </config>
   </configuration>

   <configuration>
     <compilers>
       <compiler name="^GCC-WRS7ARM$" />
     </compilers>
     <config>
   package Compiler is
      for Leading_Required_Switches ("C") use
        Compiler'Leading_Required_Switches ("C")
        &amp; ("-DCPU=_VX_ARMARCH7",
               "-t7",
               "-mfpu=vfp",
               "-mfloat-abi=softfp");
   end Compiler;
     </config>
   </configuration>

   <configuration>
     <compilers>
       <compiler name="^GCC-WRS7E500V2$" />
     </compilers>
     <config>
   package Compiler is
      for Leading_Required_Switches ("C") use
        Compiler'Leading_Required_Switches ("C")
        &amp; ("-DCPU=_VX_PPCE500V2",
               "-te500v2",
               "-mhard-float",
               "-mstrict-align");
   end Compiler;
     </config>
   </configuration>

   <configuration>
     <compilers>
       <compiler name="^GCC-WRS7PPC$" />
     </compilers>
     <config>
   package Compiler is
      for Leading_Required_Switches ("C") use
        Compiler'Leading_Required_Switches ("C")
        &amp; ("-DCPU=_VX_PPCE500MC",
               "-mno-powerpc-gfxopt",
               "-mno-isel");
   end Compiler;
     </config>
   </configuration>

   <!-- GNAT LLVM needs to emit the .debug_aranges section on most targets
        because the runtime relies on it to produce symbolic backtraces;
        don't emit it on VxWorks because wrdbg doesn't like it. -->

   <configuration>
     <compilers>
       <compiler name="^CLANG_C$" />
     </compilers>
     <targets negate="true">
       <target name="^.*vxworks7r2.*$" />
     </targets>
     <config>
   package Compiler is
      for Leading_Required_Switches ("C") use
        Compiler'Leading_Required_Switches ("C") &amp; ("-gdwarf-aranges");
   end Compiler;
     </config>
   </configuration>

</gprconfig>
