set(incs
	include
	)


if(CONFIG_FREERTOS)
	list(APPEND incs freertos)

	if(CONFIG_FREERTOS_SMP)
		set(srcs
			freertos/v10/rtos_pub_smp.c
			freertos/v10/rtos_debug.c
			freertos/mem_arch.c
			platform_stub.c
			freertos/str_arch.c
		)
	endif()

	if(CONFIG_FULLY_HOSTED OR CONFIG_MEM_MGMT)
		list(APPEND srcs freertos/mmgmt.c)
	endif()

	if(CONFIG_FREERTOS_POSIX)
		list(APPEND incs
					freertos/posix/include
					freertos/posix/include/private
					freertos/posix/freertos_impl/include
					freertos/posix/freertos_impl/include/portable
		)
		list(APPEND srcs
					freertos/posix/freertos_impl/source/FreeRTOS_POSIX_timer.c
					freertos/posix/freertos_impl/source/FreeRTOS_POSIX_pthread_mutex.c
					freertos/posix/freertos_impl/source/FreeRTOS_POSIX_sched.c
					freertos/posix/freertos_impl/source/FreeRTOS_POSIX_pthread_barrier.c
					freertos/posix/freertos_impl/source/FreeRTOS_POSIX_unistd.c
					freertos/posix/freertos_impl/source/FreeRTOS_POSIX_pthread.c
					freertos/posix/freertos_impl/source/FreeRTOS_POSIX_utils.c
					freertos/posix/freertos_impl/source/FreeRTOS_POSIX_pthread_cond.c
					freertos/posix/freertos_impl/source/FreeRTOS_POSIX_semaphore.c
					freertos/posix/freertos_impl/source/FreeRTOS_POSIX_mqueue.c
					freertos/posix/freertos_impl/source/FreeRTOS_POSIX_clock.c
		)
	endif()

	list(APPEND srcs
		freertos/posix/freertos_impl/source/pthread_local_storage.c
	)

	if(CONFIG_FREERTOS_TRACE)
		list(APPEND incs
					freertos/trace/include
					freertos/trace/config
		)
		list(APPEND srcs
					freertos/trace/trcKernelPort.c
					freertos/trace/trcSnapshotRecorder.c
		)
	endif()

elseif(CONFIG_NON_OS)
	list(APPEND incs non_os)
	set(srcs
		non_os/rtos_pub.c
		non_os/mem_arch.c
		non_os/heap_4.c
		non_os/port.c
		non_os/str_arch.c
	)
	set_source_files_properties("${CMAKE_CURRENT_LIST_DIR}/non_os/port.c" PROPERTIES COMPILE_FLAGS "-marm")
endif()

	list(APPEND srcs rtos_ext.c)

armino_component_register(SRCS "${srcs}" INCLUDE_DIRS "${incs}" REQUIRES cmsis PRIV_REQUIRES bk_common)

