blob: 5dc65a9a82d41af5cf5181496b0eb2afc7dc2ac1 [file] [log] [blame]
#
# Copyright 2018, 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(libsel4vmm C)
set(configure_string "")
config_option(LibSel4VMMVESAFrameBuffer VMM_VESA_FRAMEBUFFER "Expose VESA Frame Buffer
Support for mapping the VESA frame buffer frames into the guest OS.
This option is useful for working around non-working video drivers otherwise,
due to missing features or such." DEFAULT ON)
config_option(LibSel4VMMDebug LIB_VMM_DEBUG "Enable VMM debug output" DEFAULT ON)
config_string(LibSel4VMMDebugLevel LIB_VMM_DEBUG_LEVEL "VMM Debug Output
Debug verbosity level.
5 levels for debug messages:
0: Always printout
1: Main entry point in a module
2: 2nd level entry point in a module
3: Main entry point of a function
4: Details inside a function" DEFAULT 3 UNQUOTE)
config_option(
LibSel4VMMVMXTimerDebug
LIB_VMM_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
)
config_string(
LibSel4VMMVMXTimerTimeout
LIB_VMM_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
"LibSel4VMMVMXTimerDebug"
)
config_option(LibSel4VMMIgnoreEPTViolation VMM_IGNORE_EPT_VIOLATION "Ignore EPT Violations
If set then EPT faults will be ignored and the guest will be resumed" DEFAULT OFF)
mark_as_advanced(
LibSel4VMMVESAFrameBuffer
LibSel4VMMDebug
LibSel4VMMDebugLevel
LibSel4VMMVMXTimerDebug
LibSel4VMMVMXTimerTimeout
LibSel4VMMIgnoreEPTViolation
)
add_config_library(sel4vmm "${configure_string}")
add_compile_options(-std=gnu99)
file(
GLOB
sources
src/vmm/*.c
src/platform/*.c
src/driver/*.c
src/manager/*.c
src/processor/*.c
)
add_library(sel4vmm STATIC EXCLUDE_FROM_ALL ${sources})
target_include_directories(sel4vmm PUBLIC include)
target_link_libraries(
sel4vmm
PUBLIC
muslc
sel4
sel4utils
pci
sel4allocman
ethdrivers
platsupport
sel4vmm_Config
sel4_autoconf
)