diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 123 |
1 files changed, 113 insertions, 10 deletions
@@ -1,16 +1,119 @@ -core: - $(MAKE) -C core/ +VERSION=0.0.2 +SYSLINUX_VERSION=6.03 +KERNEL_VERSION=6.1.11 +TARGET=./target +INITRAMFS=${TARGET}/initramfs +ROOTFS=${TARGET}/rootfs +ISO=${TARGET}/rex.iso + +default_target: iso + +core: lib + @echo Building Core + @$(MAKE) -C core/ lib: - $(MAKE) -C lib/ + @echo Building Lib + @$(MAKE) -C lib/ -smash: - $(MAKE) -C smash/ +smash: lib + @echo Building Smash + @$(MAKE) -C smash/ dist: - mkdir -p dist/core dist/smash - cp core/objects/* dist/core/ - cp smash/smash dist/smash/ - cp lib/slib.a dist/ + @echo Extracting Dist + @mkdir -p dist/core dist/smash + @cp core/objects/* dist/core/ + @cp smash/smash dist/smash/ + @cp lib/slib.a dist/ + +target: + @echo Creating Target Directory + @mkdir target + + +initramfs: target core smash + @echo Installing Initramfs + @mkdir -p ${INITRAMFS}/bin ${INITRAMFS}/etc ${INITRAMFS}/shr/man + @cp core/objects/* ${INITRAMFS}/bin/ + @cp man/* ${INITRAMFS}/shr/man/ + @cp smash/smash ${INITRAMFS}/bin/ + @cp utils/* ${INITRAMFS}/bin/ + @cp etc/* ${INITRAMFS}/etc/ + @mv ${INITRAMFS}/bin/init ${INITRAMFS}/init + @echo Building Initramfs + @cd ${INITRAMFS} && find . | cpio -o --quiet --format=newc > ../initramfs.img + +${TARGET}/kernel: + @echo Downloading Kernel + @curl -s "https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-${KERNEL_VERSION}.tar.xz" -o ${TARGET}/kernel.tar.gz + @echo Extracting Kernel + @tar -xf ${TARGET}/kernel.tar.gz + @mv linux-${KERNEL_VERSION} ${TARGET}/kernel-src + @cp config/linux.config ${TARGET}/kernel-src/.config + @echo Building Kernel + @$(MAKE) -C ${TARGET}/kernel-src > /dev/null + @cp ${TARGET}/kernel-src/arch/x86_64/boot/bzImage ${TARGET}/kernel + +${TARGET}/syslinux: + @echo Downloading SYSLINUX + @curl -s "https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-${SYSLINUX_VERSION}.tar.gz" -o ${TARGET}/syslinux.tar.gz + @echo Extracting SYSLINUX + @tar -xf ${TARGET}/syslinux.tar.gz + @mv syslinux-${SYSLINUX_VERSION} ${TARGET}/syslinux + + +rootfs: target initramfs ${TARGET}/syslinux ${TARGET}/kernel + @echo Installing Rootfs + @mkdir -p ${ROOTFS}/syslinux ${ROOTFS}/images/rex/ + @cp ${TARGET}/initramfs.img ${ROOTFS}/images/rex/boot.img + @cp ${TARGET}/kernel ${ROOTFS}/images/rex/kernel + @cp config/syslinux.cfg ${ROOTFS}/syslinux/syslinux.cfg + @cp ${TARGET}/syslinux/bios/core/isolinux.bin \ + ${TARGET}/syslinux/bios/com32/elflink/ldlinux/ldlinux.c32 \ + ${TARGET}/syslinux/bios/com32/libutil/libutil.c32 \ + ${TARGET}/syslinux/bios/com32/menu/menu.c32 \ + ${ROOTFS}/syslinux/ + +iso: rootfs + @echo Creating ISO + @mkisofs -o ${ISO} \ + -rational-rock \ + -volid "reX ${VERSION}" \ + -cache-inodes \ + -joliet \ + -full-iso9660-filenames \ + -input-charset UTF8 \ + -b syslinux/isolinux.bin \ + -c syslinux/boot.cat \ + -no-emul-boot \ + -boot-load-size 4 \ + -boot-info-table \ + -quiet \ + ${ROOTFS} + @isohybrid ${ISO} + @echo Building ISO finished. + @echo + @echo The ISO is located under ${ISO} + @echo + +qemu: iso + @echo Running QEMU + @qemu-system-x86_64 -cdrom ${ISO} + +qemu-nographic: iso + @echo Running QEMU in nongraphic mode + @echo + @echo IMPORTANT: Select Serial Mode in the bootloader. + @echo Else there will be no output. + @echo + @qemu-system-x86_64 -cdrom ${ISO} -nographic + +clean: + @echo Cleaning Up reX Repository + @-rm -r target + @$(MAKE) -C core clean + @$(MAKE) -C lib clean + @$(MAKE) -C smash clean -.PHONY: core lib smash +.PHONY: core lib smash initramfs rootfs iso qemu qemu-nographic clean |