diff options
Diffstat (limited to '')
-rw-r--r-- | bootstrap/stage1/Makefile | 59 |
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) |