# This test is supposed to ensure that the regex in _corrosion_parse_platform works as expected.
cmake_minimum_required(VERSION 3.15)
project(test_project VERSION 0.1.0)
include(../../test_header.cmake)

# Todo: Test if the output matches expectations.
_corrosion_parse_target_triple("../../blah/x86_64-unknown-custom-gnu.json" arch vendor os env)
_corrosion_parse_target_triple("x86_64-unknown-custom-gnu.json" arch vendor os env)
_corrosion_parse_target_triple("/path/to/x86_64-unknown-custom-musl.json" arch vendor os env)
_corrosion_parse_target_triple("../../blah/x86_64-custom_os.json" arch vendor os env)

# List of builtin targets aquired via `rustup target list` with rust 1.64 on Linux.
set(rustup_shipped_targets
        "aarch64-apple-darwin"
        "aarch64-apple-ios"
        "aarch64-apple-ios-sim"
        "aarch64-fuchsia"
        "aarch64-linux-android"
        "aarch64-pc-windows-msvc"
        "aarch64-unknown-linux-gnu"
        "aarch64-unknown-linux-musl"
        "aarch64-unknown-none"
        "aarch64-unknown-none-softfloat"
        "arm-linux-androideabi"
        "arm-unknown-linux-gnueabi"
        "arm-unknown-linux-gnueabihf"
        "arm-unknown-linux-musleabi"
        "arm-unknown-linux-musleabihf"
        "armebv7r-none-eabi"
        "armebv7r-none-eabihf"
        "armv5te-unknown-linux-gnueabi"
        "armv5te-unknown-linux-musleabi"
        "armv7-linux-androideabi"
        "armv7-unknown-linux-gnueabi"
        "armv7-unknown-linux-gnueabihf"
        "armv7-unknown-linux-musleabi"
        "armv7-unknown-linux-musleabihf"
        "armv7a-none-eabi"
        "armv7r-none-eabi"
        "armv7r-none-eabihf"
        "asmjs-unknown-emscripten"
        "i586-pc-windows-msvc"
        "i586-unknown-linux-gnu"
        "i586-unknown-linux-musl"
        "i686-linux-android"
        "i686-pc-windows-gnu"
        "i686-pc-windows-msvc"
        "i686-unknown-freebsd"
        "i686-unknown-linux-gnu"
        "i686-unknown-linux-musl"
        "mips-unknown-linux-gnu"
        "mips-unknown-linux-musl"
        "mips64-unknown-linux-gnuabi64"
        "mips64-unknown-linux-muslabi64"
        "mips64el-unknown-linux-gnuabi64"
        "mips64el-unknown-linux-muslabi64"
        "mipsel-unknown-linux-gnu"
        "mipsel-unknown-linux-musl"
        "nvptx64-nvidia-cuda"
        "powerpc-unknown-linux-gnu"
        "powerpc64-unknown-linux-gnu"
        "powerpc64le-unknown-linux-gnu"
        "riscv32i-unknown-none-elf"
        "riscv32imac-unknown-none-elf"
        "riscv32imc-unknown-none-elf"
        "riscv64gc-unknown-linux-gnu"
        "riscv64gc-unknown-none-elf"
        "riscv64imac-unknown-none-elf"
        "s390x-unknown-linux-gnu"
        "sparc64-unknown-linux-gnu"
        "sparcv9-sun-solaris"
        "thumbv6m-none-eabi"
        "thumbv7em-none-eabi"
        "thumbv7em-none-eabihf"
        "thumbv7m-none-eabi"
        "thumbv7neon-linux-androideabi"
        "thumbv7neon-unknown-linux-gnueabihf"
        "thumbv8m.base-none-eabi"
        "thumbv8m.main-none-eabi"
        "thumbv8m.main-none-eabihf"
        "wasm32-unknown-emscripten"
        "wasm32-unknown-unknown"
        "wasm32-wasi"
        "x86_64-apple-darwin"
        "x86_64-apple-ios"
        "x86_64-fortanix-unknown-sgx"
        "x86_64-fuchsia"
        "x86_64-linux-android"
        "x86_64-pc-solaris"
        "x86_64-pc-windows-gnu"
        "x86_64-pc-windows-msvc"
        "x86_64-sun-solaris"
        "x86_64-unknown-freebsd"
        "x86_64-unknown-illumos"
        "x86_64-unknown-linux-gnu"
        "x86_64-unknown-linux-gnux32"
        "x86_64-unknown-linux-musl"
        "x86_64-unknown-netbsd"
        "x86_64-unknown-none"
        "x86_64-unknown-redox"
)
set(other_targets riscv32imc-esp-espidf xtensa-esp32s3-none-elf)

foreach(target ${rustup_shipped_targets} ${other_targets})
    _corrosion_parse_target_triple("${target}"  arch vendor os env)
endforeach()
