{
    "GCC_ARM": {
        "common": ["-c", "-Wall", "-Wextra",
                   "-Wno-unused-parameter", "-Wno-missing-field-initializers",
                   "-fmessage-length=0", "-fno-exceptions",
                   "-ffunction-sections", "-fdata-sections", "-funsigned-char",
                   "-MMD", "-fno-delete-null-pointer-checks",
                   "-fomit-frame-pointer", "-Ofast", "-DNDEBUG", "-g"],
        "asm": ["-x", "assembler-with-cpp"],
        "c": ["-std=gnu11"],
        "cxx": ["-std=gnu++14", "-fno-rtti", "-Wvla"],
        "ld": ["-Wl,--gc-sections", "-Wl,--wrap,main", "-Wl,--wrap,_malloc_r",
               "-Wl,--wrap,_free_r", "-Wl,--wrap,_realloc_r", "-Wl,--wrap,_memalign_r",
               "-Wl,--wrap,_calloc_r", "-Wl,--wrap,exit", "-Wl,--wrap,atexit",
               "-Wl,-n"]
    },
    "ARMC6": {
        "common": ["-c", "--target=arm-arm-none-eabi", "-mthumb", "-Omax",
                   "-Wno-armcc-pragma-push-pop", "-Wno-armcc-pragma-anon-unions",
                   "-Wno-reserved-user-defined-literal", "-Wno-deprecated-register",
                   "-DMULADDC_CANNOT_USE_R7", "-fdata-sections",
                   "-fno-exceptions", "-MMD", "-D_LIBCPP_EXTERN_TEMPLATE(...)=",
                   "-fshort-enums", "-fshort-wchar", "-DNDEBUG"],
        "asm": [],
        "c": ["-D__ASSERT_MSG", "-std=gnu11"],
        "cxx": ["-fno-rtti", "-std=gnu++14"],
        "ld": ["--show_full_path", "--any_contingency", "--lto",
               "--keep=os_cb_sections"]
    },
    "ARM": {
        "common": ["-c", "--gnu", "-Ospace", "--split_sections",
                   "--apcs=interwork", "--brief_diagnostics", "--restrict",
                   "--multibyte_chars", "-O3", "-DNDEBUG"],
        "asm": [],
        "c": ["--md", "--no_depend_system_headers", "--c99", "-D__ASSERT_MSG"],
        "cxx": ["--cpp11", "--no_rtti", "--no_vla"],
        "ld": ["--show_full_path", "--any_contingency", "--keep=os_cb_sections"]
    },
    "uARM": {
        "common": ["-c", "--gnu", "-Ospace", "--split_sections",
                   "--apcs=interwork", "--brief_diagnostics", "--restrict",
                   "--multibyte_chars", "-O3", "-D__MICROLIB",
                   "--library_type=microlib", "-DMBED_RTOS_SINGLE_THREAD", "-DNDEBUG"],
        "asm": [],
        "c": ["--md", "--no_depend_system_headers", "--c99", "-D__ASSERT_MSG"],
        "cxx": ["--cpp11", "--no_rtti", "--no_vla"],
        "ld": ["--library_type=microlib"]
    },
    "IAR": {
        "common": [
            "--no_wrap_diagnostics", "-e",
            "--diag_suppress=Pa050,Pa084,Pa093,Pa082,Pe540", "-Ohz", "-DNDEBUG", "--enable_restrict"],
        "asm": [],
        "c": ["--vla", "--diag_suppress=Pe546"],
        "cxx": ["--guard_calls", "--no_static_destruction"],
        "ld": ["--skip_dynamic_initialization", "--threaded_lib"]
    }
}
