A toy operating system written in C.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
freywaros/meson.build

86 lines
1.7 KiB

project(
'freywaros',
'c',
default_options: [
'warning_level=2',
'c_std=c11',
],
version: '0.1.0',
)
run_target(
'compdb',
command: ['ninja', '-C', meson.project_build_root(), '-t', 'compdb'],
)
nasm = find_program('nasm')
custom_target(
'boot',
input: 'src/mbr.asm',
output: 'mbr.bin',
command: [nasm, '-f', 'bin', '-l', 'mbr.lst', '@INPUT@', '-o', '@OUTPUT@'],
build_by_default: true,
)
custom_target(
'bootloader',
input: 'src/bootloader.asm',
output: 'bootloader.bin',
command: [nasm, '-f', 'bin', '-l', 'bootloader.lst', '@INPUT@', '-o', '@OUTPUT@'],
build_by_default: true,
)
kernel_entry_o = custom_target(
'kernel_entry',
input: 'src/kernel_entry.asm',
output: 'kernel_entry.o',
command: [nasm, '-f', 'elf64', '@INPUT@', '-o', '@OUTPUT@'],
)
cc = meson.get_compiler('c')
kernel_sources = files(
'src/app/cat.c',
'src/app/ls.c',
'src/app/terminal.c',
'src/ata.c',
'src/fat16.c',
'src/fs.c',
'src/idt.c',
'src/kernel.c',
'src/keyboard.c',
'src/memory.c',
'src/panic.c',
'src/pic.c',
'src/string.c',
'src/vga.c',
)
kernel_elf = executable(
'kernel.elf',
sources: [kernel_entry_o, kernel_sources],
c_args: [
'-ffreestanding',
'-nostdlib',
'-nostartfiles',
'-mno-red-zone',
'-mgeneral-regs-only',
'-Wno-unused-command-line-argument',
'-Wconversion',
'-DVERSION="' + meson.project_version() + '"',
],
link_args: [
'-T', meson.project_source_root() / 'src/linker.ld',
'-nostdlib',
],
link_depends: 'src/linker.ld',
)
custom_target(
'kernel_bin',
input: kernel_elf,
output: 'kernel.bin',
command: ['objcopy', '-O', 'binary', '@INPUT@', '@OUTPUT@'],
build_by_default: true,
)