Revert "misc: Revert back to using tinf for all GZ decompression"
This reverts commit 3438b8d235
.
This commit is contained in:
parent
e9186e1859
commit
f618eb26af
@ -229,9 +229,9 @@ An example `limine.cfg` file can be found in [`test/limine.cfg`](https://github.
|
|||||||
More info on the format of `limine.cfg` can be found in [`CONFIG.md`](https://github.com/limine-bootloader/limine/blob/trunk/CONFIG.md).
|
More info on the format of `limine.cfg` can be found in [`CONFIG.md`](https://github.com/limine-bootloader/limine/blob/trunk/CONFIG.md).
|
||||||
|
|
||||||
## Acknowledgments
|
## Acknowledgments
|
||||||
Limine uses a stripped-down version of [tinf](https://github.com/jibsen/tinf) for GZIP decompression.
|
Limine uses a stripped-down version of [tinf](https://github.com/jibsen/tinf) for early GZIP decompression.
|
||||||
|
|
||||||
Limine relies on [stb_image](https://github.com/nothings/stb/blob/master/stb_image.h) for wallpaper image loading.
|
Limine relies on [stb_image](https://github.com/nothings/stb/blob/master/stb_image.h) for runtime GZIP decompression and image loading.
|
||||||
|
|
||||||
## Discord server
|
## Discord server
|
||||||
We have a [Discord server](https://discord.gg/QEeZMz4) if you need support,
|
We have a [Discord server](https://discord.gg/QEeZMz4) if you need support,
|
||||||
|
@ -60,7 +60,6 @@ override CFLAGS_FOR_TARGET += \
|
|||||||
|
|
||||||
override CPPFLAGS_FOR_TARGET := \
|
override CPPFLAGS_FOR_TARGET := \
|
||||||
-I../freestanding-headers \
|
-I../freestanding-headers \
|
||||||
-I'$(call SHESCAPE,$(BUILDDIR))/tinf' \
|
|
||||||
-I'$(call SHESCAPE,$(BUILDDIR))/..' \
|
-I'$(call SHESCAPE,$(BUILDDIR))/..' \
|
||||||
-I. \
|
-I. \
|
||||||
$(CPPFLAGS_FOR_TARGET) \
|
$(CPPFLAGS_FOR_TARGET) \
|
||||||
@ -212,20 +211,6 @@ else ifeq ($(TARGET),uefi-aarch64)
|
|||||||
all: $(call MKESCAPE,$(BUILDDIR))/BOOTAA64.EFI
|
all: $(call MKESCAPE,$(BUILDDIR))/BOOTAA64.EFI
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(call MKESCAPE,$(BUILDDIR))/tinf-copied: ../tinf/*
|
|
||||||
rm -rf '$(call SHESCAPE,$(BUILDDIR))/tinf'
|
|
||||||
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
|
||||||
cp -r ../tinf '$(call SHESCAPE,$(BUILDDIR))/'
|
|
||||||
touch '$(call SHESCAPE,$(BUILDDIR))/tinf-copied'
|
|
||||||
|
|
||||||
$(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o: $(call MKESCAPE,$(BUILDDIR))/tinf-copied
|
|
||||||
$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
|
|
||||||
$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$(@:.o=.c))' -o '$(call SHESCAPE,$@)'
|
|
||||||
|
|
||||||
$(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o: $(call MKESCAPE,$(BUILDDIR))/tinf-copied
|
|
||||||
$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
|
|
||||||
$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$(@:.o=.c))' -o '$(call SHESCAPE,$@)'
|
|
||||||
|
|
||||||
ifeq ($(TARGET),bios)
|
ifeq ($(TARGET),bios)
|
||||||
|
|
||||||
$(call MKESCAPE,$(BUILDDIR))/stage2.bin.gz: $(call MKESCAPE,$(BUILDDIR))/stage2.bin
|
$(call MKESCAPE,$(BUILDDIR))/stage2.bin.gz: $(call MKESCAPE,$(BUILDDIR))/stage2.bin
|
||||||
@ -263,7 +248,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker_nos2map.ld: linker_bios.ld.in
|
|||||||
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
||||||
$(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP -DLINKER_NOS2MAP linker_bios.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nos2map.ld'
|
$(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP -DLINKER_NOS2MAP linker_bios.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nos2map.ld'
|
||||||
|
|
||||||
$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(OBJ) ../libgcc-binaries/libgcc-i686.a $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o
|
$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(OBJ) ../libgcc-binaries/libgcc-i686.a
|
||||||
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker_nos2map.ld'
|
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker_nos2map.ld'
|
||||||
$(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -T'$(call SHESCAPE,$(BUILDDIR))/linker_nos2map.ld' -o '$(call SHESCAPE,$@)'
|
$(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -T'$(call SHESCAPE,$(BUILDDIR))/linker_nos2map.ld' -o '$(call SHESCAPE,$@)'
|
||||||
$(OBJCOPY_FOR_TARGET) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.bin'
|
$(OBJCOPY_FOR_TARGET) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.bin'
|
||||||
@ -278,7 +263,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_bios.ld.in
|
|||||||
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
||||||
$(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_bios.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
|
$(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_bios.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
|
||||||
|
|
||||||
$(call MKESCAPE,$(BUILDDIR))/limine_nos3map.elf: $(OBJ) ../libgcc-binaries/libgcc-i686.a $(call MKESCAPE,$(BUILDDIR))/stage2.map.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o
|
$(call MKESCAPE,$(BUILDDIR))/limine_nos3map.elf: $(OBJ) ../libgcc-binaries/libgcc-i686.a $(call MKESCAPE,$(BUILDDIR))/stage2.map.o
|
||||||
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
|
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
|
||||||
$(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -o '$(call SHESCAPE,$@)'
|
$(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -o '$(call SHESCAPE,$@)'
|
||||||
$(OBJCOPY_FOR_TARGET) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.bin'
|
$(OBJCOPY_FOR_TARGET) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.bin'
|
||||||
@ -293,7 +278,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_bios.ld.in
|
|||||||
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
||||||
$(CC_FOR_TARGET) -x c -E -P -undef linker_bios.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
|
$(CC_FOR_TARGET) -x c -E -P -undef linker_bios.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
|
||||||
|
|
||||||
$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(OBJ) ../libgcc-binaries/libgcc-i686.a $(call MKESCAPE,$(BUILDDIR))/stage2.map.o $(call MKESCAPE,$(BUILDDIR))/full.map.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o
|
$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(OBJ) ../libgcc-binaries/libgcc-i686.a $(call MKESCAPE,$(BUILDDIR))/stage2.map.o $(call MKESCAPE,$(BUILDDIR))/full.map.o
|
||||||
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
|
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
|
||||||
$(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' -o '$(call SHESCAPE,$@)'
|
$(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' -o '$(call SHESCAPE,$@)'
|
||||||
$(OBJCOPY_FOR_TARGET) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.bin'
|
$(OBJCOPY_FOR_TARGET) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.bin'
|
||||||
@ -332,7 +317,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_x86_64.ld.in
|
|||||||
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
||||||
$(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_uefi_x86_64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
|
$(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_uefi_x86_64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
|
||||||
|
|
||||||
$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-x86_64.o $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/reloc_x86_64.o $(OBJ) ../libgcc-binaries/libgcc-x86_64-no-red-zone.a $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o
|
$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-x86_64.o $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/reloc_x86_64.o $(OBJ) ../libgcc-binaries/libgcc-x86_64-no-red-zone.a
|
||||||
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
|
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
|
||||||
$(LD_FOR_TARGET) \
|
$(LD_FOR_TARGET) \
|
||||||
-T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \
|
-T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \
|
||||||
@ -342,7 +327,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_x86_64.ld.in
|
|||||||
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
||||||
$(CC_FOR_TARGET) -x c -E -P -undef linker_uefi_x86_64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
|
$(CC_FOR_TARGET) -x c -E -P -undef linker_uefi_x86_64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
|
||||||
|
|
||||||
$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-x86_64.o $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/reloc_x86_64.o $(OBJ) ../libgcc-binaries/libgcc-x86_64-no-red-zone.a $(call MKESCAPE,$(BUILDDIR))/full.map.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o
|
$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-x86_64.o $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/reloc_x86_64.o $(OBJ) ../libgcc-binaries/libgcc-x86_64-no-red-zone.a $(call MKESCAPE,$(BUILDDIR))/full.map.o
|
||||||
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
|
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
|
||||||
$(LD_FOR_TARGET) \
|
$(LD_FOR_TARGET) \
|
||||||
-T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \
|
-T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \
|
||||||
@ -372,7 +357,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_aarch64.ld.in
|
|||||||
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
||||||
$(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_uefi_aarch64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
|
$(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_uefi_aarch64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
|
||||||
|
|
||||||
$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-aarch64.o $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/reloc_aarch64.o $(OBJ) ../libgcc-binaries/libgcc-aarch64.a $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o
|
$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-aarch64.o $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/reloc_aarch64.o $(OBJ) ../libgcc-binaries/libgcc-aarch64.a
|
||||||
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
|
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
|
||||||
$(LD_FOR_TARGET) \
|
$(LD_FOR_TARGET) \
|
||||||
-T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \
|
-T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \
|
||||||
@ -382,7 +367,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_aarch64.ld.in
|
|||||||
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
||||||
$(CC_FOR_TARGET) -x c -E -P -undef linker_uefi_aarch64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
|
$(CC_FOR_TARGET) -x c -E -P -undef linker_uefi_aarch64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
|
||||||
|
|
||||||
$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-aarch64.o $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/reloc_aarch64.o $(OBJ) ../libgcc-binaries/libgcc-aarch64.a $(call MKESCAPE,$(BUILDDIR))/full.map.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o
|
$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-aarch64.o $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/reloc_aarch64.o $(OBJ) ../libgcc-binaries/libgcc-aarch64.a $(call MKESCAPE,$(BUILDDIR))/full.map.o
|
||||||
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
|
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
|
||||||
$(LD_FOR_TARGET) \
|
$(LD_FOR_TARGET) \
|
||||||
-T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \
|
-T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \
|
||||||
@ -411,7 +396,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_ia32.ld.in
|
|||||||
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
||||||
$(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_uefi_ia32.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
|
$(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_uefi_ia32.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
|
||||||
|
|
||||||
$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-ia32.o $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/reloc_ia32.o $(OBJ) ../libgcc-binaries/libgcc-i686.a $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o
|
$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-ia32.o $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/reloc_ia32.o $(OBJ) ../libgcc-binaries/libgcc-i686.a
|
||||||
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
|
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
|
||||||
$(LD_FOR_TARGET) \
|
$(LD_FOR_TARGET) \
|
||||||
-T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \
|
-T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \
|
||||||
@ -421,7 +406,7 @@ $(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_ia32.ld.in
|
|||||||
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
||||||
$(CC_FOR_TARGET) -x c -E -P -undef linker_uefi_ia32.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
|
$(CC_FOR_TARGET) -x c -E -P -undef linker_uefi_ia32.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
|
||||||
|
|
||||||
$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-ia32.o $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/reloc_ia32.o $(OBJ) ../libgcc-binaries/libgcc-i686.a $(call MKESCAPE,$(BUILDDIR))/full.map.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o
|
$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-ia32.o $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/reloc_ia32.o $(OBJ) ../libgcc-binaries/libgcc-i686.a $(call MKESCAPE,$(BUILDDIR))/full.map.o
|
||||||
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
|
$(MAKE) '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
|
||||||
$(LD_FOR_TARGET) \
|
$(LD_FOR_TARGET) \
|
||||||
-T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \
|
-T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \
|
||||||
@ -432,25 +417,25 @@ endif
|
|||||||
-include $(HEADER_DEPS)
|
-include $(HEADER_DEPS)
|
||||||
|
|
||||||
ifeq ($(TARGET),uefi-x86-64)
|
ifeq ($(TARGET),uefi-x86-64)
|
||||||
$(call MKESCAPE,$(BUILDDIR))/%.o: %.c $(call MKESCAPE,$(BUILDDIR))/tinf-copied $(call MKESCAPE,$(BUILDDIR))/limine-efi
|
$(call MKESCAPE,$(BUILDDIR))/%.o: %.c $(call MKESCAPE,$(BUILDDIR))/limine-efi
|
||||||
$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
|
$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
|
||||||
$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
|
$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(TARGET),uefi-aarch64)
|
ifeq ($(TARGET),uefi-aarch64)
|
||||||
$(call MKESCAPE,$(BUILDDIR))/%.o: %.c $(call MKESCAPE,$(BUILDDIR))/tinf-copied $(call MKESCAPE,$(BUILDDIR))/limine-efi
|
$(call MKESCAPE,$(BUILDDIR))/%.o: %.c $(call MKESCAPE,$(BUILDDIR))/limine-efi
|
||||||
$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
|
$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
|
||||||
$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
|
$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(TARGET),uefi-ia32)
|
ifeq ($(TARGET),uefi-ia32)
|
||||||
$(call MKESCAPE,$(BUILDDIR))/%.o: %.c $(call MKESCAPE,$(BUILDDIR))/tinf-copied $(call MKESCAPE,$(BUILDDIR))/limine-efi
|
$(call MKESCAPE,$(BUILDDIR))/%.o: %.c $(call MKESCAPE,$(BUILDDIR))/limine-efi
|
||||||
$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
|
$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
|
||||||
$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
|
$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(TARGET),bios)
|
ifeq ($(TARGET),bios)
|
||||||
$(call MKESCAPE,$(BUILDDIR))/%.o: %.c $(call MKESCAPE,$(BUILDDIR))/tinf-copied
|
$(call MKESCAPE,$(BUILDDIR))/%.o: %.c
|
||||||
$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
|
$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
|
||||||
$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
|
$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
|
||||||
endif
|
endif
|
||||||
|
136
common/compress/gzip.c
Normal file
136
common/compress/gzip.c
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
/*
|
||||||
|
* originally from tinfgzip - tiny gzip decompressor
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003-2019 Joergen Ibsen
|
||||||
|
* Copyright (c) 2023 mintsuki and contributors to the Limine project
|
||||||
|
*
|
||||||
|
* This software is provided 'as-is', without any express or implied
|
||||||
|
* warranty. In no event will the authors be held liable for any damages
|
||||||
|
* arising from the use of this software.
|
||||||
|
*
|
||||||
|
* Permission is granted to anyone to use this software for any purpose,
|
||||||
|
* including commercial applications, and to alter it and redistribute it
|
||||||
|
* freely, subject to the following restrictions:
|
||||||
|
*
|
||||||
|
* 1. The origin of this software must not be misrepresented; you must
|
||||||
|
* not claim that you wrote the original software. If you use this
|
||||||
|
* software in a product, an acknowledgment in the product
|
||||||
|
* documentation would be appreciated but is not required.
|
||||||
|
*
|
||||||
|
* 2. Altered source versions must be plainly marked as such, and must
|
||||||
|
* not be misrepresented as being the original software.
|
||||||
|
*
|
||||||
|
* 3. This notice may not be removed or altered from any source
|
||||||
|
* distribution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stb/stb_image.h>
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
FTEXT = 1,
|
||||||
|
FHCRC = 2,
|
||||||
|
FEXTRA = 4,
|
||||||
|
FNAME = 8,
|
||||||
|
FCOMMENT = 16
|
||||||
|
} gzip_flag;
|
||||||
|
|
||||||
|
void *gzip_uncompress(const void *source, uint64_t sourceLen, uint64_t *outsize) {
|
||||||
|
const uint8_t *src = (const uint8_t *) source;
|
||||||
|
const uint8_t *start;
|
||||||
|
int res;
|
||||||
|
uint8_t flg;
|
||||||
|
|
||||||
|
/* -- Check header -- */
|
||||||
|
|
||||||
|
/* Check room for at least 10 byte header and 8 byte trailer */
|
||||||
|
if (sourceLen < 18) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check id bytes */
|
||||||
|
if (src[0] != 0x1F || src[1] != 0x8B) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check method is deflate */
|
||||||
|
if (src[2] != 8) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get flag byte */
|
||||||
|
flg = src[3];
|
||||||
|
|
||||||
|
/* Check that reserved bits are zero */
|
||||||
|
if (flg & 0xE0) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -- Find start of compressed data -- */
|
||||||
|
|
||||||
|
/* Skip base header of 10 bytes */
|
||||||
|
start = src + 10;
|
||||||
|
|
||||||
|
/* Skip extra data if present */
|
||||||
|
if (flg & FEXTRA) {
|
||||||
|
uint64_t xlen = *((uint16_t *)start);
|
||||||
|
|
||||||
|
if (xlen > sourceLen - 12) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
start += xlen + 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Skip file name if present */
|
||||||
|
if (flg & FNAME) {
|
||||||
|
do {
|
||||||
|
if (((uint64_t)(start - src)) >= sourceLen) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
} while (*start++);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Skip file comment if present */
|
||||||
|
if (flg & FCOMMENT) {
|
||||||
|
do {
|
||||||
|
if (((uint64_t)(start - src)) >= sourceLen) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
} while (*start++);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flg & FHCRC) {
|
||||||
|
start += 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -- Get decompressed length -- */
|
||||||
|
|
||||||
|
uint32_t dlen = *((uint32_t *)&src[sourceLen - 4]);
|
||||||
|
|
||||||
|
/* -- Decompress data -- */
|
||||||
|
|
||||||
|
if ((src + sourceLen) - start < 8) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *buf = ext_mem_alloc(dlen);
|
||||||
|
|
||||||
|
// XXX for some reason certain GZ files made by macOS do not properly decompress with stb_image
|
||||||
|
// unless some skew (19 bytes?) is applied to the buffer. I have no idea why this is the
|
||||||
|
// case but I'd rather have them load somewhat than not load at all.
|
||||||
|
for (uint64_t skew = 0; skew < 32; skew++) {
|
||||||
|
res = stbi_zlib_decode_noheader_buffer(buf, dlen, (const char *)start + skew, (src + sourceLen) - start - 8 - skew);
|
||||||
|
if (res != -1) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (res == -1) {
|
||||||
|
pmm_free(buf, dlen);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
*outsize = (uint64_t)dlen;
|
||||||
|
return buf;
|
||||||
|
}
|
8
common/compress/gzip.h
Normal file
8
common/compress/gzip.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#ifndef __COMPRESS__GZIP_H__
|
||||||
|
#define __COMPRESS__GZIP_H__
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
void *gzip_uncompress(const void *source, uint64_t sourceLen, uint64_t *outsize);
|
||||||
|
|
||||||
|
#endif
|
@ -8,7 +8,7 @@
|
|||||||
#include <mm/pmm.h>
|
#include <mm/pmm.h>
|
||||||
#include <lib/print.h>
|
#include <lib/print.h>
|
||||||
#include <pxe/tftp.h>
|
#include <pxe/tftp.h>
|
||||||
#include <tinf.h>
|
#include <compress/gzip.h>
|
||||||
#include <menu.h>
|
#include <menu.h>
|
||||||
#include <lib/readline.h>
|
#include <lib/readline.h>
|
||||||
#include <crypt/blake2b.h>
|
#include <crypt/blake2b.h>
|
||||||
@ -273,8 +273,8 @@ struct file_handle *uri_open(char *uri) {
|
|||||||
if (compressed && ret != NULL) {
|
if (compressed && ret != NULL) {
|
||||||
struct file_handle *compressed_fd = ext_mem_alloc(sizeof(struct file_handle));
|
struct file_handle *compressed_fd = ext_mem_alloc(sizeof(struct file_handle));
|
||||||
void *src = freadall(ret, MEMMAP_BOOTLOADER_RECLAIMABLE);
|
void *src = freadall(ret, MEMMAP_BOOTLOADER_RECLAIMABLE);
|
||||||
if (tinf_gzip_uncompress(compressed_fd->fd, src, ret->size)) {
|
if ((compressed_fd->fd = gzip_uncompress(src, ret->size, &compressed_fd->size)) == NULL) {
|
||||||
panic(true, "tinf error");
|
panic(true, "GZip error");
|
||||||
}
|
}
|
||||||
compressed_fd->vol = ret->vol;
|
compressed_fd->vol = ret->vol;
|
||||||
compressed_fd->path = ext_mem_alloc(ret->path_len);
|
compressed_fd->path = ext_mem_alloc(ret->path_len);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- common/stb/stb_image.h 2023-03-05 18:57:03.930649341 +0100
|
--- common/stb/stb_image.h 2023-03-05 18:57:03.930649341 +0100
|
||||||
+++ common/stb/stb_image.h 2023-03-05 18:55:53.767318782 +0100
|
+++ common/stb/stb_image.h 2023-03-05 18:55:53.767318782 +0100
|
||||||
@@ -127,6 +127,52 @@
|
@@ -127,6 +127,54 @@
|
||||||
#ifndef STBI_INCLUDE_STB_IMAGE_H
|
#ifndef STBI_INCLUDE_STB_IMAGE_H
|
||||||
#define STBI_INCLUDE_STB_IMAGE_H
|
#define STBI_INCLUDE_STB_IMAGE_H
|
||||||
|
|
||||||
@ -46,6 +46,8 @@
|
|||||||
+#define STBI_NO_SIMD
|
+#define STBI_NO_SIMD
|
||||||
+#define STBI_NO_LINEAR
|
+#define STBI_NO_LINEAR
|
||||||
+
|
+
|
||||||
|
+#define STBI_ONLY_ZLIB
|
||||||
|
+#define STBI_SUPPORT_ZLIB
|
||||||
+#define STBI_ONLY_JPEG
|
+#define STBI_ONLY_JPEG
|
||||||
+#define STBI_ONLY_PNG
|
+#define STBI_ONLY_PNG
|
||||||
+#define STBI_ONLY_BMP
|
+#define STBI_ONLY_BMP
|
||||||
|
@ -43,7 +43,7 @@ override CFLAGS_FOR_TARGET += \
|
|||||||
|
|
||||||
override CPPFLAGS_FOR_TARGET := \
|
override CPPFLAGS_FOR_TARGET := \
|
||||||
-I../freestanding-headers \
|
-I../freestanding-headers \
|
||||||
-I'$(call SHESCAPE,$(BUILDDIR))/tinf' \
|
-I./tinf \
|
||||||
-I. \
|
-I. \
|
||||||
$(CPPFLAGS_FOR_TARGET) \
|
$(CPPFLAGS_FOR_TARGET) \
|
||||||
-MMD \
|
-MMD \
|
||||||
@ -68,27 +68,13 @@ override HEADER_DEPS := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c=
|
|||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: $(call MKESCAPE,$(BUILDDIR))/decompressor.bin
|
all: $(call MKESCAPE,$(BUILDDIR))/decompressor.bin
|
||||||
|
|
||||||
$(call MKESCAPE,$(BUILDDIR))/decompressor.bin: $(OBJ) ../libgcc-binaries/libgcc-i686.a $(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o $(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o
|
$(call MKESCAPE,$(BUILDDIR))/decompressor.bin: $(OBJ) ../libgcc-binaries/libgcc-i686.a
|
||||||
$(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -o '$(call SHESCAPE,$(BUILDDIR))/decompressor.elf'
|
$(LD_FOR_TARGET) '$(call OBJESCAPE,$^)' $(LDFLAGS_FOR_TARGET) -o '$(call SHESCAPE,$(BUILDDIR))/decompressor.elf'
|
||||||
$(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$(BUILDDIR))/decompressor.elf' '$(call SHESCAPE,$@)'
|
$(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$(BUILDDIR))/decompressor.elf' '$(call SHESCAPE,$@)'
|
||||||
|
|
||||||
$(call MKESCAPE,$(BUILDDIR))/tinf-copied: ../tinf/*
|
|
||||||
rm -rf '$(call SHESCAPE,$(BUILDDIR))/tinf'
|
|
||||||
$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
|
|
||||||
cp -r ../tinf '$(call SHESCAPE,$(BUILDDIR))/'
|
|
||||||
touch '$(call SHESCAPE,$(BUILDDIR))/tinf-copied'
|
|
||||||
|
|
||||||
$(call MKESCAPE,$(BUILDDIR))/tinf/tinfgzip.o: $(call MKESCAPE,$(BUILDDIR))/tinf-copied
|
|
||||||
$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
|
|
||||||
$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$(@:.o=.c))' -o '$(call SHESCAPE,$@)'
|
|
||||||
|
|
||||||
$(call MKESCAPE,$(BUILDDIR))/tinf/tinflate.o: $(call MKESCAPE,$(BUILDDIR))/tinf-copied
|
|
||||||
$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
|
|
||||||
$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$(@:.o=.c))' -o '$(call SHESCAPE,$@)'
|
|
||||||
|
|
||||||
-include $(HEADER_DEPS)
|
-include $(HEADER_DEPS)
|
||||||
|
|
||||||
$(call MKESCAPE,$(BUILDDIR))/%.o: %.c $(call MKESCAPE,$(BUILDDIR))/tinf-copied
|
$(call MKESCAPE,$(BUILDDIR))/%.o: %.c
|
||||||
$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
|
$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
|
||||||
$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
|
$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user