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];