From cb10aed0f94a2dd8ac5b9441b92a448678db9b8a Mon Sep 17 00:00:00 2001 From: vasilito Date: Tue, 30 Jun 2026 14:28:44 +0300 Subject: [PATCH] Add project infrastructure: .gitignore and Makefile --- .gitignore | 28 +++++++++++++++ Makefile | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a404141 --- /dev/null +++ b/.gitignore @@ -0,0 +1,28 @@ +# Build artifacts +build/ +grub2/ +*.o +*.obj +*.mod +*.module +*.elf +*.exec +*.img +*.iso +*.cpio.gz +*.tar.xz +*.tar.gz + +# Reference / upstream source (fetched at build time) +reference/ +clean/ + +# Internal state +.sisyphus/ + +# OS files +.DS_Store +Thumbs.db +*~ +*.swp +*.swo diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a56c2b0 --- /dev/null +++ b/Makefile @@ -0,0 +1,100 @@ +HIPERISO_VERSION := 1.0.0 +BUILD_DIR := build +STAGING := $(CURDIR)/$(BUILD_DIR)/staging +PAYLOAD := $(CURDIR)/$(BUILD_DIR)/payload +SCRIPTS := scripts + +.PHONY: all grub2 kernel qemu ovmf busybox initramfs hiperiso-log gui package dist clean distclean help + +help: + @echo "hiperiso build system" + @echo "" + @echo "Targets:" + @echo " all Build everything (staging artifacts)" + @echo " grub2 Build GRUB2 2.04 with hiperiso module" + @echo " kernel Build host kernel (KVM built-in)" + @echo " qemu Build stripped QEMU system-x86_64" + @echo " ovmf Acquire OVMF UEFI firmware" + @echo " busybox Build static busybox for initramfs" + @echo " initramfs Pack initramfs.cpio.gz" + @echo " hiperiso-log Build log analysis tool" + @echo " gui Build all GUI/web tools (Qt5, GTK3, WebUI, Plugson)" + @echo " package Assemble release payload + ESP disk image (depends on gui)" + @echo " dist Alias for 'package'" + @echo " download Download source tarballs" + @echo " clean Remove build/" + @echo " distclean Remove build/ + payload/" + +all: kernel qemu ovmf grub2 busybox initramfs hiperiso-log + @echo "=== All staging artifacts built ===" + @echo "Run 'make package' to build GUI tools and assemble release payload" + +dist: package + +download: + @echo "=== Downloading sources ===" + sh $(SCRIPTS)/download_sources.sh $(BUILD_DIR) + +grub2: + @echo "=== Building GRUB2 2.04 with hiperiso module ===" + sh $(SCRIPTS)/build_grub2_204.sh + +gui: + @echo "=== Building all GUI/web tools ===" + sh $(SCRIPTS)/build_gui_all.sh + +kernel: + @echo "=== Building host kernel ===" + cd $(BUILD_DIR)/linux && \ + cp ../../host/kernel/hiperiso_defconfig .config && \ + make olddefconfig && \ + make -j$$(nproc) bzImage && \ + mkdir -p $(STAGING)/efi && \ + cp arch/x86/boot/bzImage $(STAGING)/efi/vmlinuz + +qemu: + @echo "=== Building QEMU ===" + cd $(BUILD_DIR)/qemu && \ + ../../scripts/configure_qemu.sh && \ + make -j$$(nproc) qemu-system-x86_64 && \ + cp build/qemu-system-x86_64 $(STAGING)/qemu-system-x86_64 && \ + strip $(STAGING)/qemu-system-x86_64 + +ovmf: + @echo "=== Acquiring OVMF firmware ===" + @if [ -f /usr/share/edk2/x64/OVMF.4m.fd ]; then \ + cp /usr/share/edk2/x64/OVMF.4m.fd $(STAGING)/OVMF.fd; \ + elif [ -f /usr/share/OVMF/OVMF.fd ]; then \ + cp /usr/share/OVMF/OVMF.fd $(STAGING)/OVMF.fd; \ + else \ + echo "ERROR: No OVMF available. Install edk2-ovmf."; \ + exit 1; \ + fi + +busybox: + @echo "=== Building busybox (static) ===" + cd $(BUILD_DIR)/busybox && \ + make defconfig && \ + sed -i 's/# CONFIG_STATIC is not set/CONFIG_STATIC=y/' .config && \ + yes "" | make oldconfig >/dev/null 2>&1 && \ + make -j$$(nproc) && \ + cp busybox $(STAGING)/busybox + +initramfs: + @echo "=== Building initramfs ===" + sh scripts/build_initramfs.sh $(STAGING) + +hiperiso-log: + @echo "=== Building hiperiso-log tool ===" + cd logging/hiperiso-log && make && \ + cp hiperiso-log $(STAGING)/hiperiso-log + +package: gui + @echo "=== Assembling release payload + ESP disk image ===" + sh $(SCRIPTS)/package_release.sh + +clean: + rm -rf $(BUILD_DIR) + +distclean: clean + rm -rf $(PAYLOAD)