<commit_before>## CMake for Mbed OS

Until further notice, CMake for Mbed OS is still in development. 

Application profile selection (`bare metal` or `full`), printf library selection (`minimal-printf` or `std`), C library selection (`small` or `std`) and other features that require altering compiler/linker command line options are not yet supported.
The full profile with the standard printf and C library are selected by default.

### Supported targets

Only a limited set of targets is supported at the moment.

These targets should work:
- K64F 
- DISCO_L475VG_IOT01A 
- NRF52840_DK 
- WIO_3G
- K66F

### Supported toolchains

Arm Compiler 6 and GNU Arm Embedded toolchains are supported.

### Examples

Supported examples can be identified by the presence of a top level `CMakelists.txt` input source file. 

### Known issues

- ARMClang6: the assembler does not include definitions. It will be fixed in the upcoming release (>3.18.2). Reference: https://gitlab.kitware.com/cmake/cmake/-/issues/21148#note_823305
- Ninja: ARMClang6 response files require unix paths on Windows. Reference: https://gitlab.kitware.com/cmake/cmake/-/issues/21093
<commit_msg>CMake: Add background and future plans to README (#13589)<commit_after>## CMake for Mbed OS

In order to [replace the traditional Mbed tools](https://os.mbed.com/blog/entry/Introducing-the-new-Mbed-Tools/), we are adding CMake support to allow the generation of build systems instructions to build Mbed OS as a library.

This is still at the experimental stage and still in development. It does not yet completely replace our current build tools. If you find a bug, please report it or raise a pull request as contributions are welcome!

Mbed OS is built as collection of all libraries supported by a given Mbed target. Application project executables can be linked with the monolithic `mbed-os` library to build Mbed applications.

We are currently working to break down the `mbed-os` library into several individual libraries that applications can selectively choose to include depending on their needs.

The following features are not yet supported and will be progressively added:
* Application profile selection (`bare metal`)
* C library selection (`small`)
* `s/f/v/printf` library selection (`minimal-printf`)
* Other features that require altering compiler/linker command line options

The full profile with the standard printf and C library are selected by default.

### Supported targets

Only a limited set of targets is supported at the moment.

The following targets are supported:
- DISCO_L475VG_IOT01A 
- K64F 
- K66F
- NRF52840_DK 
- WIO_3G

### Supported toolchains

Arm Compiler 6 and GNU Arm Embedded toolchains are supported.

### Examples

Supported examples can be identified by the presence of a top level `CMakelists.txt` input source file.

### Known issues

- ARMClang6: the assembler does not include definitions. It will be fixed in the upcoming release (>3.18.2). Reference: https://gitlab.kitware.com/cmake/cmake/-/issues/21148#note_823305
- Ninja: ARMClang6 response files require unix paths on Windows. Reference: https://gitlab.kitware.com/cmake/cmake/-/issues/21093

{'fraction_non_alphanumeric': 0.06921618204804046, 'fraction_numerical': 0.025600505689001265, 'mean_word_length': 4.513937282229965, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 5, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5658322', 'n_tokens_mistral': 935, 'n_tokens_neox': 853, 'n_words': 410}