:: commit 0a1dfa766ea633a708cd776772277ff55173aea0

mintsuki <mintsuki@protonmail.com> — 2021-03-17 17:38

parents: f6aab27f23

misc: Move limine-install to own directory and provide source and Makefile for it in binary releases

diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index a272b1ab..01398588 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -34,8 +34,8 @@ jobs:
       - name: Build the bootloader
         run: make
 
-      - name: Remove limine-hdd.o
-        run: rm limine-hdd.o
+      - name: Clean limine-install
+        run: make -C limine-install clean
 
       - name: Build limine-install-linux-x86_64
         run: make CFLAGS="-O2 -pipe -static" bin/limine-install
@@ -46,8 +46,8 @@ jobs:
       - name: Rename limine-install-linux-x86_64
         run: mv bin/limine-install bin/limine-install-linux-x86_64
 
-      - name: Remove limine-hdd.o
-        run: rm limine-hdd.o
+      - name: Clean limine-install
+        run: make -C limine-install clean
 
       - name: Build limine-install-linux-x86_32
         run: make OBJCOPY_ARCH="elf32-i386" CC="gcc -m32" CFLAGS="-O2 -pipe -static" bin/limine-install
@@ -58,8 +58,8 @@ jobs:
       - name: Rename limine-install-linux-x86_32
         run: mv bin/limine-install bin/limine-install-linux-x86_32
 
-      - name: Remove limine-hdd.o
-        run: rm limine-hdd.o
+      - name: Clean limine-install
+        run: make -C limine-install clean
 
       - name: Build limine-install-win32
         run: make CC="i686-w64-mingw32-gcc" OBJCOPY="i686-w64-mingw32-objcopy" CFLAGS="-O2 -pipe" bin/limine-install
@@ -70,8 +70,11 @@ jobs:
       - name: Rename limine-install-win32
         run: mv bin/limine-install.exe bin/limine-install-win32.exe
 
-      - name: Remove bin/limine-hdd.bin
-        run: rm bin/limine-hdd.bin
+      - name: Clean limine-install
+        run: make -C limine-install clean
+
+      - name: Copy limine-install to bin
+        run: cp limine-install/* bin/
 
       - name: Push binaries to binary branch
         run: |
diff --git a/Makefile b/Makefile
index 9a11c2b8..7626902a 100644
--- a/Makefile
+++ b/Makefile
@@ -1,27 +1,22 @@
 CC = cc
-OBJCOPY = objcopy
-OBJCOPY_ARCH = default
-CFLAGS = -O2 -pipe -Wall -Wextra
 PREFIX = /usr/local
 DESTDIR =
 
 PATH := $(shell pwd)/toolchain/bin:$(PATH)
 
-.PHONY: all clean install distclean limine-bios limine-uefi limine-bios-clean limine-uefi-clean stage23-bios stage23-bios-clean stage23-uefi stage23-uefi-clean decompressor decompressor-clean toolchain test.hdd echfs-test ext2-test fat16-test fat32-test iso9660-test pxe-test uefi-test hybrid-iso9660-test
+.PHONY: all bin/limine-install clean install distclean limine-bios limine-uefi limine-bios-clean limine-uefi-clean stage23-bios stage23-bios-clean stage23-uefi stage23-uefi-clean decompressor decompressor-clean toolchain test.hdd echfs-test ext2-test fat16-test fat32-test iso9660-test pxe-test uefi-test hybrid-iso9660-test
 
 all:
 	$(MAKE) limine-uefi
 	$(MAKE) limine-bios
 	$(MAKE) bin/limine-install
 
-bin/limine-install: limine-install.c limine-hdd.o
-	$(CC) $(CFLAGS) -std=c11 limine-hdd.o limine-install.c -o $@
-
-limine-hdd.o: bin/limine-hdd.bin
-	$(OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) bin/limine-hdd.bin $@
+bin/limine-install:
+	$(MAKE) -C limine-install LIMINE_HDD_BIN=`realpath bin`/limine-hdd.bin
+	cp limine-install/limine-install bin/
 
 clean: limine-bios-clean limine-uefi-clean
-	rm -f limine-hdd.o
+	$(MAKE) -C limine-install clean
 
 install: all
 	install -d $(DESTDIR)$(PREFIX)/bin
diff --git a/limine-install/Makefile b/limine-install/Makefile
new file mode 100644
index 00000000..42bfe58c
--- /dev/null
+++ b/limine-install/Makefile
@@ -0,0 +1,20 @@
+OBJCOPY = objcopy
+OBJCOPY_ARCH = default
+LIMINE_HDD_BIN = limine-hdd.bin
+BUILD_DIR = $(shell realpath .)
+
+CFLAGS = -O2 -pipe -Wall -Wextra
+
+.PHONY: all clean
+
+all: limine-install
+
+clean:
+	rm -f limine-hdd.o limine-install
+
+limine-install: limine-install.c limine-hdd.o
+	$(CC) $(CFLAGS) -std=c11 $^ -o $@
+
+limine-hdd.o: $(LIMINE_HDD_BIN)
+	cd `dirname $^` && \
+	  $(OBJCOPY) -B i8086 -I binary -O $(OBJCOPY_ARCH) `basename $^` $(BUILD_DIR)/$@
diff --git a/limine-install/limine-install b/limine-install/limine-install
new file mode 100755
index 00000000..ccc1519d
Binary files /dev/null and b/limine-install/limine-install differ
diff --git a/limine-install.c b/limine-install/limine-install.c
similarity index 98%
rename from limine-install.c
rename to limine-install/limine-install.c
index 53a54972..3f18ad78 100644
--- a/limine-install.c
+++ b/limine-install/limine-install.c
@@ -262,9 +262,9 @@ static bool _device_write(const void *buffer, uint64_t loc, size_t count) {
     } while (0)
 
 #ifdef __MINGW32__
-extern uint8_t binary_bin_limine_hdd_bin_start[], binary_bin_limine_hdd_bin_end[];
+extern uint8_t binary_limine_hdd_bin_start[], binary_limine_hdd_bin_end[];
 #else
-extern uint8_t _binary_bin_limine_hdd_bin_start[], _binary_bin_limine_hdd_bin_end[];
+extern uint8_t _binary_limine_hdd_bin_start[], _binary_limine_hdd_bin_end[];
 #endif
 
 int main(int argc, char *argv[]) {
@@ -274,9 +274,9 @@ int main(int argc, char *argv[]) {
     size_t   bootloader_file_size =
         (size_t)binary_bin_limine_hdd_bin_end - (size_t)binary_bin_limine_hdd_bin_start;
 #else
-    uint8_t *bootloader_img = _binary_bin_limine_hdd_bin_start;
+    uint8_t *bootloader_img = _binary_limine_hdd_bin_start;
     size_t   bootloader_file_size =
-        (size_t)_binary_bin_limine_hdd_bin_end - (size_t)_binary_bin_limine_hdd_bin_start;
+        (size_t)_binary_limine_hdd_bin_end - (size_t)_binary_limine_hdd_bin_start;
 #endif
     uint8_t  orig_mbr[70], timestamp[6];
 
tab: 248 wrap: offon