1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
project('glitch kernel', 'c', version: '0.0.0', default_options: ['c_std=gnu11', 'warning_level=2', 'b_coverage=true'])
cc = meson.get_compiler('c')
if(cc.has_argument('-fanalyzer'))
add_project_arguments('-fanalyzer', language: 'c')
endif
python3 = import('python').find_installation('python3')
qemu = find_program('qemu-system-i386')
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')
subdir('lib')
kernel = executable('glitch.elf',
['src/multiboot2.c', 'src/mmap.c', 'src/kernel.c',
'src/isr.c', 'src/mem/vmm.c'],
link_with: [libk],
link_language: 'c',
link_args: ['-static', '-T', meson.current_source_dir()/'arch/i686/linker.ld'],
install: true, native: false, override_options: ['b_coverage=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'])
run_target('run', depends: glitch_iso, command: [qemu, '-cdrom', 'glitch.iso', '-accel', 'kvm'])
|