aboutsummaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build52
1 files changed, 52 insertions, 0 deletions
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..ce291a3
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,52 @@
+project('qboot', 'c')
+
+cc = meson.get_compiler('c')
+objcopy = find_program('objcopy')
+
+c_args = [
+ '-m32',
+ '-march=i386',
+ '-mregparm=3',
+ '-fno-stack-protector',
+ '-fno-delete-null-pointer-checks',
+ '-ffreestanding',
+ '-mstringop-strategy=rep_byte',
+ '-minline-all-stringops',
+ '-fno-pic',
+]
+
+link_args = ['-nostdlib', '-m32']
+link_args += cc.get_supported_link_arguments('-Wl,--build-id=none')
+link_args += '-Wl,-T' + meson.current_source_dir() / 'flat.lds'
+
+elf = executable(
+ 'bios.bin.elf',
+ files(
+ 'code16.c',
+ 'code32seg.c',
+ 'cstart.S',
+ 'entry.S',
+ 'fw_cfg.c',
+ 'hwsetup.c',
+ 'linuxboot.c',
+ 'main.c',
+ 'malloc.c',
+ 'mptable.c',
+ 'pci.c',
+ 'printf.c',
+ 'string.c',
+ 'smbios.c',
+ 'tables.c',
+ ),
+ c_args: c_args,
+ include_directories: include_directories('include'),
+ link_args: link_args,
+)
+
+bin = custom_target(
+ 'bios.bin',
+ output: 'bios.bin',
+ input: elf,
+ command: [objcopy, '-O', 'binary', '@INPUT@', '@OUTPUT@'],
+ build_by_default: true,
+)