| # |
| # Copyright 2019, 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.8.2) |
| |
| project(libsel4vm C) |
| |
| set(configure_string "") |
| |
| add_compile_options(-std=gnu99) |
| |
| config_option( |
| LibSel4VMDeferMemoryMap |
| LIB_SEL4VM_DEFER_MEMORY_MAP |
| "Defer mappings of memory reservations until faulted on" |
| DEFAULT |
| OFF |
| ) |
| config_option(LibSel4VMVMXTimerDebug LIB_VM_VMX_TIMER_DEBUG "Use VMX Pre-Emption timer for debugging |
| Will cause a regular vmexit to happen based on VMX pre-emption |
| timer. At each exit the guest state will be printed out. This |
| can be used to aid debugging when running a guest causes nothing |
| to appear to happen" DEFAULT OFF DEPENDS "KernelArchX86") |
| |
| config_string( |
| LibSel4VMVMXTimerTimeout |
| LIB_VM_VMX_TIMER_TIMEOUT |
| "Cycles between VMX timer pre-emptions |
| Cycles between timer exits. Time spent loading the VMCS context |
| count, so setting this too low may result in the guest making |
| no progress" |
| DEFAULT |
| 4000 |
| DEPENDS |
| "LibSel4VMVMXTimerDebug" |
| ) |
| |
| mark_as_advanced(LibSel4VMDeferMemoryMap LibSel4VMVMXTimerDebug LibSel4VMVMXTimerTimeout) |
| |
| add_config_library(sel4vm "${configure_string}") |
| |
| file( |
| GLOB |
| sources |
| src/*.c |
| src/arch/${KernelArch}/*.c |
| src/arch/${KernelArch}/vgic/*.c |
| src/arch/${KernelArch}/i8259/*.c |
| src/arch/${KernelArch}/processor/*.c |
| src/sel4_arch/${KernelSel4Arch}/*.c |
| ) |
| |
| add_library(sel4vm STATIC EXCLUDE_FROM_ALL ${sources}) |
| target_include_directories( |
| sel4vm |
| PUBLIC include arch_include/${KernelArch} sel4_arch_include/${KernelSel4Arch} |
| ) |
| target_include_directories( |
| sel4vm |
| PRIVATE src src/arch/${KernelArch} src/sel4_arch/${KernelSel4Arch} |
| ) |
| target_link_libraries( |
| sel4vm |
| muslc |
| sel4 |
| sel4simple |
| utils |
| sel4utils |
| sel4vka |
| sel4vspace |
| platsupport |
| sel4_autoconf |
| sel4vm_Config |
| ) |