diff options
Diffstat (limited to 'bootstrap/stage1')
-rw-r--r-- | bootstrap/stage1/Makefile | 57 | ||||
-rw-r--r-- | bootstrap/stage1/arch/x86_64/make.conf | 27 | ||||
-rw-r--r-- | bootstrap/stage1/firmware/efi/make.conf | 14 |
3 files changed, 98 insertions, 0 deletions
diff --git a/bootstrap/stage1/Makefile b/bootstrap/stage1/Makefile new file mode 100644 index 0000000..7c3bf81 --- /dev/null +++ b/bootstrap/stage1/Makefile @@ -0,0 +1,57 @@ +# 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/>. + +include $(ROOTDIR)/common.mk + +INCLUDE+=-I$(ARCHDIR)/include -Iinclude -I$(ROOTDIR)kernel/include -I$(ROOTDIR)kernel/arch/$(ARCH)/include +CFLAGS+=-ffreestanding -fno-stack-protector $(BS_OPLVL) + +BINARY=bootstrap-stage1 + +include $(ARCHDIR)/make.conf +FIRMWARE_DIR=firmware/$(FIRMWARE) +include $(FIRMWARE_DIR)/make.conf +COMMON_DIR=firmware/common + +COMMON_OBJS=$(COMMON_DIR)/bprintf.o \ + $(COMMON_DIR)/elf_load.o \ + $(COMMON_DIR)/exception.o \ + $(COMMON_DIR)/rescue.o \ + $(COMMON_DIR)/string.o \ + +OBJS=$(ARCH_OBJS) \ + $(COMMON_OBJS) \ + $(FIRMWARE_OBJS) \ + +.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) diff --git a/bootstrap/stage1/arch/x86_64/make.conf b/bootstrap/stage1/arch/x86_64/make.conf new file mode 100644 index 0000000..ec364c7 --- /dev/null +++ b/bootstrap/stage1/arch/x86_64/make.conf @@ -0,0 +1,27 @@ +# 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/>. + +INCLUDE+=-I$(ARCHDIR)/include +AFLAGS+=-target $(ARCH)-pc-win32-coff +CFLAGS+=-mno-red-zone -mno-mmx -mno-sse -mno-sse2 -target $(ARCH)-pc-win32-coff +LDFLAGS+=-entry:_start + +ARCH_OBJS=$(ARCHDIR)/asm/entry.o \ + $(ARCHDIR)/asm/__chkstk.o \ + $(ARCHDIR)/asm/paging.o \ + $(ARCHDIR)/paging.o \ + $(ARCHDIR)/serial.o \ diff --git a/bootstrap/stage1/firmware/efi/make.conf b/bootstrap/stage1/firmware/efi/make.conf new file mode 100644 index 0000000..3b1615e --- /dev/null +++ b/bootstrap/stage1/firmware/efi/make.conf @@ -0,0 +1,14 @@ +LD:=lld-link + +ifeq (BS_DEBUG,YES) + AFLAGS+=-gcodeview + CFLAGS+=-gcodeview +endif + +CFLAGS+=-fshort-wchar +LDFLAGS+=-subsystem:efi_application -out:$(BINARY) + +FIRMWARE_OBJS=$(FIRMWARE_DIR)/efi.o \ + $(FIRMWARE_DIR)/bs_alloc.o \ + $(FIRMWARE_DIR)/tty.o \ + $(FIRMWARE_DIR)/util.o \ |