libsel4vmm: cmake build definitions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cd6f8b5..f00e268 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,3 +25,4 @@
 add_subdirectory(libsel4sync)
 add_subdirectory(libsel4muslcsys)
 add_subdirectory(libsel4bench)
+add_subdirectory(libsel4vmm)
diff --git a/libsel4vmm/CMakeLists.txt b/libsel4vmm/CMakeLists.txt
new file mode 100644
index 0000000..700c39b
--- /dev/null
+++ b/libsel4vmm/CMakeLists.txt
@@ -0,0 +1,78 @@
+#
+# 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
+)
+
+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 Configuration muslc sel4 sel4utils pci sel4allocman ethdrivers platsupport)