Files
SparkOS/Makefile
2025-12-29 17:35:07 +00:00

66 lines
1.8 KiB
Makefile

# SparkOS Makefile
# Builds the minimal Linux distribution
CC = gcc
CFLAGS = -Wall -O2 -static
DESTDIR = rootfs
IMAGE = sparkos.img
IMAGE_SIZE = 512M
.PHONY: all clean init image image-docker help install docker-release
all: init
help:
@echo "SparkOS Build System"
@echo "===================="
@echo "Targets:"
@echo " make init - Build the init system"
@echo " make install - Install init to rootfs"
@echo " make image - Create bootable dd-able image (requires root)"
@echo " make image-docker - Create bootable image using Docker (no root required)"
@echo " make docker-release - Build release package using Docker (no root required)"
@echo " make clean - Clean build artifacts"
@echo ""
@echo "Note: Creating a bootable image requires root privileges"
@echo " and various tools (debootstrap, syslinux, etc.)"
@echo ""
@echo "For easier image building, use Docker:"
@echo " make image-docker"
@echo " OR: ./scripts/build-image.sh"
init: src/init.c
@echo "Building SparkOS init system..."
$(CC) $(CFLAGS) -o init src/init.c
@echo "Init system built successfully: ./init"
install: init
@echo "Installing init to rootfs..."
install -D -m 755 init $(DESTDIR)/sbin/init
@echo "Init installed to $(DESTDIR)/sbin/init"
image: install
@echo "Creating bootable image..."
@if [ "$$(id -u)" -ne 0 ]; then \
echo "ERROR: Image creation requires root privileges"; \
echo "Run: sudo make image"; \
exit 1; \
fi
@./scripts/create_image.sh
image-docker:
@echo "Building bootable image using Docker..."
@./scripts/build-image.sh
docker-release:
@echo "Building release package using Docker..."
@./scripts/docker-release.sh
clean:
@echo "Cleaning build artifacts..."
rm -f init
rm -f $(IMAGE)
rm -rf build/
rm -rf release/
@echo "Clean complete"