:: commit 3ea53247c27aee10080c9efb5cda5e5b97d1c808

mintsuki <mintsuki@protonmail.com> — 2022-01-28 08:35

parents: 8670057e40

misc: incbin -> hgen

diff --git a/.gitignore b/.gitignore
index 44c11eac..fd880a9a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,4 +33,4 @@ stage23-uefi32
 stage23-uefi64
 decompressor-build
 stage1.stamp
-incbin
+hgen
diff --git a/GNUmakefile.in b/GNUmakefile.in
index ea2a78ca..a1b7da25 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -196,19 +196,15 @@ override STAGE1_FILES := $(shell find '$(call SHESCAPE,$(SRCDIR))/stage1' -type
 .PHONY: all
 all: limine-uefi limine-bios
 
-$(call MKESCAPE,$(BUILDDIR))/incbin-build/incbin: $(call MKESCAPE,$(SRCDIR))/incbin/incbin.c
-	mkdir -p '$(call SHESCAPE,$(BUILDDIR))/incbin-build'
-	$(CC) $(CFLAGS) '$(call SHESCAPE,$(SRCDIR))/incbin/incbin.c' -o '$(call SHESCAPE,$(BUILDDIR))/incbin-build/incbin'
+$(call MKESCAPE,$(BUILDDIR))/hgen: $(call MKESCAPE,$(SRCDIR))/limine-install/hgen.c
+	mkdir -p '$(call SHESCAPE,$(BUILDDIR))'
+	$(CC) $(CFLAGS) -std=c11 '$(call SHESCAPE,$(SRCDIR))/limine-install/hgen.c' -o '$(call SHESCAPE,$(BUILDDIR))/hgen'
 
 .PHONY: limine-hdd.h
 limine-hdd.h: $(call MKESCAPE,$(BINDIR))/limine-hdd.h
 
-$(call MKESCAPE,$(BINDIR))/incbin.h: $(call MKESCAPE,$(SRCDIR))/incbin/incbin.h
-	cp '$(call SHESCAPE,$(SRCDIR))/incbin/incbin.h' '$(call SHESCAPE,$(BINDIR))/incbin.h'
-
-$(call MKESCAPE,$(BINDIR))/limine-hdd.h: $(call MKESCAPE,$(BINDIR))/incbin.h $(call MKESCAPE,$(BUILDDIR))/incbin-build/incbin $(call MKESCAPE,$(BINDIR))/limine-hdd.bin
-	cd '$(call SHESCAPE,$(BINDIR))' && \
-		'$(call SHESCAPE,$(BUILDDIR))/incbin-build/incbin' -p _binary_ -Ssnake limine-install.c -o limine-hdd.h
+$(call MKESCAPE,$(BINDIR))/limine-hdd.h: $(call MKESCAPE,$(BUILDDIR))/hgen $(call MKESCAPE,$(BINDIR))/limine-hdd.bin
+	cd '$(call SHESCAPE,$(BINDIR))' && '$(call SHESCAPE,$(BUILDDIR))/hgen' >limine-hdd.h
 
 .PHONY: limine-install
 limine-install:
@@ -219,7 +215,7 @@ limine-install:
 
 .PHONY: clean
 clean: limine-bios-clean limine-uefi32-clean limine-uefi64-clean
-	rm -rf '$(call SHESCAPE,$(BINDIR))' '$(call SHESCAPE,$(BUILDDIR))/stage1.stamp' '$(call SHESCAPE,$(BUILDDIR))/incbin-build'
+	rm -rf '$(call SHESCAPE,$(BINDIR))' '$(call SHESCAPE,$(BUILDDIR))/stage1.stamp' '$(call SHESCAPE,$(BUILDDIR))/hgen'
 
 .PHONY: install-data
 install-data:
@@ -308,7 +304,6 @@ dist:
 	cp '$(call SHESCAPE,$(SRCDIR))'/install-sh '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)"/
 	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/reduced-gnu-efi/.git"
 	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/stivale/.git"
-	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/incbin/.git"
 	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/.git"
 	rm -rf '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/autom4te.cache"
 	echo "$(LIMINE_VERSION)" > '$(call SHESCAPE,$(BUILDDIR))'/"limine-$(LIMINE_VERSION)/version"
diff --git a/autogen.sh b/autogen.sh
index ed8db0d1..5cafff59 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -11,11 +11,6 @@ cd "$srcdir"
 
 [ -d stivale ] || git clone https://github.com/stivale/stivale.git
 [ -d reduced-gnu-efi ] || git clone https://github.com/limine-bootloader/reduced-gnu-efi.git
-[ -d incbin ] || (
-    git clone https://github.com/graphitemaster/incbin.git
-    cd incbin
-    git checkout 6e576cae5ab5810f25e2631f2e0b80cbe7dc8cbf
-)
 
 automake --add-missing --copy || true
 autoconf
diff --git a/limine-install/hgen.c b/limine-install/hgen.c
new file mode 100644
index 00000000..02834d07
--- /dev/null
+++ b/limine-install/hgen.c
@@ -0,0 +1,42 @@
+#include <stdio.h>
+
+int main(void) {
+    int ok = 0;
+
+    FILE *limine_hdd = fopen("limine-hdd.bin", "r+b");
+    if (limine_hdd == NULL) {
+        goto err;
+    }
+
+    printf("const uint8_t _binary_limine_hdd_bin_data[] = {\n\t");
+
+    int c = fgetc(limine_hdd);
+    for (size_t i = 0; ; i++) {
+        printf("0x%02x", c);
+
+        c = fgetc(limine_hdd);
+        if (c == EOF) {
+            break;
+        }
+
+        printf(", ");
+        if (i % 12 == 11) {
+            printf("\n\t");
+        }
+    }
+
+    printf("\n};\n");
+
+    goto cleanup;
+
+err:
+    perror("ERROR");
+    ok = 1;
+
+cleanup:
+    if (limine_hdd != NULL) {
+        fclose(limine_hdd);
+    }
+
+    return ok;
+}
diff --git a/limine-install/limine-install.c b/limine-install/limine-install.c
index 14cc700e..818bd52a 100644
--- a/limine-install/limine-install.c
+++ b/limine-install/limine-install.c
@@ -7,6 +7,8 @@
 #include <inttypes.h>
 #include <limits.h>
 
+#include "limine-hdd.h"
+
 static int set_pos(FILE *stream, uint64_t pos) {
     if (sizeof(long) >= 8) {
         return fseek(stream, (long)pos, SEEK_SET);
@@ -271,17 +273,11 @@ static bool _device_write(const void *_buffer, uint64_t loc, size_t count) {
             goto cleanup;                       \
     } while (0)
 
-/* dummy incbin call so incbin generates the header
-INCBIN(limine_hdd_bin, "limine-hdd.bin");
-*/
-
-#include "limine-hdd.h"
-
 int main(int argc, char *argv[]) {
     int      ok = 1;
     int      force_mbr = 0;
     uint8_t *bootloader_img = (uint8_t *)_binary_limine_hdd_bin_data;
-    size_t   bootloader_file_size = (size_t)_binary_limine_hdd_bin_size;
+    size_t   bootloader_file_size = sizeof(_binary_limine_hdd_bin_data);
     uint8_t  orig_mbr[70], timestamp[6];
 
     if (argc < 2) {
tab: 248 wrap: offon