|  | # | 
|  | # 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) |