zephyr/kernel/CMakeLists.txt
Peter Mitsis 82c3d531a6 kernel: move thread usage routines to own file
Moves the CONFIG_SCHED_THREAD_USAGE block of code out of sched.c
into its own file. Not only do they employ their own private
spin lock, but it is expected that additional usage routines will be
added in the future.

Signed-off-by: Peter Mitsis <peter.mitsis@intel.com>
2022-01-10 10:38:06 -05:00

120 lines
2.7 KiB
CMake

# SPDX-License-Identifier: Apache-2.0
# kernel is a normal CMake library and not a zephyr_library because it
# should not be --whole-archive'd
# If a pre-built static library containing kernel code exists in
# this directory, libkernel.a, link it with the application code
# instead of building from source.
zephyr_library_get_current_dir_lib_name(${ZEPHYR_BASE} libkernel_stem)
set(libkernel ${CMAKE_CURRENT_SOURCE_DIR}/lib${libkernel_stem}${CMAKE_STATIC_LIBRARY_SUFFIX})
unset(libkernel_stem)
if(EXISTS ${libkernel})
add_library(kernel INTERFACE)
target_link_libraries(kernel INTERFACE ${libkernel})
else()
list(APPEND kernel_files
main_weak.c
banner.c
device.c
errno.c
fatal.c
init.c
kheap.c
mem_slab.c
thread.c
version.c
)
if(CONFIG_MULTITHREADING)
list(APPEND kernel_files
idle.c
mailbox.c
msg_q.c
mutex.c
pipes.c
queue.c
sem.c
stack.c
system_work_q.c
work.c
sched.c
condvar.c
)
if(CONFIG_SMP)
list(APPEND kernel_files
smp.c)
endif()
endif()
if(CONFIG_XIP)
list(APPEND kernel_files
xip.c)
endif()
if(CONFIG_DEMAND_PAGING_STATS)
list(APPEND kernel_files
paging/statistics.c)
endif()
add_library(kernel ${kernel_files})
# Kernel files has the macro __ZEPHYR_SUPERVISOR__ set so that it
# optimizes the code when userspace is enabled.
set_target_properties(
kernel
PROPERTIES
COMPILE_DEFINITIONS
__ZEPHYR_SUPERVISOR__
)
target_sources_ifdef(CONFIG_STACK_CANARIES kernel PRIVATE compiler_stack_protect.c)
target_sources_ifdef(CONFIG_SYS_CLOCK_EXISTS kernel PRIVATE timeout.c timer.c)
target_sources_ifdef(CONFIG_ATOMIC_OPERATIONS_C kernel PRIVATE atomic_c.c)
target_sources_ifdef(CONFIG_MMU kernel PRIVATE mmu.c)
target_sources_ifdef(CONFIG_POLL kernel PRIVATE poll.c)
target_sources_ifdef(CONFIG_EVENTS kernel PRIVATE events.c)
target_sources_ifdef(CONFIG_SCHED_THREAD_USAGE kernel PRIVATE usage.c)
if(${CONFIG_KERNEL_MEM_POOL})
target_sources(kernel PRIVATE mempool.c)
endif()
# The last 2 files inside the target_sources_ifdef should be
# userspace_handler.c and userspace.c. If not the linker would complain.
# This order has to be maintained. Any new file should be placed
# above these 2 files.
target_sources_ifdef(
CONFIG_USERSPACE
kernel PRIVATE
futex.c
mem_domain.c
userspace_handler.c
userspace.c
)
if(CONFIG_CACHE_MANAGEMENT AND CONFIG_USERSPACE)
target_sources(kernel PRIVATE cache_handlers.c)
endif()
target_include_directories(kernel PRIVATE
${ZEPHYR_BASE}/kernel/include
${ARCH_DIR}/${ARCH}/include
)
target_link_libraries(kernel zephyr_interface)
endif()
add_dependencies(kernel zephyr_generated_headers)
unset(libkernel)