From 9d1dc21b597470a1acb5b512c240c7f27b87b17c Mon Sep 17 00:00:00 2001 From: Joursoir Date: Thu, 29 Sep 2022 10:52:00 +0300 Subject: x86/multiboot: add multiboot header Unfortunately, GNU AS doesn't perform GCC-like preprocessing. So, to include the multiboot header in the assembly code, we should parse and format it to GAS-style. --- arch/x86/boot/multiboot/Makefile | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 arch/x86/boot/multiboot/Makefile (limited to 'arch/x86/boot/multiboot/Makefile') diff --git a/arch/x86/boot/multiboot/Makefile b/arch/x86/boot/multiboot/Makefile new file mode 100644 index 0000000..995237d --- /dev/null +++ b/arch/x86/boot/multiboot/Makefile @@ -0,0 +1,25 @@ +# If you want run this makefile immediately, then set environment +# variables (CC, LD, AS, OBJDUMP) to path of your cross-compiler. +# +# The best way to build multiboot header is to run the corresponding +# target in the main Makefile, which is in the root of the +# project (.../path/to/os/Makefile) + +MULTIBOOT_HEADER = $(ARCH_INCLUDE)/multiboot.h +BARE_MULTIBOOT_HEADER = bare_multiboot.h + +.PHONY: all clean + +all: $(BARE_MULTIBOOT_HEADER) + +$(BARE_MULTIBOOT_HEADER): $(MULTIBOOT_HEADER) + $(CC) -E -dM -undef -fsyntax-only $(MULTIBOOT_HEADER) > $(BARE_MULTIBOOT_HEADER) +# Delete all defines that have double underscore + sed -i '/__/d' $(BARE_MULTIBOOT_HEADER) +# Replace "#define" with ".set" on each line + sed -i 's/#define/.set/g' $(BARE_MULTIBOOT_HEADER) +# Put a comma after the macro name + sed -i 's/\>/,/2' $(BARE_MULTIBOOT_HEADER) + +clean: + rm $(BARE_MULTIBOOT_HEADER) -- cgit v1.2.3-18-g5258