| # | 
 | # Copyright 2017, Data61 | 
 | # Commonwealth Scientific and Industrial Research Organisation (CSIRO) | 
 | # ABN 41 687 119 230. | 
 | # | 
 | # This software may be distributed and modified according to the terms of | 
 | # the BSD 2-Clause license. Note that NO WARRANTY is provided. | 
 | # See "LICENSE_BSD2.txt" for details. | 
 | # | 
 | # @TAG(DATA61_BSD) | 
 | # | 
 |  | 
 | 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) |