blob: 9842bf164dfa8a2ceea0b2cde0a5e566ca9a119b [file] [log] [blame]
#
# Copyright 2017, Data61, CSIRO (ABN 41 687 119 230)
#
# SPDX-License-Identifier: BSD-2-Clause
#
cmake_minimum_required(VERSION 3.7.2)
project(libsel4debug C ASM)
set(configure_string "")
config_string(
LibSel4DebugAllocBufferEntries
LIBSEL4DEBUG_ALLOC_BUFFER_ENTRIES
"Pointer tracking buffer entries \
Size of buffer to use for tracking memory allocations within \
instrumentation. This setting has no effect if you are not using the \
allocation instrumentation. Setting this value to 0 disables pointer \
tracking."
DEFAULT
0
UNQUOTE
)
config_choice(
LibSel4DebugFunctionInstrumentation
LIB_SEL4_DEBUG_FUNCTION_INSTRUMENTAITON
"Function instrumentation to apply to function calls. This setting will only have \
an effect when your CFLAGS include -finstrument-functions, in which \
case __cyg_profile_func_enter will be called on every function entry \
and __cyg_profile_func_exit will be called on every function exit. The \
value of this setting determines the implementation of \
__cyg_profile_func_enter and __cyg_profile_func_exit supplied by this \
library. Regardless of the option you select, you can always override \
the implementation by providing your own in your application. \
none -> \
No implementation of __cyg_profile_func_enter and \
__cyg_profile_func_exit are provided. \
printf -> \
Print entry and exit of every function call. This option is useful for \
a very coarse and noisy description of what your code is doing. \
backtrace -> \
Track function calls for the purposes of a backtrace. You will need to \
enable this option if you want to retrieve programmatic backtraces."
"none;LibSel4DebugFunctionInstrumentationNone;LIBSEL4DEBUG_FUNCTION_INSTRUMENTATION_NONE"
"printf;LibSel4DebugFunctionInstrumentationPrintf;LIBSEL4DEBUG_FUNCTION_INSTRUMENTATION_TRACE"
"backtrace;LibSel4DebugFunctionInstrumentationBacktrace;LIBSEL4DEBUG_FUNCTION_INSTRUMENTATION_BACKTRACE"
)
mark_as_advanced(LibSel4DebugAllocBufferEntries LibSel4DebugFunctionInstrumentation)
add_config_library(sel4debug "${configure_string}")
file(
GLOB
deps
src/*.c
src/sel4_arch/${KernelSel4Arch}/*.c
src/plat/${KernelPlatform}/*.c
src/sel4_arch/${KernelSel4Arch}/*.S
)
list(SORT deps)
add_library(sel4debug STATIC EXCLUDE_FROM_ALL ${deps})
target_include_directories(
sel4debug
PUBLIC include "arch_include/${KernelArch}" sel4_arch_include/${KernelSel4Arch}
)
target_link_libraries(sel4debug PUBLIC muslc sel4 utils PRIVATE sel4debug_Config sel4_autoconf)