summaryrefslogtreecommitdiff
path: root/bootstrap/stage1/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'bootstrap/stage1/Makefile')
-rw-r--r--bootstrap/stage1/Makefile59
1 files changed, 50 insertions, 9 deletions
diff --git a/bootstrap/stage1/Makefile b/bootstrap/stage1/Makefile
index b09f1ad..7c3bf81 100644
--- a/bootstrap/stage1/Makefile
+++ b/bootstrap/stage1/Makefile
@@ -1,16 +1,57 @@
-SUBDIRS:=efi \
+# Copyright (C) 2025 Danny Holman <dholman@gymli.org>
+#
+# This file is part of BoxOS, a free and open-source Unix-like operating
+# system.
+#
+# BoxOS is free software; you can redistribute it and/or modify under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# BoxOS is distributed in the hope it will be useful, but WITHOUT ANY WARRANTY;
+# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# BoxOS; if not, see <https://www.gnu.org/licenses/>.
-export ARCH VERSION DESTDIR SYS_INCLUDE
+include $(ROOTDIR)/common.mk
-.PHONY: all clean $(SUBDIRS)
+INCLUDE+=-I$(ARCHDIR)/include -Iinclude -I$(ROOTDIR)kernel/include -I$(ROOTDIR)kernel/arch/$(ARCH)/include
+CFLAGS+=-ffreestanding -fno-stack-protector $(BS_OPLVL)
-all: $(SUBDIRS)
+BINARY=bootstrap-stage1
-subdirs: $(SUBDIRS)
+include $(ARCHDIR)/make.conf
+FIRMWARE_DIR=firmware/$(FIRMWARE)
+include $(FIRMWARE_DIR)/make.conf
+COMMON_DIR=firmware/common
-$(SUBDIRS):
- $(MAKE) $(MAKECMDGOALS) -C $@
+COMMON_OBJS=$(COMMON_DIR)/bprintf.o \
+ $(COMMON_DIR)/elf_load.o \
+ $(COMMON_DIR)/exception.o \
+ $(COMMON_DIR)/rescue.o \
+ $(COMMON_DIR)/string.o \
-clean: $(SUBDIRS)
+OBJS=$(ARCH_OBJS) \
+ $(COMMON_OBJS) \
+ $(FIRMWARE_OBJS) \
-install: $(SUBDIRS)
+.PHONY: all clean install
+
+all: $(BINARY)
+
+$(BINARY): $(OBJS)
+ @$(LD) $(LDFLAGS) $^
+
+%.o: %.c
+ @$(CC) -MD -c $< -o $@ $(CFLAGS) $(INCLUDE)
+ @echo [CC] $@
+
+%.o: %.s
+ @$(CC) -c $< -o $@ $(AFLAGS) $(INCLUDE)
+
+clean:
+ $(RM) $(BINARY) $(OBJS) $(OBJS:.o=.d)
+
+-include $(OBJS:.o=.d)