project('glitch kernel', 'c', version: '0.0.0', default_options: ['c_std=gnu11', 'warning_level=2']) python3 = import('python').find_installation('python3') cc = meson.get_compiler('c') conf = configuration_data() conf.set_quoted('VERSION', run_command(['git', 'describe', '--long'], capture: true, check: true).stdout().strip()) conf.set_quoted('CC', cc.get_id() + ' ' + cc.version()) configure_file(output: 'conf.h', configuration: conf) subdir('arch/i686') subdir('devices') kernel = executable('glitch.elf', ['src/multiboot2.c', 'src/mmap.c', 'src/kernel.c', 'src/isr.c', 'src/mem/vmm.c', 'lib/string/itoa.c', 'lib/stdio/printf.c'], link_language: 'c', link_args: ['-ffreestanding', '-static', '-T', meson.current_source_dir()/'arch/i686/linker.ld'], install: true, native: false, include_directories: [ include_directories('grub/include', is_system: true), include_directories('lib') ], dependencies: [arch, devices] ) glitch_iso = custom_target('glitch.iso', input: 'scripts/mkiso.py', output: 'glitch.iso', depends: [kernel], command: [python3, '@INPUT@', kernel, '@SOURCE_ROOT@/grub/grub.cfg']) qemu = find_program('qemu-system-i386') run_target('run', depends: glitch_iso, command: [qemu, '-cdrom', 'glitch.iso', '-accel', 'kvm'])