build: Simplify BIOS stage1 decompressor build system
It is now a single assembly file so it can be simplified.
diff --git a/.gitignore b/.gitignore
index 73732055..81f17d2e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,7 +31,6 @@
/common/lib/stb_image.h
/common/cc-runtime.s2.c
/cc-runtime
-/decompressor/cc-runtime.c
/libfdt
/edk2-ovmf
/bochsout.txt
@@ -55,6 +54,7 @@
/common-uefi-riscv64
/common-uefi-loongarch64
/decompressor-build
+/tools-build
/stage1.stamp
diff --git a/GNUmakefile.in b/GNUmakefile.in
index 7a075b07..fd0c24aa 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -124,7 +124,7 @@ limine:
$(MAKE) '$(call SHESCAPE,$(BINDIR))/limine'
.PHONY: clean
-clean: limine-bios-clean limine-uefi-ia32-clean limine-uefi-x86-64-clean limine-uefi-aarch64-clean limine-uefi-riscv64-clean limine-uefi-loongarch64-clean
+clean: tools-clean limine-bios-clean limine-uefi-ia32-clean limine-uefi-x86-64-clean limine-uefi-aarch64-clean limine-uefi-riscv64-clean limine-uefi-loongarch64-clean
rm -rf '$(call SHESCAPE,$(BINDIR))' '$(call SHESCAPE,$(BUILDDIR))/stage1.stamp'
.PHONY: install
@@ -187,7 +187,9 @@ uninstall:
rm -f '$(call SHESCAPE,$(DESTDIR)$(bindir))/limine'
rm -rf '$(call SHESCAPE,$(DESTDIR)$(datarootdir))/limine'
-$(call MKESCAPE,$(BUILDDIR))/stage1.stamp: $(STAGE1_FILES) $(call MKESCAPE,$(BUILDDIR))/decompressor-build/decompressor.bin $(call MKESCAPE,$(BUILDDIR))/common-bios/stage2.bin.limlz
+$(call MKESCAPE,$(BUILDDIR))/stage1.stamp: $(STAGE1_FILES) $(call MKESCAPE,$(BUILDDIR))/common-bios/stage2.bin.limlz
+ $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))/decompressor-build'
+ cd '$(call SHESCAPE,$(SRCDIR))/stage1' && nasm decompressor.asm -Wall -w-unknown-warning -w-reloc $(WERROR_FLAG) -fbin -o '$(call SHESCAPE,$(BUILDDIR))/decompressor-build/decompressor.bin'
$(MKDIR_P) '$(call SHESCAPE,$(BINDIR))'
cd '$(call SHESCAPE,$(SRCDIR))/stage1/hdd' && nasm bootsect.asm -Wall -w-unknown-warning -w-reloc $(WERROR_FLAG) -fbin -DBUILDDIR="'"'$(call NASMESCAPE,$(BUILDDIR))'"'" -o '$(call SHESCAPE,$(BINDIR))/limine-bios-hdd.bin'
ifneq ($(BUILD_BIOS_CD),no)
@@ -200,7 +202,7 @@ endif
touch '$(call SHESCAPE,$(BUILDDIR))/stage1.stamp'
.PHONY: limine-bios
-limine-bios: common-bios decompressor
+limine-bios: common-bios
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/stage1.stamp'
$(call MKESCAPE,$(BINDIR))/limine-uefi-cd.bin: $(if $(BUILD_UEFI_IA32),$(call MKESCAPE,$(BUILDDIR))/common-uefi-ia32/BOOTIA32.EFI) $(if $(BUILD_UEFI_X86_64),$(call MKESCAPE,$(BUILDDIR))/common-uefi-x86-64/BOOTX64.EFI) $(if $(BUILD_UEFI_AARCH64),$(call MKESCAPE,$(BUILDDIR))/common-uefi-aarch64/BOOTAA64.EFI) $(if $(BUILD_UEFI_RISCV64),$(call MKESCAPE,$(BUILDDIR))/common-uefi-riscv64/BOOTRISCV64.EFI) $(if $(BUILD_UEFI_LOONGARCH64),$(call MKESCAPE,$(BUILDDIR))/common-uefi-loongarch64/BOOTLOONGARCH64.EFI)
@@ -328,7 +330,7 @@ distclean: clean
.PHONY: maintainer-clean
maintainer-clean: distclean
- cd '$(call SHESCAPE,$(SRCDIR))' && rm -rf flanterm common/lib/stb_image.h.nopatch common/lib/stb_image.h libfdt freestnd-c-hdrs cc-runtime common/cc-runtime.s2.c decompressor/cc-runtime.c limine-protocol picoefi configure timestamps build-aux *'~' autom4te.cache aclocal.m4 *.tar*
+ cd '$(call SHESCAPE,$(SRCDIR))' && rm -rf flanterm common/lib/stb_image.h.nopatch common/lib/stb_image.h libfdt freestnd-c-hdrs cc-runtime common/cc-runtime.s2.c limine-protocol picoefi configure timestamps build-aux *'~' autom4te.cache aclocal.m4 *.tar*
.PHONY: common-uefi-x86-64
common-uefi-x86-64:
@@ -381,27 +383,26 @@ common-uefi-ia32-clean:
rm -rf '$(call SHESCAPE,$(BUILDDIR))/common-uefi-ia32'
.PHONY: common-bios
-common-bios: $(call MKESCAPE,$(BINDIR))/limlzpack
+common-bios: $(call MKESCAPE,$(BUILDDIR))/tools-build/limlzpack
$(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/common' -f common.mk \
TARGET=bios \
BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/common-bios' \
- LIMLZPACK='$(call SHESCAPE,$(BINDIR))/limlzpack'
+ LIMLZPACK='$(call SHESCAPE,$(BUILDDIR))/tools-build/limlzpack'
.PHONY: common-bios-clean
common-bios-clean:
rm -rf '$(call SHESCAPE,$(BUILDDIR))/common-bios'
-$(call MKESCAPE,$(BINDIR))/limlzpack: $(call MKESCAPE,$(SRCDIR))/tools/limlzpack.c
- $(MKDIR_P) '$(call SHESCAPE,$(BINDIR))'
+$(call MKESCAPE,$(BUILDDIR))/tools-build/limlzpack: $(call MKESCAPE,$(SRCDIR))/tools/limlzpack.c
+ $(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))/tools-build'
$(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -std=c99 -Wall -Wextra $(WERROR_FLAG) '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
-.PHONY: decompressor
-decompressor:
- $(MAKE) -C '$(call SHESCAPE,$(SRCDIR))/decompressor' -f decompressor.mk \
- BUILDDIR='$(call SHESCAPE,$(BUILDDIR))/decompressor-build'
-
.PHONY: decompressor-clean
decompressor-clean:
rm -rf '$(call SHESCAPE,$(BUILDDIR))/decompressor-build'
+.PHONY: tools-clean
+tools-clean:
+ rm -rf '$(call SHESCAPE,$(BUILDDIR))/tools-build'
+
-include test.mk
diff --git a/bootstrap b/bootstrap
index 591e6a0a..c15d6e8c 100755
--- a/bootstrap
+++ b/bootstrap
@@ -80,7 +80,6 @@ if ! test -f version; then
cc-runtime \
dae79833b57a01b9fd3e359ee31def69f5ae899b
cp cc-runtime/src/cc-runtime.c common/cc-runtime.s2.c
- cp cc-runtime/src/cc-runtime.c decompressor/cc-runtime.c
clone_repo_commit \
https://github.com/Limine-Bootloader/limine-protocol.git \
diff --git a/common/common.mk b/common/common.mk
index f44601ef..d56faf4a 100644
--- a/common/common.mk
+++ b/common/common.mk
@@ -324,7 +324,7 @@ endif
ifeq ($(TARGET),bios)
-$(call MKESCAPE,$(BUILDDIR))/stage2.bin.limlz: $(call MKESCAPE,$(BUILDDIR))/stage2.bin $(LIMLZPACK)
+$(call MKESCAPE,$(BUILDDIR))/stage2.bin.limlz: $(call MKESCAPE,$(BUILDDIR))/stage2.bin
'$(call SHESCAPE,$(LIMLZPACK))' '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)'
$(call MKESCAPE,$(BUILDDIR))/stage2.bin: $(call MKESCAPE,$(BUILDDIR))/limine-bios.sys
diff --git a/decompressor/decompressor.mk b/decompressor/decompressor.mk
deleted file mode 100644
index 1e6a3a43..00000000
--- a/decompressor/decompressor.mk
+++ /dev/null
@@ -1,83 +0,0 @@
-.SUFFIXES:
-
-override SPACE := $(subst ,, )
-
-override MKESCAPE = $(subst $(SPACE),\ ,$(1))
-override SHESCAPE = $(subst ','\'',$(1))
-override OBJESCAPE = $(subst .a ,.a' ',$(subst .o ,.o' ',$(call SHESCAPE,$(1))))
-
-override CC_FOR_TARGET_IS_CLANG := $(shell ! $(CC_FOR_TARGET) --version 2>/dev/null | $(GREP) -q '^Target: '; echo $$?)
-
-ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
- override CC_FOR_TARGET += \
- -target i686-unknown-none-elf
-endif
-
-override CFLAGS_FOR_TARGET += \
- -Os \
- -Wall \
- -Wextra \
- -Wshadow \
- -Wvla \
- $(WERROR_FLAG) \
- -std=gnu11 \
- -nostdinc \
- -ffreestanding \
- -ffunction-sections \
- -fdata-sections \
- -fno-stack-protector \
- -fno-stack-check \
- -fomit-frame-pointer \
- -fno-strict-aliasing \
- -fno-lto \
- -fno-PIC \
- -m32 \
- -march=i686 \
- -mabi=sysv \
- -mno-80387 \
- -mno-mmx
-
-override CPPFLAGS_FOR_TARGET := \
- -I . \
- -isystem ../freestnd-c-hdrs/include \
- $(CPPFLAGS_FOR_TARGET) \
- -MMD \
- -MP
-
-override LDFLAGS_FOR_TARGET += \
- -m elf_i386 \
- -nostdlib \
- -z max-page-size=0x1000 \
- --gc-sections \
- -static \
- -T linker.ld
-
-override NASMFLAGS_FOR_TARGET := \
- -f elf32 \
- $(patsubst -g,-g -F dwarf,$(NASMFLAGS_FOR_TARGET)) \
- -Wall \
- -w-unknown-warning \
- -w-reloc \
- $(WERROR_FLAG)
-
-override C_FILES := $(shell find . -type f -name '*.c' | LC_ALL=C sort)
-override ASM_FILES := $(shell find . -type f -name '*.asm' | LC_ALL=C sort)
-override OBJ := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(ASM_FILES:.asm=.o) $(C_FILES:.c=.o))
-override HEADER_DEPS := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c=.d))
-
-.PHONY: all
-all: $(call MKESCAPE,$(BUILDDIR))/decompressor.bin
-
-$(call MKESCAPE,$(BUILDDIR))/decompressor.bin: $(OBJ)
- $(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call SHESCAPE,$(BUILDDIR))/decompressor.elf'
- $(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$(BUILDDIR))/decompressor.elf' '$(call SHESCAPE,$@)'
-
--include $(HEADER_DEPS)
-
-$(call MKESCAPE,$(BUILDDIR))/%.o: %.c
- $(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
- $(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
-
-$(call MKESCAPE,$(BUILDDIR))/%.o: %.asm
- $(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
- nasm '$(call SHESCAPE,$<)' $(NASMFLAGS_FOR_TARGET) -o '$(call SHESCAPE,$@)'
diff --git a/decompressor/linker.ld b/decompressor/linker.ld
deleted file mode 100644
index c6adcfac..00000000
--- a/decompressor/linker.ld
+++ /dev/null
@@ -1,39 +0,0 @@
-OUTPUT_FORMAT(elf32-i386)
-ENTRY(_start)
-
-PHDRS
-{
- text PT_LOAD FLAGS(0x05);
- rodata PT_LOAD FLAGS(0x04);
- data PT_LOAD FLAGS(0x06);
-}
-
-SECTIONS
-{
- . = 0x70000;
-
- .text : {
- *(.entry)
- *(.text .text.*)
- } :text
-
- .rodata : {
- *(.rodata .rodata.*)
- } :rodata
-
- .data : {
- *(.data .data.*)
- } :data
-
- .bss : {
- bss_begin = .;
- *(.bss .bss.*)
- *(COMMON)
- bss_end = .;
- } :data
-
- /DISCARD/ : {
- *(.eh_frame*)
- *(.note .note.*)
- }
-}
diff --git a/decompressor/decompressor.asm b/stage1/decompressor.asm
similarity index 96%
rename from decompressor/decompressor.asm
rename to stage1/decompressor.asm
index 8082e47c..23448bc7 100644
--- a/decompressor/decompressor.asm
+++ b/stage1/decompressor.asm
@@ -22,10 +22,9 @@
; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+org 0x70000
bits 32
-section .entry progbits alloc exec nowrite align=16
-
global _start
_start:
cld
@@ -131,9 +130,5 @@ _start:
cli
hlt
-section .rodata progbits alloc noexec nowrite align=1
-
errmsg: db "limine integrity error"
.len: equ $ - errmsg
-
-section .note.GNU-stack noalloc noexec nowrite progbits
