summaryrefslogtreecommitdiff
path: root/bootstrap/stage2/Makefile
diff options
context:
space:
mode:
authorDanny Holman <dholman@gymli.org>2025-05-03 18:15:25 -0500
committerDanny Holman <dholman@gymli.org>2025-05-04 11:51:11 -0500
commit6535758dff5f02739f5b28c5539ebeea28ca2f23 (patch)
tree69b095cfd2c279825dd94a6165b85d4155decdd7 /bootstrap/stage2/Makefile
parent1cfbd25dc9eb39467406686c8ae1efbfd5517865 (diff)
bootstrap: create build filesHEADmaster
Create build infrastructure for a bootloader implementation. This loader should support UEFI and be able to load an ELF kernel at a designated entry point. Signed-off-by: Danny Holman <dholman@gymli.org>
Diffstat (limited to 'bootstrap/stage2/Makefile')
-rw-r--r--bootstrap/stage2/Makefile48
1 files changed, 48 insertions, 0 deletions
diff --git a/bootstrap/stage2/Makefile b/bootstrap/stage2/Makefile
new file mode 100644
index 0000000..938b5e8
--- /dev/null
+++ b/bootstrap/stage2/Makefile
@@ -0,0 +1,48 @@
+INCLUDE?=-Iinclude -I$(ROOTDIR)kernel/arch/$(ARCH)/include
+CFLAGS?=-O0 -ffreestanding -std=gnu11 -fno-stack-protector
+LDFLAGS?=-nostdlib
+
+# -- Do not edit below this line --
+
+INCLUDE:=$(INCLUDE) $(SYS_INCLUDE)
+CFLAGS:=$(CFLAGS) -Wall -Wextra -DVERSION=\"$(VERSION)\" -DARCH=\"$(ARCH)\" -g
+LDFLAGS:=$(LDFLAGS)
+ARCH:=$(ARCH)
+ELF:=boot-stage2
+
+ARCHDIR=arch/$(ARCH)
+
+include $(ARCHDIR)/make.config
+
+INCLUDE:=$(INCLUDE) $(STAGE2_ARCH_INCLUDE)
+CFLAGS:=$(CFLAGS) $(STAGE2_ARCH_CFLAGS)
+LDFLAGS:=$(LDFLAGS) $(STAGE2_ARCH_LDFLAGS)
+
+OBJS=$(STAGE2_ARCH_OBJS) \
+ init/init.o \
+ drivers/sata/sata.o \
+
+.PHONY: all clean install
+.SUFFIXES: .o .c .s
+
+all: $(ELF)
+
+$(ELF): $(OBJS)
+ @$(LD) --script=$(ARCHDIR)/linker.ld $(LDFLAGS) -o $@ $^
+ @echo [LD] $@
+
+.c.o:
+ @$(CC) -MD -c $< -o $@ $(CFLAGS) $(INCLUDE)
+ @echo [CC] $@
+
+.s.o:
+ @$(CC) -MD -c $< -o $@ $(CFLAGS) $(INCLUDE)
+ @echo [AS] $@
+
+clean:
+ $(RM) $(ELF) $(OBJS) $(OBJS:.o=.d)
+
+install: $(ELF)
+ install -m 0644 $(ELF) $(DESTDIR)$(BOOTDIR)
+
+-include $(OBJS:.o=.d)