#
# SPDX-License-Identifier: FSFAP
#
# This document is used to generate the platform triplets supported by AppStream.
# AppStream platform triplets are based on normalized GNU triplets,
# as used for Debian's multiarch support[1]. They consist of strictly three parts:
#   <architecture>-<os-kernel>-<os-environment>
# Parts which do not matter for a binary can be substituted with "any".
#
# Valid triplets are for example `x86_64-linux-gnu`, `x86_64-windows-msvc`,
# `aarch64-linux-gnu_ilp32`, `wasm64-any-any` or `any-linux-gnu`
#
# This document is used for validation of triplets in AppStream's validator, and is
# not an exhaustive list. Please file an issue if you are missing an entry.
#
# [1]: https://wiki.debian.org/Multiarch/Tuples#Used_solution

# Known architectures
architectures:
- arm         # ARM (little endian): arm, armv.*, xscale
- armeb       # ARM (big endian): armeb
- aarch64     # AArch64 (little endian): aarch64
- aarch64_be  # AArch64 (big endian): aarch64_be
- aarch64_32  # AArch64 (little endian) ILP32: aarch64_32
- alpha       # Alpha, Tru64 Calling Standard
- hppa        # PA-RISC
- m68k        # MC68000
- mips        # MIPS: mips, mipsallegrex, mipsr6
- mipsel      # MIPSEL: mipsel, mipsallegrexe, mipsr6el
- mips64      # MIPS64: mips64, mips64r6, mipsn32, mipsn32r6
- mips64el    # MIPS64EL: mips64el, mips64r6el, mipsn32el, mipsn32r6el
- msp430      # MSP430: msp430
- powerpc     # Powerpc (PPC)
- powerpc64   # PPC64: powerpc64, ppu
- powerpc64le # PPC64LE: powerpc64le
- riscv32     # RISC-V (32-bit): riscv32
- riscv64     # RISC-V (64-bit): riscv64
- sparc       # Sparc: sparc
- sparc64     # SPARCv9 psABI
- i386        # X86: i[3-9]86
- x86_64      # X86-64: amd64, x86_64
- wasm32      # WebAssembly with 32-bit pointers
- wasm64      # WebAssembly with 64-bit pointers

# OS / Kernels
os_kernels:
- linux       # Linux
- darwin      # Darwin (macOS kernel)
- macos       # macOS / MacOSX
- dragonfly   # DragonFly (BSD variant)
- freebsd     # FreeBSD (OS)
- kfreebsd    # FreeBSD (kernel)
- netbsd      # NetBSD
- openbsd     # OpenBSD
- windows     # Windows
- haiku       # Haiku

# OS / Environments
os_environments:
- gnu         # The GNU Operating System
- gnu_ilp32   # GNU, x32 ABI
- gnueabi     # GNU, ARM EABI, soft-float
- gnueabihf   # GNU, ARM EABI, hard-float
- gnuabin32   # GNU, MIPS n32 ABI
- gnuabi64    # GNU, MIPS 64-bit ABI
- android     # The Android OS
- musl        # Musl libc
- msvc        # MS ABI, MSVCRT environment as defined by Microsoft
- cygwin      # Cygwin environment by Cygnus
