<?xml version="1.0" ?>

<gprconfig>

<!-- Add elinos ports *before* native ports to
     be matched before native compiler -->
 <!-- x86-elinos-.* -->
  <targetset canonical="x86-elinos">
    <target>x86-elinos</target>
    <target>x86-elinos-linux</target>
    <target>i686-elinos-linux</target>
  </targetset>

  <!-- ppc-elinos-.* -->
  <targetset canonical="ppc-elinos">
    <target>ppc-elinos</target>
    <target>ppc-elinos-linux</target>
    <target>powerpc-elinos-linux</target>
  </targetset>


<!-- Add wrs-linux ports *before* native ports to
     be matched before native compiler -->
  <targetset canonical="e500v2-wrslinux">
    <target>e500v2-wrslinux</target>
    <target>e500v2-wrs-linux</target>
    <target>e500v2-wrs-linux</target>
  </targetset>

  <targetset canonical="ppc-wrslinux">
    <target>ppc-wrslinux</target>
    <target>ppc-wrs-linux</target>
    <target>powerpc-wrs-linux</target>
  </targetset>

<!-- Add plain linux ports *before* native ports to
     be matched before native compiler -->
  <targetset canonical="aarch64-linux">
    <target>aarch64-linux</target>
    <target>aarch64-linux-gnu</target>
    <target>aarch64-unknown-linux-gnu</target>
  </targetset>

  <targetset canonical="arm-linux">
    <target>arm-linux</target>
    <target>arm-linux-gnueabi</target>
  </targetset>

  <targetset canonical="armhf-linux">
    <target>armhf-linux</target>
    <target>arm-linux-gnueabihf</target>
  </targetset>

  <targetset canonical="e500v2-linux">
    <target>e500v2-linux</target>
    <target>e500v2-gnu-linux</target>
  </targetset>

  <targetset canonical="ppc-linux">
    <target>ppc-linux</target>
    <target>powerpc-generic-linux-gnu</target>
  </targetset>

  <targetset canonical="ppc64-linux">
    <target>ppc64-linux</target>
    <target>powerpc64-generic-linux-gnu</target>
  </targetset>

<!-- Native ports -->
<!-- ************ -->

  <!-- x86-linux -->
  <targetset canonical="x86-linux">
    <target>x86-linux</target>
    <target>x86_32-linux</target>
    <target>i.86-.*linux.*</target>
  </targetset>

  <!-- x86_64-linux -->
  <targetset canonical="x86_64-linux">
    <target>x86_64-linux</target>
    <target>x86_64-.*linux.*</target>
  </targetset>

  <!-- ia64-.*-linux -->
  <targetset canonical="ia64-linux">
    <target>ia64-linux</target>
    <target>ia64-hp_linux</target>
    <target>ia64-sgi_linux</target>
    <target>ia64-.*linux.*</target>
  </targetset>

  <!-- sparc-solaris -->
  <targetset canonical="sparc-solaris">
    <target>sparc-solaris</target>
    <target>sparc-.*solaris.*</target>
  </targetset>

  <!-- sparc64-solaris -->
  <targetset canonical="sparc64-solaris">
    <target>sparc64-solaris</target>
    <target>sparc64-.*solaris.*</target>
  </targetset>

  <!-- x86-solaris -->
  <targetset canonical="x86-solaris">
    <target>x86-solaris</target>
    <target>i.86-(pc-)?solaris.*</target>
  </targetset>

  <!-- x86-windows (mingw) -->
  <targetset canonical="x86-windows">
    <!--  known targets: pentium-mingw32msv, i686-pc-mingw32 -->
    <target>x86-windows</target>
    <target>x86_32-windows</target>
    <target>mingw32</target>
    <target>i.86-.*mingw32.*</target>
    <target>pentium-.*mingw32.*</target>
  </targetset>

  <!-- x86_64-windows (mingw) -->
  <targetset canonical="x86_64-windows">
    <!--  known targets: x86_64-pc-mingw32 -->
    <target>x86_64-windows</target>
    <target>x86_64-.*mingw32.*</target>
    <!-- canonical LLVM target for MinGW -->
    <!-- x86_64-{pc,w64}-windows-gnu for our Windows triplets -->
    <target>x86_64-.*windows-gnu</target>
  </targetset>

  <!-- aarch64-darwin (iOS 64bit) -->
  <targetset canonical="aarch64-darwin">
    <target>aarch64-ios</target>
    <target>aarch64-darwin</target>
    <target>aarch64.*-darwin.*</target>
  </targetset>

  <!-- arm-darwin (iOS) -->
  <targetset canonical="arm-darwin">
    <target>arm-ios</target>
    <target>arm-darwin</target>
    <target>arm.*-darwin.*</target>
  </targetset>

  <!-- ppc-darwin -->
  <targetset canonical="ppc-darwin">
    <target>ppc-darwin</target>
    <target>powerpc.*darwin.*</target>
  </targetset>

  <!-- x86-darwin -->
  <targetset canonical="x86-darwin">
    <target>x86-darwin</target>
    <target>x86_32-darwin</target>
    <target>i.86-.*-darwin.*</target>
  </targetset>

  <!-- x86_64-darwin -->
  <targetset canonical="x86_64-darwin">
    <target>x86_64-darwin</target>
    <target>x86_64-.*-darwin.*</target>
  </targetset>

  <!-- pa-hpux -->
  <targetset canonical="pa-hpux">
    <target>pa-hpux</target>
    <target>hppa.*-hpux.*</target>
  </targetset>

  <!-- ia64-hpux -->
  <targetset canonical="ia64-hpux">
    <target>ia64-hpux</target>
    <target>ia64-.*hpux.*</target>
  </targetset>

  <!-- alpha-tru64 -->
  <targetset canonical="alpha-tru64">
    <target>alpha-tru64</target>
    <target>alpha.*osf.*</target>
  </targetset>

  <!-- alpha-openvms -->
  <targetset canonical="alpha-openvms">
    <target>alpha-openvms</target>
    <target>alpha64-dec-openvms.*</target>
  </targetset>

  <!-- mips-irix -->
  <targetset canonical="mips-irix">
    <target>mips-irix</target>
    <target>mips-.*irix.*</target>
  </targetset>

  <!-- ppc-aix -->
  <targetset canonical="ppc-aix">
    <target>ppc-aix</target>
    <target>powerpc.*-aix.*</target>
  </targetset>

  <!-- ppc-linux -->
  <targetset canonical="ppc-linux">
    <target>ppc-linux</target>
    <target>powerpc-.*-linux.*</target>
  </targetset>

  <!-- x86-lynx -->
  <targetset canonical="x86-lynx">
    <target>x86-lynx</target>
    <target>i.86-.*-lynxos</target>
  </targetset>

<!-- Additional Natives -->
<!-- ******************* -->

  <!-- x86-windows cygwin -->
  <targetset canonical="x86-cygwin">
    <target>i.*-cygwin.*</target>
    <target>pent.*-cygwin.*</target>
  </targetset>

  <!-- aarch64 FreeBSD -->
  <targetset canonical="aarch64-freebsd">
    <target>aarch64-freebsd</target>
    <target>aarch64-.*freebsd.*</target>
  </targetset>

  <!-- x86 FreeBSD -->
  <targetset canonical="x86-freebsd">
    <target>x86-freebsd</target>
    <target>x86_32-freebsd</target>
    <target>i.86-.*freebsd.*</target>
  </targetset>

  <!-- x86_64 FreeBSD -->
  <targetset canonical="x86_64-freebsd">
    <target>x86_64-freebsd</target>
    <target>x86_64-.*freebsd.*</target>
    <target>amd64-.*freebsd.*</target>
  </targetset>

  <!-- x86 NetBSD -->
  <targetset canonical="x86-netbsd">
    <target>x86-netbsd</target>
    <target>x86_32-netbsd</target>
    <target>i.86-.*netbsd.*</target>
  </targetset>

  <!-- x86_64 NetBSD -->
  <targetset canonical="x86_64-netbsd">
    <target>x86_64-netbsd</target>
    <target>x86_64-.*netbsd.*</target>
    <target>amd64-.*netbsd.*</target>
  </targetset>

  <!-- arm* NetBSD support -->
  <targetset canonical="aarch64-netbsd">
    <target>aarch64-netbsd</target>
    <target>aarch64-.*netbsd.*</target>
  </targetset>

  <targetset canonical="arm7-netbsd">
    <target>arm7-netbsd</target>
    <target>arm7-.*netbsd.*</target>
  </targetset>

  <targetset canonical="arm7eb-netbsd">
    <target>arm7eb-netbsd</target>
    <target>arm7eb-.*netbsd.*</target>
  </targetset>

  <!-- Other arm* NetBSD support -->
  <targetset canonical="aarch64-netbsd">
    <target>arm*-.*netbsd.*</target>
  </targetset>

  <!-- RISC-V NetBSD support -->
  <targetset canonical="riscv32-netbsd">
    <target>riscv32-netbsd</target>
    <target>riscv32-.*netbsd.*</target>
  </targetset>

  <targetset canonical="riscv64-netbsd">
    <target>riscv64-netbsd</target>
    <target>riscv64-.*netbsd.*</target>
  </targetset>

  <!-- x86_64 DragonflyBSD -->
  <targetset canonical="x86_64-dragonfly">
    <target>x86_64-dragonfly</target>
    <target>x86_64-.*dragonlfy.*</target>
    <target>amd64-.*dragonfly.*</target>
  </targetset>

<!-- Cross Ports -->
<!-- *********** -->

  <!-- aamp -->
  <targetset canonical="aamp">
    <target>aamp</target>
    <target>.*aamp.*</target>
  </targetset>

  <!-- ppc-lynx178elf -->
  <targetset canonical="ppc-lynx178elf">
    <target>ppc-lynx178elf</target>
    <target>powerpc-elf-lynxos178e</target>
  </targetset>

  <!-- ppc-lynx5-.* -->
  <targetset canonical="ppc-lynx5">
    <target>ppc-lynx5</target>
    <target>ppc-lynx5.*</target>
    <target>powerpc-elf-lynxos5.*</target>
  </targetset>

  <!-- ppc-lynx-.* -->
  <targetset canonical="ppc-lynx">
    <target>ppc-lynx</target>
    <target>ppc-lynx-solaris</target>
    <target>ppc-lynx-.*</target>
    <target>powerpc-elf-lynxos.*</target>
  </targetset>

  <!-- ppc-xcoff-lynxos178-.* -->
  <targetset canonical="ppc-lynx178">
    <target>ppc-lynx178</target>
    <target>ppc-xcoff-lynxos</target>
    <target>ppc-xcoff-lynxos178.*</target>
    <target>powerpc-xcoff-lynxos178.*</target>
  </targetset>

  <!-- x86-lynx178elf -->
  <targetset canonical="x86-lynx178elf">
    <target>x86-lynx178elf</target>
    <target>i586-elf-lynxos178e</target>
  </targetset>

  <!-- x86-lynx178v111 -->
  <targetset canonical="x86-lynx178v111">
    <target>x86-lynx178v111</target>
    <target>i586-elf-lynxos178v111</target>
  </targetset>

  <!-- x86-lynx5-.* -->
  <targetset canonical="x86-lynx5">
    <target>x86-lynx5</target>
    <target>x86-lynx5.*</target>
    <target>i386-elf-lynxos5.*</target>
  </targetset>

  <!-- arm-vx7 (vxworks 7) -->
  <targetset canonical="arm-vx7">
    <target>arm-vx7</target>
    <target>arm-wrs-vxworks7</target>
  </targetset>

  <!-- arm-vx7r2 (vxworks 7.2) -->
  <targetset canonical="arm-vx7r2">
    <target>arm-vx7r2</target>
    <!-- vx7r2cert platforms use the same target triplet as
         the corresponding vx7r2 (non-cert) platform.
         Add them to the same targetset as well (see TB12-012). -->
    <target>arm-vx7r2cert</target>
    <target>arm-wrs-vxworks7r2</target>
  </targetset>

  <!-- e500v2-vx7 (vxworks 7) -->
  <targetset canonical="e500v2-vx7">
    <target>e500v2-vx7</target>
    <target>e500v2-wrs-vxworks7</target>
  </targetset>

  <!-- e500v2-vx7 (vxworks 7) -->
  <targetset canonical="e500v2-vx7r2">
    <target>e500v2-vx7r2</target>
    <!-- vx7r2cert platforms use the same target triplet as
         the corresponding vx7r2 (non-cert) platform.
         Add them to the same targetset as well (see TB12-012). -->
    <target>e500v2-vx7r2cert</target>
    <target>e500v2-wrs-vxworks7r2</target>
  </targetset>

  <!-- ppc-vx7 (vxworks 7) -->
  <targetset canonical="ppc-vx7">
    <target>ppc-vx7</target>
    <target>powerpc-wrs-vxworks7</target>
  </targetset>

  <!-- ppc-vx7r2 (vxworks 7.2) -->
  <targetset canonical="ppc-vx7r2">
    <target>ppc-vx7r2</target>
    <!-- vx7r2cert platforms use the same target triplet as
         the corresponding vx7r2 (non-cert) platform.
         Add them to the same targetset as well (see TB12-012). -->
    <target>ppc-vx7r2cert</target>
    <target>powerpc-wrs-vxworks7r2</target>
  </targetset>

  <!-- ppc64-vx7 (vxworks 7) -->
  <targetset canonical="ppc64-vx7">
    <target>ppc64-vx7</target>
    <target>powerpc64-wrs-vxworks7</target>
  </targetset>

  <!-- ppc64-vx7r2 (vxworks 7.2) -->
  <targetset canonical="ppc64-vx7r2">
    <target>ppc64-vx7r2</target>
    <!-- vx7r2cert platforms use the same target triplet as
         the corresponding vx7r2 (non-cert) platform.
         Add them to the same targetset as well (see TB12-012). -->
    <target>ppc64-vx7r2cert</target>
    <target>powerpc64-wrs-vxworks7r2</target>
  </targetset>

  <!-- x86-vx7-.* (vxworks 7) -->
  <targetset canonical="x86-vx7">
    <target>x86-vx7</target>
    <target>x86-wrs-vxworks7</target>
    <target>i.86-wrs-vxworks7</target>
  </targetset>

  <!-- x86-vx7r2-.* (vxworks 7.2) -->
  <targetset canonical="x86-vx7r2">
    <target>x86-vx7r2</target>
    <!-- vx7r2cert platforms use the same target triplet as
         the corresponding vx7r2 (non-cert) platform.
         Add them to the same targetset as well (see TB12-012). -->
    <target>x86-vx7r2cert</target>
    <target>x86-wrs-vxworks7r2</target>
    <target>i.86-wrs-vxworks7r2</target>
  </targetset>

  <!-- x86_64-vx7 (vxworks 7) -->
  <targetset canonical="x86_64-vx7">
    <target>x86_64-wrs-vxworks7</target>
    <target>x86_64-vx7</target>
  </targetset>

  <!-- x86_64-vx7r2 (vxworks 7.2) -->
  <targetset canonical="x86_64-vx7r2">
    <target>x86_64-vx7r2</target>
    <!-- vx7r2cert platforms use the same target triplet as
         the corresponding vx7r2 (non-cert) platform.
         Add them to the same targetset as well (see TB12-012). -->
    <target>x86_64-vx7r2cert</target>
    <target>x86_64-wrs-vxworks7r2</target>
  </targetset>

  <!-- arm-vx6 (vxworks 6) -->
  <targetset canonical="arm-vx6">
    <target>arm-vx6</target>
    <target>arm-wrs-vxworks</target>
  </targetset>

  <!-- x86-vx6-.* (vxworks 6) -->
  <targetset canonical="x86-vx6">
    <target>x86-vx6</target>
    <target>x86-wrs-vxworks</target>
    <target>x86-vx6-windows</target>
    <target>x86-vx6-linux</target>
    <target>i.86-wrs-vxworks</target>
  </targetset>

  <targetset canonical="ppc-vx6">
    <target>powerpc-wrs-vxworks</target>
    <!-- ppc-vxw-.*  (vxworks 5) -->
    <target>ppc-vxw</target>
    <target>ppc-vxw-solaris</target>
    <target>ppc-vxw-windows</target>
    <!-- ppc-vx178b-.*  (vxworks cert) -->
    <target>ppc-vx178b</target>
    <target>ppc-vx178b-solaris</target>
    <target>ppc-vx178b-windows</target>
    <!-- ppc-vx6-.* - used as canonical target since more common -->
    <target>ppc-vx6</target>
    <target>ppc-vx6-solaris</target>
    <target>ppc-vx6-windows</target>
    <target>ppc-vx6-linux</target>
  </targetset>

  <targetset canonical="e500v2-vx6">
    <!-- e500v2-vx6-.* -->
    <target>e500v2-vx6</target>
    <target>e500v2-wrs-vxworks</target>
    <target>e500v2-vx6-solaris</target>
    <target>e500v2-vx6-windows</target>
    <target>e500v2-vx6-linux</target>
  </targetset>

  <!-- ppc-vx653-.*  (vxworks 653) -->
  <targetset canonical="ppc-vx653">
    <target>ppc-vx653</target>
    <target>ppc-vx653-solaris</target>
    <target>ppc-vx653-windows</target>
    <target>powerpc-wrs-vxworksae</target>
  </targetset>

  <!-- e500v2-vx653-.*  (vxworks 653) -->
  <targetset canonical="e500v2-vx653">
    <target>e500v2-vx653</target>
    <target>e500v2-vx653-windows</target>
    <target>e500v2-wrs-vxworksae</target>
  </targetset>

  <!-- aarch64-fastos  -->
  <targetset canonical="aarch64-fastos">
    <target>aarch64-fastos</target>
    <target>aarch64-thales-fastos</target>
  </targetset>

  <!-- aarch64-qnx  -->
  <targetset canonical="aarch64-qnx">
    <target>aarch64-qnx</target>
    <target>aarch64-nto-qnx</target>
  </targetset>

  <!-- arm-qnx  -->
  <targetset canonical="arm-qnx">
    <target>arm-qnx</target>
    <target>arm-nto-qnx</target>
  </targetset>

  <!-- aarch64-vx7 (vxworks 7) -->
  <targetset canonical="aarch64-vx7">
    <target>aarch64-vx7</target>
    <target>aarch64-wrs-vxworks7</target>
  </targetset>

  <!-- aarch64-vx7r2 (vxworks 7.2) -->
  <targetset canonical="aarch64-vx7r2">
    <target>aarch64-vx7r2</target>
    <!-- vx7r2cert platforms use the same target triplet as
         the corresponding vx7r2 (non-cert) platform.
         Add them to the same targetset as well (see TB12-012). -->
    <target>aarch64-vx7r2cert</target>
    <target>aarch64-wrs-vxworks7r2</target>
  </targetset>

  <!-- morello-vx7r2 (vxworks 7.2) -->
  <targetset canonical="morello-vx7r2">
    <target>morello-vx7r2</target>
    <!-- vx7r2cert platforms use the same target triplet as
         the corresponding vx7r2 (non-cert) platform.
         Add them to the same targetset as well (see TB12-012). -->
    <target>morello-vx7r2cert</target>
    <target>morello-wrs-vxworks7r2</target>
  </targetset>

  <!-- ppc-elf-.*  -->
  <targetset canonical="ppc-elf">
    <target>ppc-elf</target>
    <target>ppc-elf-solaris</target>
    <target>ppc-elf-windows</target>
    <target>powerpc-elf</target>
  </targetset>

  <!-- p55-elf-.*  -->
  <targetset canonical="p55-elf">
    <target>p55-elf</target>
    <target>p55-elf-windows</target>
    <target>powerpc-eabispe</target>
  </targetset>

  <!-- erc32-elf-.*  -->
  <targetset canonical="erc32-elf">
    <target>erc32-elf</target>
    <target>erc32-elf-solaris</target>
    <target>erc32-elf-linux</target>
    <target>erc32-elf.*</target>
  </targetset>

  <!-- leon-elf-.*  -->
  <targetset canonical="leon-elf">
    <target>leon-elf</target>
    <target>leon-elf-solaris</target>
    <target>leon-elf-linux</target>
    <target>leon-elf.*</target>
  </targetset>

  <!-- leon3-elf-.*  -->
  <targetset canonical="leon3-elf">
    <target>leon3-elf</target>
    <target>leon3-elf-linux</target>
    <target>leon3-elf.*</target>
  </targetset>

  <!-- arm-elf-.*  -->
  <targetset canonical="arm-elf">
    <target>arm-elf</target>
    <target>arm-elf-linux</target>
    <target>arm-eabi</target>
    <target>arm-none-eabi</target>
    <target>arm-freertos</target>
  </targetset>

  <!-- aarch64-elf-.*  -->
  <targetset canonical="aarch64-elf">
    <target>aarch64-elf</target>
    <target>aarch64-unknown-unknown-elf</target>
  </targetset>

  <!-- morello-elf-.*  -->
  <targetset canonical="morello-elf">
    <target>morello-elf</target>
    <target>morello-none-elf</target>
    <target>morello-unknown-elf</target>
    <target>morello-unknown-unknown-elf</target>
  </targetset>

  <!-- r7-elf-.*  -->
  <targetset canonical="r7-elf">
    <target>r7-elf</target>
    <target>r7-none-elf</target>
    <target>r7-unknown-elf</target>
  </targetset>

  <!-- riscv32-elf-.*  -->
  <targetset canonical="riscv32-elf">
    <target>riscv32-elf</target>
    <target>riscv32-none-elf</target>
    <target>riscv32-unknown-elf</target>
  </targetset>

  <!-- riscv64-elf-.*  -->
  <targetset canonical="riscv64-elf">
    <target>riscv64-elf</target>
    <target>riscv64-none-elf</target>
    <target>riscv64-unknown-elf</target>
  </targetset>

  <!-- x86-elf-.*  -->
  <targetset canonical="x86-elf">
    <target>x86-elf</target>
    <target>i686-elf</target>
  </targetset>

  <!-- avr -->
  <targetset canonical="avr-elf">
    <target>avr-elf</target>
    <target>avr-elf-windows</target>
    <target>avr</target>
  </targetset>

  <!-- ia64-openvms -->
  <targetset canonical="ia64-openvms">
    <target>ia64-openvms</target>
    <target>ia64-.*-openvms</target>
  </targetset>

  <!-- arm-android  -->
  <targetset canonical="arm-android">
    <target>arm-android</target>
    <target>arm-linux-androideabi</target>
  </targetset>

  <!-- aarch64-android  -->
  <targetset canonical="aarch64-android">
    <target>aarch64-android</target>
    <target>aarch64-linux-android</target>
  </targetset>

  <!-- aarch64-pikeos5  -->

  <targetset canonical="aarch64-pikeos5">
    <target>aarch64-pikeos5</target>
    <target>aarch64-.*-pikeos5</target>
  </targetset>

  <!-- arm-pikeos  -->

  <targetset canonical="arm-pikeos">
    <target>arm-pikeos</target>
    <target>arm-.*-pikeos</target>
  </targetset>

  <!-- arm-pikeos4.2  -->

  <targetset canonical="arm-pikeos4.2">
    <target>arm-pikeos4.2</target>
    <target>arm-.*-pikeos4</target>
  </targetset>

  <!-- arm-pikeos5  -->

  <targetset canonical="arm-pikeos5">
    <target>arm-pikeos5</target>
    <target>arm-.*-pikeos5</target>
  </targetset>

  <!-- ppc-pikeos  -->

  <targetset canonical="ppc-pikeos">
    <target>ppc-pikeos</target>
    <target>powerpc-.*-pikeos</target>
  </targetset>

  <!-- ppc-pikeos5  -->

  <targetset canonical="ppc-pikeos5">
    <target>ppc-pikeos5</target>
    <target>powerpc-.*-pikeos5</target>
  </targetset>

  <!-- x86-pikeos  -->
  <targetset canonical="x86-pikeos">
    <target>x86-pikeos</target>
    <target>i.86-.*-pikeos</target>
  </targetset>

  <!-- C  -->
  <targetset canonical="c">
    <target>c</target>
    <target>ccg</target>
  </targetset>

  <targetset canonical="codepeer">
    <target>gnatsas</target>
    <target>codepeer</target>
  </targetset>

</gprconfig>
