tree a11c1c833c7a7fe11d63d8964a22d572d2ab665d
parent dca4f80a6be40f77848749ea18efd92b9d8ef66a
author yhsb2k <yhsb2k@outlook.com> 1642710904 +0200
committer GitHub <noreply@github.com> 1642710904 -0800
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJh6cd4CRBK7hj4Ov3rIwAAluwIADkCy+WxO8s6goa0JhK45302
 pWmUtA9AECWE6Sw6elbPppGpvuZarEsRQSB4GP4+6CjU7LX96bsVzgLzMEK5ca55
 +KIbUu9iEOQ6KMI2ywV8Vin/adc3QlYtWgpT5fXQp/VQxlsUHI3wWcP7sbL1TTiL
 bsGNDw1avxv4dYfYeoMndNokGt2burJT4btldsnhNAgSY4PwXopWgUtLRhLguq6p
 3adGc0i7mTSFnEFHnWbUUC1VD9EIMzc06ldflwKe3a9Lm2WxZWMOKDYMc7883z2j
 2vwZtCrRq0s8MopcUBEe4DrnXcxvA+vADp1sHbVDYtMi7UhIfs1/BUAxrDZQzC8=
 =39D1
 -----END PGP SIGNATURE-----
 

Add CMake build (#421)

* Add CMake build

Allows to build and link FreeRTOS using CMake build system.
From top-level project it looks like this:

set(FREERTOS_PORT_GCC_ARM_CM4F ON)
set(FREERTOS_CONFIG_FILE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} CACHE STRING "")
add_subdirectory(third_party/FreeRTOS-Kernel)

Where FREERTOS_PORT_GCC_ARM_CM4F is FreeRTOS port name.
freertos is target name, which can be used in target_link_libraries()

* Add feature to set custom heap source file

Example how to set it from top-level project:
set(FREERTOS_HEAP ${CMAKE_CURRENT_LIST_DIR}/path_to/my_heap.c CACHE STRING "")

* Set cmake_minimum_required to 3.15

* Fail build when FREERTOS_CONFIG_FILE_DIRECTORY not set

* Rename library to freertos_kernel

* Rework FREERTOS_PORT option to act as combobox

* Use freertos_kernel_port cmake target

* Split port sources multiline

Co-authored-by: Aniruddha Kanhere <60444055+AniruddhaKanhere@users.noreply.github.com>
Co-authored-by: Paul Bartell <pbartell@amazon.com>