seL4_libs: remove autoconf.h from seL4_libs

this commit removes autoconf.h generation from each lib and
append '#include <<lib_name>/gen_config.h>' after each
'#include <autoconf.h>' since autoconf.h is only the for the
kernel config now. This is a temporarily solution, since we
currently don't have a way to tell which header files each file
is trying to include when it includes 'autoconf.h'
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f00e268..292b076 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,6 +12,7 @@
 
 cmake_minimum_required(VERSION 3.7.2)
 
+link_libraries(kernel_autoconf)
 add_subdirectory(libsel4allocman)
 add_subdirectory(libsel4vka)
 add_subdirectory(libsel4utils)
diff --git a/libsel4allocman/CMakeLists.txt b/libsel4allocman/CMakeLists.txt
index d17ae46..bf145a0 100644
--- a/libsel4allocman/CMakeLists.txt
+++ b/libsel4allocman/CMakeLists.txt
@@ -30,4 +30,4 @@
 add_library(sel4allocman STATIC EXCLUDE_FROM_ALL ${deps})
 target_include_directories(sel4allocman PUBLIC include "sel4_arch/${KernelSel4Arch}")
 target_include_directories(sel4allocman PUBLIC include "arch/${KernelArch}")
-target_link_libraries(sel4allocman Configuration muslc sel4 sel4vka sel4utils sel4vspace)
+target_link_libraries(sel4allocman muslc sel4 sel4vka sel4utils sel4vspace)
diff --git a/libsel4bench/CMakeLists.txt b/libsel4bench/CMakeLists.txt
index b30d55c..1db46bc 100644
--- a/libsel4bench/CMakeLists.txt
+++ b/libsel4bench/CMakeLists.txt
@@ -39,4 +39,4 @@
 if(KernelArmArmV STREQUAL "armv7ve")
     target_include_directories(sel4bench PUBLIC "arch_include/${KernelArch}/armv/armv7-a")
 endif()
-target_link_libraries(sel4bench Configuration muslc sel4 utils sel4benchsupport)
+target_link_libraries(sel4bench muslc sel4 utils sel4benchsupport)
diff --git a/libsel4debug/CMakeLists.txt b/libsel4debug/CMakeLists.txt
index 7bf01e9..4b950aa 100644
--- a/libsel4debug/CMakeLists.txt
+++ b/libsel4debug/CMakeLists.txt
@@ -70,6 +70,9 @@
 add_library(sel4debug STATIC EXCLUDE_FROM_ALL ${deps})
 target_include_directories(
     sel4debug
-    PUBLIC include "arch_include/${KernelArch}" sel4_arch_include/${KernelSel4Arch}
+    PUBLIC
+        include
+        "arch_include/${KernelArch}"
+        sel4_arch_include/${KernelSel4Arch}
 )
-target_link_libraries(sel4debug Configuration muslc sel4 utils)
+target_link_libraries(sel4debug muslc sel4 utils sel4debug_Config)
diff --git a/libsel4debug/include/sel4debug/debug.h b/libsel4debug/include/sel4debug/debug.h
index a128ae5..e2c203c 100644
--- a/libsel4debug/include/sel4debug/debug.h
+++ b/libsel4debug/include/sel4debug/debug.h
@@ -13,6 +13,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4debug/gen_config.h>
 
 #include <sel4/sel4.h>
 #include <sel4/types.h>
diff --git a/libsel4debug/src/alloc.c b/libsel4debug/src/alloc.c
index 2a77ab3..45561a8 100644
--- a/libsel4debug/src/alloc.c
+++ b/libsel4debug/src/alloc.c
@@ -46,6 +46,7 @@
 
 #include <assert.h>
 #include <autoconf.h>
+#include <sel4debug/gen_config.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h> /* for size_t */
diff --git a/libsel4debug/src/backtrace.c b/libsel4debug/src/backtrace.c
index fba581a..4d695ae 100644
--- a/libsel4debug/src/backtrace.c
+++ b/libsel4debug/src/backtrace.c
@@ -10,6 +10,7 @@
  *  @LICENSE(DATA61_BSD)
  */
 #include <autoconf.h>
+#include <sel4debug/gen_config.h>
 #include <sel4/sel4.h>
 #include <sel4debug/instrumentation.h>
 
diff --git a/libsel4debug/src/bootinfo.c b/libsel4debug/src/bootinfo.c
index 15e3727..7503ea0 100644
--- a/libsel4debug/src/bootinfo.c
+++ b/libsel4debug/src/bootinfo.c
@@ -11,6 +11,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4debug/gen_config.h>
 
 #include <stdio.h>
 
diff --git a/libsel4debug/src/caps.c b/libsel4debug/src/caps.c
index a0715c5..1a1eef7 100644
--- a/libsel4debug/src/caps.c
+++ b/libsel4debug/src/caps.c
@@ -11,6 +11,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4debug/gen_config.h>
 #include <sel4debug/debug.h>
 #include <sel4/sel4.h>
 #include <stdio.h>
diff --git a/libsel4debug/src/trace.c b/libsel4debug/src/trace.c
index 5cf2d51..ea92c41 100644
--- a/libsel4debug/src/trace.c
+++ b/libsel4debug/src/trace.c
@@ -11,6 +11,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4debug/gen_config.h>
 #include <sel4debug/debug.h>
 #include <sel4debug/instrumentation.h>
 
diff --git a/libsel4muslcsys/CMakeLists.txt b/libsel4muslcsys/CMakeLists.txt
index d52466e..4f0615c 100644
--- a/libsel4muslcsys/CMakeLists.txt
+++ b/libsel4muslcsys/CMakeLists.txt
@@ -73,5 +73,9 @@
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_XOPEN_SOURCE=700 -DMUSLC_HIGHEST_SYSCALL=${HighestSyscall}")
 
 add_library(sel4muslcsys STATIC EXCLUDE_FROM_ALL ${deps})
-target_include_directories(sel4muslcsys PUBLIC include)
-target_link_libraries(sel4muslcsys Configuration muslc sel4 cpio utils sel4utils)
+target_include_directories(
+    sel4muslcsys
+    PUBLIC
+        include
+)
+target_link_libraries(sel4muslcsys muslc sel4 cpio utils sel4utils sel4muslcsys_Config)
diff --git a/libsel4muslcsys/include/arch_stdio.h b/libsel4muslcsys/include/arch_stdio.h
index c67aecb..54a37bf 100644
--- a/libsel4muslcsys/include/arch_stdio.h
+++ b/libsel4muslcsys/include/arch_stdio.h
@@ -13,6 +13,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4muslcsys/gen_config.h>
 #include <stddef.h>
 
 /*
diff --git a/libsel4muslcsys/include/muslcsys/io.h b/libsel4muslcsys/include/muslcsys/io.h
index 192c71a..acbf542 100644
--- a/libsel4muslcsys/include/muslcsys/io.h
+++ b/libsel4muslcsys/include/muslcsys/io.h
@@ -13,6 +13,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4muslcsys/gen_config.h>
 #include <stdarg.h>
 #include <stdint.h>
 #include <stdbool.h>
diff --git a/libsel4muslcsys/include/muslcsys/vsyscall.h b/libsel4muslcsys/include/muslcsys/vsyscall.h
index d4273d1..722cee7 100644
--- a/libsel4muslcsys/include/muslcsys/vsyscall.h
+++ b/libsel4muslcsys/include/muslcsys/vsyscall.h
@@ -13,6 +13,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4muslcsys/gen_config.h>
 #include <stdarg.h>
 #include <stdbool.h>
 #include <bits/syscall.h>
diff --git a/libsel4muslcsys/src/sys_exit.c b/libsel4muslcsys/src/sys_exit.c
index 6fe300e..101d4cb 100644
--- a/libsel4muslcsys/src/sys_exit.c
+++ b/libsel4muslcsys/src/sys_exit.c
@@ -11,6 +11,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4muslcsys/gen_config.h>
 #include <stdio.h>
 #include <sel4/sel4.h>
 #include <stdlib.h>
diff --git a/libsel4muslcsys/src/sys_io.c b/libsel4muslcsys/src/sys_io.c
index cf42634..ff1b138 100644
--- a/libsel4muslcsys/src/sys_io.c
+++ b/libsel4muslcsys/src/sys_io.c
@@ -11,6 +11,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4muslcsys/gen_config.h>
 #include <assert.h>
 #include <errno.h>
 #include <fcntl.h>
diff --git a/libsel4muslcsys/src/sys_morecore.c b/libsel4muslcsys/src/sys_morecore.c
index 9090fb7..0437bc7 100644
--- a/libsel4muslcsys/src/sys_morecore.c
+++ b/libsel4muslcsys/src/sys_morecore.c
@@ -14,6 +14,7 @@
 #define _GNU_SOURCE
 
 #include <autoconf.h>
+#include <sel4muslcsys/gen_config.h>
 #include <stdio.h>
 #include <stdint.h>
 #include <stdarg.h>
diff --git a/libsel4muslcsys/src/vsyscall.c b/libsel4muslcsys/src/vsyscall.c
index 20ab216..f2a261c 100644
--- a/libsel4muslcsys/src/vsyscall.c
+++ b/libsel4muslcsys/src/vsyscall.c
@@ -11,6 +11,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4muslcsys/gen_config.h>
 #include <stdio.h>
 #include <stdint.h>
 #include <sel4/sel4.h>
diff --git a/libsel4platsupport/CMakeLists.txt b/libsel4platsupport/CMakeLists.txt
index 0411bb6..fc7c282 100644
--- a/libsel4platsupport/CMakeLists.txt
+++ b/libsel4platsupport/CMakeLists.txt
@@ -78,7 +78,6 @@
 endif()
 target_link_libraries(
     sel4platsupport
-    Configuration
     muslc
     sel4
     sel4runtime
@@ -87,4 +86,6 @@
     sel4vspace
     platsupport
     sel4simple-default
+    sel4platsupport_Config
+    sel4muslcsys_Config
 )
diff --git a/libsel4platsupport/include/sel4platsupport/timer.h b/libsel4platsupport/include/sel4platsupport/timer.h
index 9ca9fa2..3c98a5f 100644
--- a/libsel4platsupport/include/sel4platsupport/timer.h
+++ b/libsel4platsupport/include/sel4platsupport/timer.h
@@ -141,4 +141,4 @@
  *
  * @return         IRQ cap on success, otherwise seL4_CapNull on failure.
  */
-seL4_CPtr sel4platsupport_timer_objs_get_irq_cap(timer_objects_t *to, int id, irq_type_t type);
\ No newline at end of file
+seL4_CPtr sel4platsupport_timer_objs_get_irq_cap(timer_objects_t *to, int id, irq_type_t type);
diff --git a/libsel4platsupport/src/common.c b/libsel4platsupport/src/common.c
index 9e6d8e6..38dfdca 100644
--- a/libsel4platsupport/src/common.c
+++ b/libsel4platsupport/src/common.c
@@ -18,6 +18,8 @@
  */
 
 #include <autoconf.h>
+#include <sel4platsupport/gen_config.h>
+#include <sel4muslcsys/gen_config.h>
 #include <assert.h>
 #include <sel4/sel4.h>
 #include <sel4/bootinfo.h>
diff --git a/libsel4platsupport/src/device.c b/libsel4platsupport/src/device.c
index 023de07..e99bb22 100644
--- a/libsel4platsupport/src/device.c
+++ b/libsel4platsupport/src/device.c
@@ -10,6 +10,7 @@
  * @TAG(DATA61_BSD)
  */
 #include <autoconf.h>
+#include <sel4platsupport/gen_config.h>
 #include <sel4platsupport/device.h>
 #include <sel4platsupport/irq.h>
 #include <sel4platsupport/platsupport.h>
diff --git a/libsel4platsupport/src/io.c b/libsel4platsupport/src/io.c
index 249f0d8..20433be 100644
--- a/libsel4platsupport/src/io.c
+++ b/libsel4platsupport/src/io.c
@@ -11,6 +11,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4platsupport/gen_config.h>
 
 #include <sel4platsupport/io.h>
 #ifdef CONFIG_ARCH_ARM
diff --git a/libsel4platsupport/src/plat/pc99/device.c b/libsel4platsupport/src/plat/pc99/device.c
index 6c31b18..ffd482d 100644
--- a/libsel4platsupport/src/plat/pc99/device.c
+++ b/libsel4platsupport/src/plat/pc99/device.c
@@ -10,6 +10,7 @@
  * @TAG(DATA61_BSD)
  */
 #include <autoconf.h>
+#include <sel4platsupport/gen_config.h>
 #include <sel4platsupport/device.h>
 #include <sel4platsupport/platsupport.h>
 #include <utils/util.h>
diff --git a/libsel4platsupport/src/sel4_arch/aarch32/crt0.S b/libsel4platsupport/src/sel4_arch/aarch32/crt0.S
index 3d337f8..50fe94f 100644
--- a/libsel4platsupport/src/sel4_arch/aarch32/crt0.S
+++ b/libsel4platsupport/src/sel4_arch/aarch32/crt0.S
@@ -20,6 +20,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4platsupport/gen_config.h>
 
 #ifdef CONFIG_LIB_SEL4_PLAT_SUPPORT_START
 
diff --git a/libsel4platsupport/src/sel4_arch/aarch64/crt0.S b/libsel4platsupport/src/sel4_arch/aarch64/crt0.S
index 402fb4d..8498839 100644
--- a/libsel4platsupport/src/sel4_arch/aarch64/crt0.S
+++ b/libsel4platsupport/src/sel4_arch/aarch64/crt0.S
@@ -11,6 +11,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4platsupport/gen_config.h>
 
 #ifdef CONFIG_LIB_SEL4_PLAT_SUPPORT_START
 
diff --git a/libsel4platsupport/src/sel4_arch/ia32/crt0.S b/libsel4platsupport/src/sel4_arch/ia32/crt0.S
index e939f4c..0082b19 100644
--- a/libsel4platsupport/src/sel4_arch/ia32/crt0.S
+++ b/libsel4platsupport/src/sel4_arch/ia32/crt0.S
@@ -21,6 +21,7 @@
 
 #define __ASM__
 #include <autoconf.h>
+#include <sel4platsupport/gen_config.h>
 
 #ifdef CONFIG_LIB_SEL4_PLAT_SUPPORT_START
 
diff --git a/libsel4platsupport/src/sel4_arch/x86_64/crt0.S b/libsel4platsupport/src/sel4_arch/x86_64/crt0.S
index a07e275..f0c3dd5 100644
--- a/libsel4platsupport/src/sel4_arch/x86_64/crt0.S
+++ b/libsel4platsupport/src/sel4_arch/x86_64/crt0.S
@@ -21,6 +21,7 @@
 
 #define __ASM__
 #include <autoconf.h>
+#include <sel4platsupport/gen_config.h>
 
 #ifdef CONFIG_LIB_SEL4_PLAT_SUPPORT_START
 
diff --git a/libsel4platsupport/src/serial.c b/libsel4platsupport/src/serial.c
index 059ecd1..635ba72 100644
--- a/libsel4platsupport/src/serial.c
+++ b/libsel4platsupport/src/serial.c
@@ -13,6 +13,7 @@
 #include "plat_internal.h"
 #include <sel4/sel4.h>
 #include <platsupport/chardev.h>
+#include <sel4platsupport/gen_config.h>
 #include <stddef.h>
 #include <vka/object.h>
 
diff --git a/libsel4platsupport/src/timer.c b/libsel4platsupport/src/timer.c
index d9b821c..5988a9c 100644
--- a/libsel4platsupport/src/timer.c
+++ b/libsel4platsupport/src/timer.c
@@ -11,6 +11,7 @@
 */
 
 #include <autoconf.h>
+#include <sel4platsupport/gen_config.h>
 #include <vka/object.h>
 #include <vka/vka.h>
 #include <vka/capops.h>
diff --git a/libsel4serialserver/CMakeLists.txt b/libsel4serialserver/CMakeLists.txt
index 9a93d03..9d57de2 100644
--- a/libsel4serialserver/CMakeLists.txt
+++ b/libsel4serialserver/CMakeLists.txt
@@ -29,10 +29,12 @@
 set(deps src/clientapi.c src/parentapi.c src/server.c)
 
 add_library(sel4serialserver STATIC EXCLUDE_FROM_ALL ${deps})
-target_include_directories(sel4serialserver PUBLIC include)
+target_include_directories(sel4serialserver
+    PUBLIC
+        include
+)
 target_link_libraries(
     sel4serialserver
-    Configuration
     muslc
     sel4
     sel4vspace
@@ -41,6 +43,7 @@
     utils
     sel4utils
     sel4vka
+    sel4serialserver_Config
 )
 
 add_library(sel4serialserver_tests STATIC EXCLUDE_FROM_ALL src/test.c)
diff --git a/libsel4serialserver/src/server.c b/libsel4serialserver/src/server.c
index 8f42df1..0771a30 100644
--- a/libsel4serialserver/src/server.c
+++ b/libsel4serialserver/src/server.c
@@ -10,6 +10,8 @@
  * @TAG(DATA61_BSD)
  */
 #include <autoconf.h>
+#include <sel4serialserver/gen_config.h>
+
 #include <stdio.h>
 #include <string.h>
 
diff --git a/libsel4simple-default/CMakeLists.txt b/libsel4simple-default/CMakeLists.txt
index 7232799..b8a6896 100644
--- a/libsel4simple-default/CMakeLists.txt
+++ b/libsel4simple-default/CMakeLists.txt
@@ -20,4 +20,4 @@
 
 add_library(sel4simple-default STATIC EXCLUDE_FROM_ALL ${deps})
 target_include_directories(sel4simple-default PUBLIC include)
-target_link_libraries(sel4simple-default Configuration muslc sel4 sel4simple sel4debug sel4vspace)
+target_link_libraries(sel4simple-default muslc sel4 sel4simple sel4debug sel4vspace)
diff --git a/libsel4simple/CMakeLists.txt b/libsel4simple/CMakeLists.txt
index 21e16fc..57f846e 100644
--- a/libsel4simple/CMakeLists.txt
+++ b/libsel4simple/CMakeLists.txt
@@ -26,4 +26,4 @@
 
 add_library(sel4simple STATIC EXCLUDE_FROM_ALL ${deps})
 target_include_directories(sel4simple PUBLIC include "arch_include/${kernel_arch}")
-target_link_libraries(sel4simple Configuration muslc sel4 utils sel4vka)
+target_link_libraries(sel4simple muslc sel4 utils sel4vka)
diff --git a/libsel4sync/CMakeLists.txt b/libsel4sync/CMakeLists.txt
index f61b1b7..7087d9b 100644
--- a/libsel4sync/CMakeLists.txt
+++ b/libsel4sync/CMakeLists.txt
@@ -20,4 +20,4 @@
 
 add_library(sel4sync STATIC EXCLUDE_FROM_ALL ${deps})
 target_include_directories(sel4sync PUBLIC include)
-target_link_libraries(sel4sync Configuration muslc sel4 sel4vka platsupport utils)
+target_link_libraries(sel4sync muslc sel4 sel4vka platsupport utils)
diff --git a/libsel4test/CMakeLists.txt b/libsel4test/CMakeLists.txt
index 845b064..f63c166 100644
--- a/libsel4test/CMakeLists.txt
+++ b/libsel4test/CMakeLists.txt
@@ -44,10 +44,12 @@
 list(SORT deps)
 
 add_library(sel4test STATIC EXCLUDE_FROM_ALL ${deps})
-target_include_directories(sel4test PUBLIC include)
+target_include_directories(
+    sel4test
+    PUBLIC include
+)
 target_link_libraries(
     sel4test
-    Configuration
     muslc
     sel4
     utils
@@ -58,4 +60,5 @@
     sel4sync
     sel4simple
     sel4utils
+    sel4test_Config
 )
diff --git a/libsel4test/include/sel4test/macros.h b/libsel4test/include/sel4test/macros.h
index 281eb60..8b3dfa2 100644
--- a/libsel4test/include/sel4test/macros.h
+++ b/libsel4test/include/sel4test/macros.h
@@ -14,6 +14,7 @@
 
 /* Include Kconfig variables. */
 #include <autoconf.h>
+#include <sel4test/gen_config.h>
 
 #define SEL4TEST_PRINT_BUFFER 200
 
diff --git a/libsel4test/include/sel4test/test.h b/libsel4test/include/sel4test/test.h
index d64c688..86adc3a 100644
--- a/libsel4test/include/sel4test/test.h
+++ b/libsel4test/include/sel4test/test.h
@@ -14,6 +14,7 @@
 
 /* Include Kconfig variables. */
 #include <autoconf.h>
+#include <sel4test/gen_config.h>
 
 #include <sel4/sel4.h>
 
diff --git a/libsel4test/include/sel4test/testutil.h b/libsel4test/include/sel4test/testutil.h
index f5ddad6..c661206 100644
--- a/libsel4test/include/sel4test/testutil.h
+++ b/libsel4test/include/sel4test/testutil.h
@@ -14,6 +14,7 @@
 
 /* Include Kconfig variables. */
 #include <autoconf.h>
+#include <sel4test/gen_config.h>
 #include <stdbool.h>
 
 typedef enum test_result {
diff --git a/libsel4test/src/testutil.c b/libsel4test/src/testutil.c
index c652fdf..3909655 100644
--- a/libsel4test/src/testutil.c
+++ b/libsel4test/src/testutil.c
@@ -11,6 +11,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4test/gen_config.h>
 
 #include <stdbool.h>
 #include <stdio.h>
diff --git a/libsel4utils/CMakeLists.txt b/libsel4utils/CMakeLists.txt
index 0d2f599..9ed892f 100644
--- a/libsel4utils/CMakeLists.txt
+++ b/libsel4utils/CMakeLists.txt
@@ -55,11 +55,13 @@
 add_library(sel4utils STATIC EXCLUDE_FROM_ALL ${deps})
 target_include_directories(
     sel4utils
-    PUBLIC include "sel4_arch_include/${KernelSel4Arch}" "arch_include/${KernelArch}"
+    PUBLIC
+        include
+        "sel4_arch_include/${KernelSel4Arch}"
+        "arch_include/${KernelArch}"
 )
 target_link_libraries(
     sel4utils
-    Configuration
     muslc
     sel4
     sel4runtime
@@ -68,4 +70,5 @@
     sel4platsupport
     elf
     cpio
+    sel4utils_Config
 )
diff --git a/libsel4utils/arch_include/riscv/sel4utils/arch/vspace.h b/libsel4utils/arch_include/riscv/sel4utils/arch/vspace.h
index 4c429e6..1bcd4db 100644
--- a/libsel4utils/arch_include/riscv/sel4utils/arch/vspace.h
+++ b/libsel4utils/arch_include/riscv/sel4utils/arch/vspace.h
@@ -12,6 +12,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #if CONFIG_PT_LEVELS == 2
 #define VSPACE_LEVEL_BITS 10
diff --git a/libsel4utils/include/sel4utils/benchmark.h b/libsel4utils/include/sel4utils/benchmark.h
index 68187dc..fa8b7b8 100644
--- a/libsel4utils/include/sel4utils/benchmark.h
+++ b/libsel4utils/include/sel4utils/benchmark.h
@@ -12,6 +12,7 @@
 
 #pragma once
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 #ifdef CONFIG_BENCHMARK_TRACEPOINTS
 #include <inttypes.h>
 #include <stdio.h>
diff --git a/libsel4utils/include/sel4utils/benchmark_track.h b/libsel4utils/include/sel4utils/benchmark_track.h
index a528d64..f1a443a 100644
--- a/libsel4utils/include/sel4utils/benchmark_track.h
+++ b/libsel4utils/include/sel4utils/benchmark_track.h
@@ -11,6 +11,7 @@
  */
 #pragma once
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 #ifdef CONFIG_BENCHMARK_TRACK_KERNEL_ENTRIES
 
 #include <stdio.h>
diff --git a/libsel4utils/include/sel4utils/elf.h b/libsel4utils/include/sel4utils/elf.h
index 517a80e..8f06b9c 100644
--- a/libsel4utils/include/sel4utils/elf.h
+++ b/libsel4utils/include/sel4utils/elf.h
@@ -12,6 +12,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #include <vka/vka.h>
 
diff --git a/libsel4utils/include/sel4utils/iommu_dma.h b/libsel4utils/include/sel4utils/iommu_dma.h
index 848f97d..578ab89 100644
--- a/libsel4utils/include/sel4utils/iommu_dma.h
+++ b/libsel4utils/include/sel4utils/iommu_dma.h
@@ -13,6 +13,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #if defined(CONFIG_IOMMU)
 
diff --git a/libsel4utils/include/sel4utils/irq_server.h b/libsel4utils/include/sel4utils/irq_server.h
index a54d542..2b948ea 100644
--- a/libsel4utils/include/sel4utils/irq_server.h
+++ b/libsel4utils/include/sel4utils/irq_server.h
@@ -44,6 +44,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #include <sel4/sel4.h>
 #include <vspace/vspace.h>
diff --git a/libsel4utils/include/sel4utils/mapping.h b/libsel4utils/include/sel4utils/mapping.h
index ce5500b..248cca7 100644
--- a/libsel4utils/include/sel4utils/mapping.h
+++ b/libsel4utils/include/sel4utils/mapping.h
@@ -13,6 +13,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 #include <utils/util.h>
 #include <sel4/sel4.h>
 
diff --git a/libsel4utils/include/sel4utils/mcs_api.h b/libsel4utils/include/sel4utils/mcs_api.h
index 9eaac1a..eb57361 100644
--- a/libsel4utils/include/sel4utils/mcs_api.h
+++ b/libsel4utils/include/sel4utils/mcs_api.h
@@ -20,6 +20,7 @@
 */
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 #include <sel4/sel4.h>
 #include <sel4utils/sel4_zf_logif.h>
 
diff --git a/libsel4utils/include/sel4utils/page_dma.h b/libsel4utils/include/sel4utils/page_dma.h
index 8428632..7249efc 100644
--- a/libsel4utils/include/sel4utils/page_dma.h
+++ b/libsel4utils/include/sel4utils/page_dma.h
@@ -13,6 +13,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #include <sel4/sel4.h>
 #include <vka/vka.h>
diff --git a/libsel4utils/include/sel4utils/process.h b/libsel4utils/include/sel4utils/process.h
index ce1e1a4..20eca6a 100644
--- a/libsel4utils/include/sel4utils/process.h
+++ b/libsel4utils/include/sel4utils/process.h
@@ -12,6 +12,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #include <vka/vka.h>
 #include <vspace/vspace.h>
diff --git a/libsel4utils/include/sel4utils/process_config.h b/libsel4utils/include/sel4utils/process_config.h
index d20e019..c3c7c5a 100644
--- a/libsel4utils/include/sel4utils/process_config.h
+++ b/libsel4utils/include/sel4utils/process_config.h
@@ -13,6 +13,7 @@
 #pragma once
 /* Builder functions for process configs */
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 #include <sel4/types.h>
 #include <sel4utils/api.h>
 #include <sel4utils/elf.h>
diff --git a/libsel4utils/include/sel4utils/thread.h b/libsel4utils/include/sel4utils/thread.h
index d3590a6..879e965 100644
--- a/libsel4utils/include/sel4utils/thread.h
+++ b/libsel4utils/include/sel4utils/thread.h
@@ -21,6 +21,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #include <sel4/sel4.h>
 #include <stdbool.h>
diff --git a/libsel4utils/include/sel4utils/thread_config.h b/libsel4utils/include/sel4utils/thread_config.h
index 0d19553..d0167df 100644
--- a/libsel4utils/include/sel4utils/thread_config.h
+++ b/libsel4utils/include/sel4utils/thread_config.h
@@ -18,6 +18,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 #include <sel4/types.h>
 #include <simple/simple.h>
 #include <sel4utils/api.h>
diff --git a/libsel4utils/include/sel4utils/util.h b/libsel4utils/include/sel4utils/util.h
index 4bfeff9..85672b2 100644
--- a/libsel4utils/include/sel4utils/util.h
+++ b/libsel4utils/include/sel4utils/util.h
@@ -12,6 +12,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 #include <assert.h>
 #include <stdint.h>
 
diff --git a/libsel4utils/include/sel4utils/vspace.h b/libsel4utils/include/sel4utils/vspace.h
index 042cc09..7905143 100644
--- a/libsel4utils/include/sel4utils/vspace.h
+++ b/libsel4utils/include/sel4utils/vspace.h
@@ -31,6 +31,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #include <vspace/vspace.h>
 #include <vka/vka.h>
diff --git a/libsel4utils/include/sel4utils/vspace_internal.h b/libsel4utils/include/sel4utils/vspace_internal.h
index f2c766a..b62f127 100644
--- a/libsel4utils/include/sel4utils/vspace_internal.h
+++ b/libsel4utils/include/sel4utils/vspace_internal.h
@@ -13,6 +13,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 #include <vka/vka.h>
 #include <vspace/vspace.h>
 
diff --git a/libsel4utils/sel4_arch_include/aarch32/sel4utils/sel4_arch/util.h b/libsel4utils/sel4_arch_include/aarch32/sel4utils/sel4_arch/util.h
index 41a855f..47160d4 100644
--- a/libsel4utils/sel4_arch_include/aarch32/sel4utils/sel4_arch/util.h
+++ b/libsel4utils/sel4_arch_include/aarch32/sel4utils/sel4_arch/util.h
@@ -13,6 +13,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 #include <sel4/sel4.h>
 #include <utils/arith.h>
 
diff --git a/libsel4utils/sel4_arch_include/aarch32/sel4utils/sel4_arch/vspace.h b/libsel4utils/sel4_arch_include/aarch32/sel4utils/sel4_arch/vspace.h
index 80a4c85..a9167e6 100644
--- a/libsel4utils/sel4_arch_include/aarch32/sel4utils/sel4_arch/vspace.h
+++ b/libsel4utils/sel4_arch_include/aarch32/sel4utils/sel4_arch/vspace.h
@@ -13,6 +13,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #define VSPACE_MAP_PAGING_OBJECTS 2
 
diff --git a/libsel4utils/sel4_arch_include/ia32/sel4utils/sel4_arch/vspace.h b/libsel4utils/sel4_arch_include/ia32/sel4utils/sel4_arch/vspace.h
index c297b42..1399802 100644
--- a/libsel4utils/sel4_arch_include/ia32/sel4utils/sel4_arch/vspace.h
+++ b/libsel4utils/sel4_arch_include/ia32/sel4utils/sel4_arch/vspace.h
@@ -13,6 +13,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #ifdef CONFIG_PAE_PAGING
 #define VSPACE_MAP_PAGING_OBJECTS 3
diff --git a/libsel4utils/sel4_arch_include/x86_64/sel4utils/sel4_arch/vspace.h b/libsel4utils/sel4_arch_include/x86_64/sel4utils/sel4_arch/vspace.h
index a83e995..6136ccf 100644
--- a/libsel4utils/sel4_arch_include/x86_64/sel4utils/sel4_arch/vspace.h
+++ b/libsel4utils/sel4_arch_include/x86_64/sel4utils/sel4_arch/vspace.h
@@ -13,6 +13,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #define VSPACE_MAP_PAGING_OBJECTS 5
 
diff --git a/libsel4utils/src/arch/riscv/arch.c b/libsel4utils/src/arch/riscv/arch.c
index ac1ff62..3f34b55 100644
--- a/libsel4utils/src/arch/riscv/arch.c
+++ b/libsel4utils/src/arch/riscv/arch.c
@@ -10,6 +10,7 @@
  * @TAG(DATA61_BSD)
  */
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 #include <sel4/types.h>
 #include <sel4utils/thread.h>
 #include <stdbool.h>
diff --git a/libsel4utils/src/elf.c b/libsel4utils/src/elf.c
index 6767d16..47495b2 100644
--- a/libsel4utils/src/elf.c
+++ b/libsel4utils/src/elf.c
@@ -10,6 +10,7 @@
  * @TAG(DATA61_BSD)
  */
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #include <string.h>
 #include <sel4/sel4.h>
diff --git a/libsel4utils/src/iommu_dma.c b/libsel4utils/src/iommu_dma.c
index 8d7dd30..2673c7d 100644
--- a/libsel4utils/src/iommu_dma.c
+++ b/libsel4utils/src/iommu_dma.c
@@ -11,6 +11,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #if defined(CONFIG_IOMMU)
 
diff --git a/libsel4utils/src/mapping.c b/libsel4utils/src/mapping.c
index 81d94d9..99b5059 100644
--- a/libsel4utils/src/mapping.c
+++ b/libsel4utils/src/mapping.c
@@ -11,6 +11,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #include <inttypes.h>
 #include <sel4/sel4.h>
diff --git a/libsel4utils/src/page_dma.c b/libsel4utils/src/page_dma.c
index 4bbc628..26d12a5 100644
--- a/libsel4utils/src/page_dma.c
+++ b/libsel4utils/src/page_dma.c
@@ -11,6 +11,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #include <sel4utils/page_dma.h>
 #include <vspace/vspace.h>
diff --git a/libsel4utils/src/process.c b/libsel4utils/src/process.c
index 3eae6bf..acb2463 100644
--- a/libsel4utils/src/process.c
+++ b/libsel4utils/src/process.c
@@ -10,6 +10,7 @@
  * @TAG(DATA61_BSD)
  */
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #define _GNU_SOURCE
 #include <stdlib.h>
diff --git a/libsel4utils/src/sel4_arch/aarch32/arch.c b/libsel4utils/src/sel4_arch/aarch32/arch.c
index 27af8ec..1135c3b 100644
--- a/libsel4utils/src/sel4_arch/aarch32/arch.c
+++ b/libsel4utils/src/sel4_arch/aarch32/arch.c
@@ -10,6 +10,7 @@
  * @TAG(DATA61_BSD)
  */
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 #include <sel4/types.h>
 #include <sel4utils/thread.h>
 #include <sel4utils/helpers.h>
diff --git a/libsel4utils/src/sel4_arch/aarch64/arch.c b/libsel4utils/src/sel4_arch/aarch64/arch.c
index ff48ec5..98e63c5 100644
--- a/libsel4utils/src/sel4_arch/aarch64/arch.c
+++ b/libsel4utils/src/sel4_arch/aarch64/arch.c
@@ -11,6 +11,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 #include <sel4/types.h>
 #include <sel4utils/thread.h>
 #include <sel4utils/helpers.h>
diff --git a/libsel4utils/src/sel4_arch/ia32/arch.c b/libsel4utils/src/sel4_arch/ia32/arch.c
index 7cda098..f086206 100644
--- a/libsel4utils/src/sel4_arch/ia32/arch.c
+++ b/libsel4utils/src/sel4_arch/ia32/arch.c
@@ -10,6 +10,7 @@
  * @TAG(DATA61_BSD)
  */
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 #include <sel4/types.h>
 #include <sel4utils/thread.h>
 #include <sel4utils/helpers.h>
diff --git a/libsel4utils/src/sel4_arch/x86_64/arch.c b/libsel4utils/src/sel4_arch/x86_64/arch.c
index ceb89dd..7436dda 100644
--- a/libsel4utils/src/sel4_arch/x86_64/arch.c
+++ b/libsel4utils/src/sel4_arch/x86_64/arch.c
@@ -10,6 +10,7 @@
  * @TAG(DATA61_BSD)
  */
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 #include <sel4/types.h>
 #include <sel4utils/thread.h>
 #include <sel4utils/helpers.h>
diff --git a/libsel4utils/src/thread.c b/libsel4utils/src/thread.c
index d6d1a69..14a91c6 100644
--- a/libsel4utils/src/thread.c
+++ b/libsel4utils/src/thread.c
@@ -11,6 +11,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #include <inttypes.h>
 #include <stdio.h>
diff --git a/libsel4utils/src/vspace/bootstrap.c b/libsel4utils/src/vspace/bootstrap.c
index 385ce6b..7220c60 100644
--- a/libsel4utils/src/vspace/bootstrap.c
+++ b/libsel4utils/src/vspace/bootstrap.c
@@ -11,6 +11,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #include <stdlib.h>
 #include <string.h>
diff --git a/libsel4utils/src/vspace/vspace.c b/libsel4utils/src/vspace/vspace.c
index ac27a0b..04d0550 100644
--- a/libsel4utils/src/vspace/vspace.c
+++ b/libsel4utils/src/vspace/vspace.c
@@ -12,6 +12,7 @@
 
 /* see sel4utils/vspace.h for details */
 #include <autoconf.h>
+#include <sel4utils/gen_config.h>
 
 #include <inttypes.h>
 #include <stdbool.h>
diff --git a/libsel4vka/CMakeLists.txt b/libsel4vka/CMakeLists.txt
index 2ae880d..afe0da1 100644
--- a/libsel4vka/CMakeLists.txt
+++ b/libsel4vka/CMakeLists.txt
@@ -58,6 +58,9 @@
 add_library(sel4vka STATIC EXCLUDE_FROM_ALL ${deps})
 target_include_directories(
     sel4vka
-    PUBLIC include "sel4_arch_include/${KernelSel4Arch}" "arch_include/${KernelArch}"
+    PUBLIC
+        include
+        "sel4_arch_include/${KernelSel4Arch}"
+        "arch_include/${KernelArch}"
 )
-target_link_libraries(sel4vka Configuration muslc sel4 utils)
+target_link_libraries(sel4vka muslc sel4 utils sel4vka_Config)
diff --git a/libsel4vka/arch_include/arm/vka/arch/kobject_t.h b/libsel4vka/arch_include/arm/vka/arch/kobject_t.h
index 8e94359..eab4016 100644
--- a/libsel4vka/arch_include/arm/vka/arch/kobject_t.h
+++ b/libsel4vka/arch_include/arm/vka/arch/kobject_t.h
@@ -15,6 +15,7 @@
 #include <sel4/types.h>
 #include <assert.h>
 #include <autoconf.h>
+#include <sel4vka/gen_config.h>
 #include <utils/util.h>
 #include <vka/sel4_arch/kobject_t.h>
 
diff --git a/libsel4vka/arch_include/riscv/vka/arch/kobject_t.h b/libsel4vka/arch_include/riscv/vka/arch/kobject_t.h
index f029d90..046db5f 100644
--- a/libsel4vka/arch_include/riscv/vka/arch/kobject_t.h
+++ b/libsel4vka/arch_include/riscv/vka/arch/kobject_t.h
@@ -14,6 +14,7 @@
 #include <sel4/types.h>
 #include <assert.h>
 #include <autoconf.h>
+#include <sel4vka/gen_config.h>
 #include <utils/util.h>
 
 #define seL4_PageDirBits seL4_PageTableBits
diff --git a/libsel4vka/arch_include/x86/vka/arch/kobject_t.h b/libsel4vka/arch_include/x86/vka/arch/kobject_t.h
index 0579871..8497806 100644
--- a/libsel4vka/arch_include/x86/vka/arch/kobject_t.h
+++ b/libsel4vka/arch_include/x86/vka/arch/kobject_t.h
@@ -15,6 +15,7 @@
 #include <sel4/types.h>
 #include <assert.h>
 #include <autoconf.h>
+#include <sel4vka/gen_config.h>
 #include <utils/util.h>
 #include <vka/sel4_arch/kobject_t.h>
 
diff --git a/libsel4vka/include/vka/capops.h b/libsel4vka/include/vka/capops.h
index bdc4f00..b04c535 100644
--- a/libsel4vka/include/vka/capops.h
+++ b/libsel4vka/include/vka/capops.h
@@ -19,6 +19,7 @@
  * to look at the cspacepath_t definition again!
  */
 #include <autoconf.h>
+#include <sel4vka/gen_config.h>
 #include <vka/cspacepath_t.h>
 #include <vka/object.h>
 
diff --git a/libsel4vka/include/vka/ipcbuffer.h b/libsel4vka/include/vka/ipcbuffer.h
index 334f6bb..95684ad 100644
--- a/libsel4vka/include/vka/ipcbuffer.h
+++ b/libsel4vka/include/vka/ipcbuffer.h
@@ -14,6 +14,7 @@
 
 /* This file provides convenient wrappers around seL4 IPC buffer manipulation */
 #include <autoconf.h>
+#include <sel4vka/gen_config.h>
 #include <vka/cspacepath_t.h>
 #include <vka/object.h>
 
diff --git a/libsel4vka/include/vka/kobject_t.h b/libsel4vka/include/vka/kobject_t.h
index e01d2b7..6b6f9c5 100644
--- a/libsel4vka/include/vka/kobject_t.h
+++ b/libsel4vka/include/vka/kobject_t.h
@@ -15,6 +15,7 @@
 #include <sel4/types.h>
 #include <assert.h>
 #include <autoconf.h>
+#include <sel4vka/gen_config.h>
 #include <utils/util.h>
 #include <vka/arch/kobject_t.h>
 
diff --git a/libsel4vka/include/vka/vka.h b/libsel4vka/include/vka/vka.h
index 7cc0757..48c767a 100644
--- a/libsel4vka/include/vka/vka.h
+++ b/libsel4vka/include/vka/vka.h
@@ -13,6 +13,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4vka/gen_config.h>
 
 #include <sel4/sel4.h>
 #include <sel4/types.h>
diff --git a/libsel4vka/sel4_arch_include/aarch32/vka/sel4_arch/kobject_t.h b/libsel4vka/sel4_arch_include/aarch32/vka/sel4_arch/kobject_t.h
index d9530f2..a2ec217 100644
--- a/libsel4vka/sel4_arch_include/aarch32/vka/sel4_arch/kobject_t.h
+++ b/libsel4vka/sel4_arch_include/aarch32/vka/sel4_arch/kobject_t.h
@@ -15,6 +15,7 @@
 #include <sel4/types.h>
 #include <assert.h>
 #include <autoconf.h>
+#include <sel4vka/gen_config.h>
 #include <utils/util.h>
 
 enum _arm_mode_kobject_type {
diff --git a/libsel4vka/sel4_arch_include/aarch32/vka/sel4_arch/object.h b/libsel4vka/sel4_arch_include/aarch32/vka/sel4_arch/object.h
index 77f1a31..53c784d 100644
--- a/libsel4vka/sel4_arch_include/aarch32/vka/sel4_arch/object.h
+++ b/libsel4vka/sel4_arch_include/aarch32/vka/sel4_arch/object.h
@@ -13,6 +13,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4vka/gen_config.h>
 #include <vka/vka.h>
 #include <vka/kobject_t.h>
 #include <utils/util.h>
diff --git a/libsel4vka/sel4_arch_include/aarch64/vka/sel4_arch/kobject_t.h b/libsel4vka/sel4_arch_include/aarch64/vka/sel4_arch/kobject_t.h
index 3e9fe6b..0421af2 100644
--- a/libsel4vka/sel4_arch_include/aarch64/vka/sel4_arch/kobject_t.h
+++ b/libsel4vka/sel4_arch_include/aarch64/vka/sel4_arch/kobject_t.h
@@ -15,6 +15,7 @@
 #include <sel4/types.h>
 #include <assert.h>
 #include <autoconf.h>
+#include <sel4vka/gen_config.h>
 #include <utils/util.h>
 
 enum _arm_mode_kobject_type {
diff --git a/libsel4vka/sel4_arch_include/ia32/vka/sel4_arch/kobject_t.h b/libsel4vka/sel4_arch_include/ia32/vka/sel4_arch/kobject_t.h
index cab2d6b..6f888b6 100644
--- a/libsel4vka/sel4_arch_include/ia32/vka/sel4_arch/kobject_t.h
+++ b/libsel4vka/sel4_arch_include/ia32/vka/sel4_arch/kobject_t.h
@@ -15,6 +15,7 @@
 #include <sel4/types.h>
 #include <assert.h>
 #include <autoconf.h>
+#include <sel4vka/gen_config.h>
 #include <utils/util.h>
 
 enum _x86_mode_kobject_type {
diff --git a/libsel4vka/sel4_arch_include/x86_64/vka/sel4_arch/kobject_t.h b/libsel4vka/sel4_arch_include/x86_64/vka/sel4_arch/kobject_t.h
index 799157c..55a908c 100644
--- a/libsel4vka/sel4_arch_include/x86_64/vka/sel4_arch/kobject_t.h
+++ b/libsel4vka/sel4_arch_include/x86_64/vka/sel4_arch/kobject_t.h
@@ -15,6 +15,7 @@
 #include <sel4/types.h>
 #include <assert.h>
 #include <autoconf.h>
+#include <sel4vka/gen_config.h>
 #include <utils/util.h>
 
 enum _x86_mode_kobject_type {
diff --git a/libsel4vka/src/debug-vka.c b/libsel4vka/src/debug-vka.c
index 392bd5a..6503567 100644
--- a/libsel4vka/src/debug-vka.c
+++ b/libsel4vka/src/debug-vka.c
@@ -12,6 +12,7 @@
 
 #include <assert.h>
 #include <autoconf.h>
+#include <sel4vka/gen_config.h>
 #include <sel4/sel4.h>
 #include <stddef.h>
 #include <stdint.h>
diff --git a/libsel4vmm/CMakeLists.txt b/libsel4vmm/CMakeLists.txt
index 6f6cabe..0e8bf33 100644
--- a/libsel4vmm/CMakeLists.txt
+++ b/libsel4vmm/CMakeLists.txt
@@ -83,10 +83,13 @@
 
 add_library(sel4vmm STATIC EXCLUDE_FROM_ALL ${sources})
 
-target_include_directories(sel4vmm PUBLIC include)
+target_include_directories(
+    sel4vmm
+    PUBLIC
+        include
+)
 target_link_libraries(
     sel4vmm
-    Configuration
     muslc
     sel4
     sel4utils
@@ -94,4 +97,5 @@
     sel4allocman
     ethdrivers
     platsupport
+    sel4vmm_Config
 )
diff --git a/libsel4vmm/include/vmm/debug.h b/libsel4vmm/include/vmm/debug.h
index 8159160..4dcf6ff 100644
--- a/libsel4vmm/include/vmm/debug.h
+++ b/libsel4vmm/include/vmm/debug.h
@@ -13,6 +13,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4vmm/gen_config.h>
 #include "vmm/vmm.h"
 
 #ifndef COLOUR
diff --git a/libsel4vmm/include/vmm/platform/guest_vspace.h b/libsel4vmm/include/vmm/platform/guest_vspace.h
index e264948..11f6e72 100644
--- a/libsel4vmm/include/vmm/platform/guest_vspace.h
+++ b/libsel4vmm/include/vmm/platform/guest_vspace.h
@@ -13,6 +13,7 @@
 #pragma once
 
 #include <autoconf.h>
+#include <sel4vmm/gen_config.h>
 #include <sel4/sel4.h>
 #include <vspace/vspace.h>
 #include <vka/vka.h>
diff --git a/libsel4vmm/src/driver/virtio_emul.c b/libsel4vmm/src/driver/virtio_emul.c
index a10f651..44eae04 100644
--- a/libsel4vmm/src/driver/virtio_emul.c
+++ b/libsel4vmm/src/driver/virtio_emul.c
@@ -11,6 +11,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4vmm/gen_config.h>
 
 #include <string.h>
 
diff --git a/libsel4vmm/src/platform/boot.c b/libsel4vmm/src/platform/boot.c
index 1b92d1f..9b01ab3 100644
--- a/libsel4vmm/src/platform/boot.c
+++ b/libsel4vmm/src/platform/boot.c
@@ -14,6 +14,7 @@
  * booting and management. */
 
 #include <autoconf.h>
+#include <sel4vmm/gen_config.h>
 
 #include <stdio.h>
 #include <string.h>
diff --git a/libsel4vmm/src/platform/boot_guest.c b/libsel4vmm/src/platform/boot_guest.c
index 7429c61..857de19 100644
--- a/libsel4vmm/src/platform/boot_guest.c
+++ b/libsel4vmm/src/platform/boot_guest.c
@@ -14,6 +14,7 @@
  * manipulation */
 
 #include <autoconf.h>
+#include <sel4vmm/gen_config.h>
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/libsel4vmm/src/platform/guest_memory.c b/libsel4vmm/src/platform/guest_memory.c
index 7cb331b..eb50ab5 100644
--- a/libsel4vmm/src/platform/guest_memory.c
+++ b/libsel4vmm/src/platform/guest_memory.c
@@ -11,6 +11,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4vmm/gen_config.h>
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/libsel4vmm/src/platform/guest_vspace.c b/libsel4vmm/src/platform/guest_vspace.c
index cdcc962..74c8845 100644
--- a/libsel4vmm/src/platform/guest_vspace.c
+++ b/libsel4vmm/src/platform/guest_vspace.c
@@ -11,6 +11,7 @@
  */
 
 #include <autoconf.h>
+#include <sel4vmm/gen_config.h>
 
 #include <stdlib.h>
 #include <string.h>
diff --git a/libsel4vmm/src/vmm/vmx_timer.c b/libsel4vmm/src/vmm/vmx_timer.c
index 3bb54f2..0edef16 100644
--- a/libsel4vmm/src/vmm/vmx_timer.c
+++ b/libsel4vmm/src/vmm/vmx_timer.c
@@ -13,6 +13,7 @@
 /*vm exits related with vmx timer*/
 
 #include <autoconf.h>
+#include <sel4vmm/gen_config.h>
 #include <stdio.h>
 #include <stdlib.h>
 
diff --git a/libsel4vspace/CMakeLists.txt b/libsel4vspace/CMakeLists.txt
index f497795..6d90d5b 100644
--- a/libsel4vspace/CMakeLists.txt
+++ b/libsel4vspace/CMakeLists.txt
@@ -25,5 +25,9 @@
 list(SORT deps)
 
 add_library(sel4vspace STATIC EXCLUDE_FROM_ALL ${deps})
-target_include_directories(sel4vspace PUBLIC include "arch_include/${KernelArch}")
-target_link_libraries(sel4vspace Configuration muslc sel4 sel4vka)
+target_include_directories(sel4vspace
+    PUBLIC
+        include
+        "arch_include/${KernelArch}"
+)
+target_link_libraries(sel4vspace muslc sel4 sel4vka sel4utils_Config)
diff --git a/libsel4vspace/include/vspace/vspace.h b/libsel4vspace/include/vspace/vspace.h
index 4ff8e64..e1396a6 100644
--- a/libsel4vspace/include/vspace/vspace.h
+++ b/libsel4vspace/include/vspace/vspace.h
@@ -12,6 +12,8 @@
 
 #pragma once
 
+#include <sel4utils/gen_config.h>
+
 #include <assert.h>
 #include <stddef.h>
 #include <vka/object.h>