summaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build57
1 files changed, 57 insertions, 0 deletions
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..fd270f0
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,57 @@
+project('kernel', 'c', subproject_dir: 'third')
+fs = import('fs')
+
+kernel_src = [
+ 'kernel.c'
+]
+kernel_link_dep = []
+kernel_link_arg = []
+kernel_inc = [include_directories('.')]
+kernel_mod = []
+
+# Modules
+subdir('rt')
+subdir('arch')
+subdir('mem')
+
+kernel = executable('kernel', kernel_src, link_with: kernel_mod, include_directories: kernel_inc, link_args: kernel_link_arg, link_depends: kernel_link_dep)
+
+# Create the bootable disk file
+
+boot_bin = subproject('boot').get_variable('boot_bin')
+mkboot = subproject('scripts').get_variable('mkboot')
+bsfs = subproject('bsfs').get_variable('bsfs')
+
+embed_files = [
+ meson.current_source_dir() / 'boot.ini'
+]
+
+embed_tgt = [
+ kernel
+]
+
+mkboot_cmd = [
+ mkboot,
+ bsfs,
+ '@OUTPUT@',
+ '@INPUT@'
+]
+
+foreach e : embed_files
+ mkboot_cmd += e
+ mkboot_cmd += fs.name(e)
+endforeach
+
+foreach e : embed_tgt
+ mkboot_cmd += e.full_path()
+ mkboot_cmd += fs.name(e.full_path())
+endforeach
+
+boot_fs = custom_target('boot.fs',
+ output: 'boot.fs',
+ input: boot_bin,
+ command: mkboot_cmd,
+ depend_files: embed_files,
+ depends: [mkboot, bsfs, embed_tgt],
+ install: true,
+ install_dir: 'subdir') \ No newline at end of file