Add project infrastructure: .gitignore and Makefile
This commit is contained in:
+28
@@ -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
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user