From fd2aada36b98bba7476d060c448055c7180b9020 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Wed, 16 Oct 2019 22:47:45 +0200 Subject: Add meson build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit That should provide same build results as the Makefile. tags targets are pending review for meson: https://github.com/mesonbuild/meson/pull/6058 Signed-off-by: Marc-André Lureau --- Makefile | 57 --------------------------------------------------------- code32seg.c | 2 ++ meson.build | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 57 deletions(-) delete mode 100644 Makefile create mode 100644 meson.build diff --git a/Makefile b/Makefile deleted file mode 100644 index b5970a8..0000000 --- a/Makefile +++ /dev/null @@ -1,57 +0,0 @@ -obj-y = code16.o entry.o main.o string.o printf.o cstart.o fw_cfg.o -obj-y += linuxboot.o malloc.o tables.o hwsetup.o pci.o code32seg.o -obj-y += mptable.o smbios.o - -all-y = bios.bin -all: $(all-y) - -CFLAGS := -O2 -g - -BIOS_CFLAGS += $(autodepend-flags) -Wall -BIOS_CFLAGS += -m32 -BIOS_CFLAGS += -march=i386 -BIOS_CFLAGS += -mregparm=3 -BIOS_CFLAGS += -fno-stack-protector -fno-delete-null-pointer-checks -BIOS_CFLAGS += -ffreestanding -BIOS_CFLAGS += -mstringop-strategy=rep_byte -minline-all-stringops -BIOS_CFLAGS += -Iinclude -BIOS_CFLAGS += -fno-pic - -code32seg.o-cflags = -fno-jump-tables - -dummy := $(shell mkdir -p .deps) -autodepend-flags = -MMD -MF .deps/cc-$(patsubst %/,%,$(dir $*))-$(notdir $*).d --include .deps/*.d - -.PRECIOUS: %.o -%.o: %.c - $(CC) $(CFLAGS) $(BIOS_CFLAGS) $($@-cflags) -c -s $< -o $@ -%.o: %.S - $(CC) $(CFLAGS) $(BIOS_CFLAGS) -c -s $< -o $@ - -bios.bin.elf: $(obj-y) flat.lds - $(LD) -T flat.lds -o bios.bin.elf $(obj-y) - -bios.bin: bios.bin.elf - objcopy -O binary bios.bin.elf bios.bin - -clean: - rm -f $(obj-y) $(all-y) bios.bin.elf - rm -f cscope.* tags TAGS - rm -rf .deps - -.PHONY: cscope -cscope: - rm -f cscope.* - find . -name "*.[chsS]" -print | sed 's,^\./,,' > cscope.files - cscope -b -i cscope.files - -.PHONY: ctags -ctags: - rm -f tags - find . -name "*.[ch]" -exec ctags --append {} + - -.PHONY: TAGS -TAGS: - rm -f TAGS - find . -name "*.[ch]" -exec etags --append {} + diff --git a/code32seg.c b/code32seg.c index 213bf44..e829c03 100644 --- a/code32seg.c +++ b/code32seg.c @@ -21,6 +21,8 @@ static inline void *from_flat_ptr(void *p) #define FLAT_VAR(x) (*(typeof(&(x))) from_flat_ptr(&(x))) +#pragma GCC optimize("no-jump-tables") + bioscall void pcibios_handler(struct bios32regs *args) { switch (args->eax) { 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, +) -- cgit v1.1