From 99d0ff1311472007bd5776d5e2ae6480a180033d Mon Sep 17 00:00:00 2001 From: Amanda Butler Date: Tue, 20 Dec 2016 11:44:48 -0600 Subject: [PATCH] Delete Toolchain_Profiles.md Delete page because duplicate exists in Handbook --- docs/Toolchain_Profiles.md | 72 -------------------------------------- 1 file changed, 72 deletions(-) delete mode 100644 docs/Toolchain_Profiles.md diff --git a/docs/Toolchain_Profiles.md b/docs/Toolchain_Profiles.md deleted file mode 100644 index c310b8c19f..0000000000 --- a/docs/Toolchain_Profiles.md +++ /dev/null @@ -1,72 +0,0 @@ -# Toolchain Profiles User Perspective - -A Toolchain or build system Profile is a set of flags that is garenteed to be passed to the underlieing compiler suite. -These flags are stored in a JSON file that may be merged with other JSON files of the same structure. - -## JSON Toolchain Profile Format - -The JSON object that represents a Toolchain Profile is a dict mapping from Toolchains, like `GCC_ARM`, to their flags, like `-O3`. -The structure is as follows: Each toolchain supported by a Toolchain Profile has an dict in the root dict. -This dict contains a mapping from a flag type to a list of flags that should be passed the corresponding part of the compiler suite. -The required flag types are: - -| Key | Description | -|:---------|:--------------------------------------| -| `c` | Flags for the C Compiler | -| `cxx` | Flags for the C++ Compiler | -| `common` | Flags for both the C and C++ Compilers| -| `asm` | Flags for the Assembler | - -## Example - -An example of a Toolchain Profile is given below: -```json -{ - "GCC_ARM": { - "common": ["-c", "-Wall", "-Wextra", - "-Wno-unused-parameter", "-Wno-missing-field-initializers", - "-fmessage-length=0", "-fno-exceptions", "-fno-builtin", - "-ffunction-sections", "-fdata-sections", "-funsigned-char", - "-MMD", "-fno-delete-null-pointer-checks", - "-fomit-frame-pointer", "-Os"], - "asm": ["-x", "assembler-with-cpp"], - "c": ["-std=gnu99"], - "cxx": ["-std=gnu++98", "-fno-rtti", "-Wvla"], - "ld": ["-Wl,--gc-sections", "-Wl,--wrap,main", "-Wl,--wrap,_malloc_r", - "-Wl,--wrap,_free_r", "-Wl,--wrap,_realloc_r", - "-Wl,--wrap,_calloc_r", "-Wl,--wrap,exit", "-Wl,--wrap,atexit"] - }, - "ARM": { - "common": ["-c", "--gnu", "-Otime", "--split_sections", - "--apcs=interwork", "--brief_diagnostics", "--restrict", - "--multibyte_chars", "-O3"], - "asm": [], - "c": ["--md", "--no_depend_system_headers", "--c99", "-D__ASSERT_MSG"], - "cxx": ["--cpp", "--no_rtti", "--no_vla"], - "ld": [] - }, - "IAR": { - "common": [ - "--no_wrap_diagnostics", "non-native end of line sequence", "-e", - "--diag_suppress=Pa050,Pa084,Pa093,Pa082", "-Oh"], - "asm": [], - "c": ["--vla"], - "cxx": ["--guard_calls", "--no_static_destruction"], - "ld": ["--skip_dynamic_initialization", "--threaded_lib"] - } -} -``` - -From this Toolchain profile, we can tell that: - - `GCC_ARM`, `ARM`, and `IAR` compiler suites are supported. - - The `ARM` C and C++ Compilers will be using optimization level `-O3` - - The `IAR` linker will skip dynamic initialization - - etc. - -# Toolchain Profile API Perspective - -The Toolchains no longer take in an optional argument, `build_profile`, that will contain a map from flag types to lists of flags. -This looks exactly the same in python as it does in the JSON format above. -The meaning of the flags, and which ones are required is the same as the User Perspective -A developer using the API must parse the User provided files themselves and extract the appropriate sub-dict from the file afterwards. -A convienence function that does this for a developer is `tools.options.extract_profile` and will call args_error when a Toolchain Profile JSON file does not provide flags for the selected Toolchain.