summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meson.build30
-rw-r--r--meson.options2
2 files changed, 25 insertions, 7 deletions
diff --git a/meson.build b/meson.build
index 76539ce..8f56ec0 100644
--- a/meson.build
+++ b/meson.build
@@ -10,24 +10,29 @@ if not meson.is_cross_build()
error('must be invoked with "meson setup --cross-file=toolchain.txt"')
endif
+fs = import('fs')
+linker_script = fs.copyfile('util/linker.ld')
+
files = [
'src/asm/boot.asm',
'src/asm/long.asm',
'src/nrvn.c',
- 'src/vga.c',
+ 'src/acpi.c',
'src/idt.c',
'src/mem.c',
- 'src/acpi.c',
- 'src/ps2.c',
+ 'src/memory.c',
+ 'src/pci.c',
'src/pic.c',
- 'src/memory.c'
+ 'src/ps2.c',
+ 'src/vga.c',
+ linker_script
]
ld_args = [
'-ffreestanding',
'-nostdlib',
'-T',
- join_paths(meson.current_source_dir(), 'util', 'linker.ld')
+ linker_script.full_path()
]
kernel = executable('nrvn', files,
@@ -38,8 +43,19 @@ kernel = executable('nrvn', files,
iso = custom_target('iso',
- input: [import('fs').copyfile('util/grub.cfg'), kernel],
+ input: [fs.copyfile('util/grub.cfg'), kernel],
output: 'nrvn.iso',
command: ['util/build_iso.sh', '@PRIVATE_DIR@', '@INPUT@', '@OUTPUT@'])
-run_target('run', command: [find_program('qemu'), '-cdrom', iso, '-m', '2G'])
+qemu_args = [
+ '-cdrom', iso,
+ '-m', get_option('ram'),
+]
+
+qemu_kvm = []
+if get_option('kvm')
+ qemu_kvm += '-enable-kvm'
+endif
+
+run_target('run', command: [find_program('qemu'), qemu_args, qemu_kvm])
+run_target('run-gdb', command: [find_program('qemu'), qemu_args, '-s', '-S'])
diff --git a/meson.options b/meson.options
new file mode 100644
index 0000000..9d3e751
--- /dev/null
+++ b/meson.options
@@ -0,0 +1,2 @@
+option('ram', type: 'string', value: '512M', description: 'how much ram to give qemu')
+option('kvm', type: 'boolean', value: 'true', description: 'run qemu with -enable-kvm')