summaryrefslogtreecommitdiff
path: root/bootstrap/stage2
diff options
context:
space:
mode:
authorDanny Holman <dholman@gymli.org>2025-08-28 08:36:42 -0500
committerDanny Holman <dholman@gymli.org>2025-08-28 08:36:42 -0500
commita3085f5b9309c659c58282b4e50d955dcb0c0b7f (patch)
tree0b41f921d7d4e40b96392149be291542648e1f68 /bootstrap/stage2
parentbootstrap: create build files (diff)
downloadbox-master.tar.gz
box-master.tar.zst
box-master.zip
bootstrap: update build configsHEADmaster
Update the build configuration files for the included bootloader to match the formatting requirements of the main build configs. Signed-off-by: Danny Holman <dholman@gymli.org>
Diffstat (limited to 'bootstrap/stage2')
-rw-r--r--bootstrap/stage2/Makefile82
-rw-r--r--bootstrap/stage2/arch/x86_64/linker.ld2
-rw-r--r--bootstrap/stage2/arch/x86_64/make.conf5
-rw-r--r--bootstrap/stage2/arch/x86_64/make.config6
4 files changed, 40 insertions, 55 deletions
diff --git a/bootstrap/stage2/Makefile b/bootstrap/stage2/Makefile
index 938b5e8..2b3951d 100644
--- a/bootstrap/stage2/Makefile
+++ b/bootstrap/stage2/Makefile
@@ -1,48 +1,34 @@
-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)
+# 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
+
+ifeq (BS_DEBUG,YES)
+ AFLAGS+=-g
+ CFLAGS+=-g
+endif
+
+INCLUDE+=-Iinclude -I$(ROOTDIR)kernel/include
+CFLAGS+=-ffreestanding -fno-stack-protector $(BS_OPLVL)
+
+BINARY=bootstrap-stage2
+
+include $(ARCHDIR)/make.conf
+
+OBJS=$(ARCH_OBJS) \
+
+include $(ROOTDIR)/patterns.mk
diff --git a/bootstrap/stage2/arch/x86_64/linker.ld b/bootstrap/stage2/arch/x86_64/linker.ld
index 04b6148..7bd0460 100644
--- a/bootstrap/stage2/arch/x86_64/linker.ld
+++ b/bootstrap/stage2/arch/x86_64/linker.ld
@@ -1,4 +1,4 @@
-ENTRY(bootstrap_main)
+ENTRY(_start)
SECTIONS {
. = 0x2000;
diff --git a/bootstrap/stage2/arch/x86_64/make.conf b/bootstrap/stage2/arch/x86_64/make.conf
new file mode 100644
index 0000000..930b95e
--- /dev/null
+++ b/bootstrap/stage2/arch/x86_64/make.conf
@@ -0,0 +1,5 @@
+AFLAGS+=-target $(ARCH)-none-elf
+CFLAGS+=-target $(ARCH)-none-elf -mno-red-zone -mno-mmx -mno-sse -mno-sse2
+LDFLAGS+=--script=$(ARCHDIR)/linker.ld
+
+ARCH_OBJS=$(ARCHDIR)/asm/entry.o \
diff --git a/bootstrap/stage2/arch/x86_64/make.config b/bootstrap/stage2/arch/x86_64/make.config
deleted file mode 100644
index 3c73a35..0000000
--- a/bootstrap/stage2/arch/x86_64/make.config
+++ /dev/null
@@ -1,6 +0,0 @@
-STAGE2_ARCH_INCLUDE=-I$(ARCHDIR)/include
-STAGE2_ARCH_CFLAGS=-target x86_64-pc-none-elf -mno-red-zone -mno-mmx -mno-sse -mno-sse2
-STAGE2_ARCH_LDFLAGS=
-STAGE2_ARCH_LIBS=
-
-STAGE2_ARCH_OBJS=