2024-03-02 22:30:52 +13:00
|
|
|
CORES := $(shell nproc)
|
|
|
|
PWD := $(shell pwd)
|
|
|
|
LINUX_DIR := $(PWD)/components/linux
|
|
|
|
MUSL_DIR := $(PWD)/components/musl
|
|
|
|
BUSYBOX_DIR := $(PWD)/components/busybox
|
|
|
|
LINUX_CFG := $(LINUX_DIR)/.config
|
|
|
|
MUSL_CFG := $(MUSL_DIR)/config.mak
|
|
|
|
BUSYBOX_CFG := $(BUSYBOX_DIR)/.config
|
|
|
|
LINUX_OUT := $(LINUX_DIR)/arch/x86/boot/bzImage
|
|
|
|
MUSL_OUT := $(MUSL_DIR)/lib/libc.so
|
|
|
|
BUSYBOX_OUT := $(BUSYBOX_DIR)/busybox
|
|
|
|
DOWNLOAD_SCRIPT := $(PWD)/scripts/download-components.sh
|
|
|
|
CONFIGS_DIR := $(PWD)/configs
|
|
|
|
|
|
|
|
MUSL_GCC := "${REALGCC:-gcc}" "$@" -specs "$(MUSL_DIR)/lib/musl-gcc.specs"
|
|
|
|
|
|
|
|
.PHONY: all deps linux busybox clean
|
|
|
|
|
2024-03-04 20:24:34 +13:00
|
|
|
all: dirs deps linux busybox
|
|
|
|
|
|
|
|
dirs:
|
|
|
|
mkdir -p initramfs/{etc,proc,sys,usr/{bin,lib},dev,tmp,mnt,root}
|
|
|
|
ln -sf usr/bin initramfs/bin
|
|
|
|
ln -sf usr/bin initramfs/sbin
|
|
|
|
ln -sf usr/lib initramfs/lib
|
|
|
|
ln -sf usr/lib initramfs/lib64
|
2024-03-02 22:30:52 +13:00
|
|
|
|
|
|
|
deps:
|
|
|
|
@echo "Downloading dependencies..."
|
|
|
|
@$(DOWNLOAD_SCRIPT)
|
|
|
|
|
|
|
|
linux: $(LINUX_OUT)
|
|
|
|
|
|
|
|
$(LINUX_OUT): $(LINUX_CFG)
|
|
|
|
@echo "Building Linux kernel..."
|
|
|
|
@$(MAKE) -C $(LINUX_DIR) -j $(CORES)
|
|
|
|
|
|
|
|
$(LINUX_CFG):
|
|
|
|
@echo "Copying Linux config..."
|
|
|
|
@cp -r $(CONFIGS_DIR)/linux/. $(LINUX_DIR)/
|
|
|
|
|
|
|
|
musl: $(MUSL_OUT)
|
|
|
|
|
|
|
|
$(MUSL_SPECS): $(MUSL_OUT)
|
|
|
|
$(MUSL_OUT): $(MUSL_CFG)
|
|
|
|
make -C components/musl -j $(CORES)
|
|
|
|
|
|
|
|
$(MUSL_CFG):
|
|
|
|
@echo "Configuring musl..."
|
|
|
|
cd components/musl && ./configure --prefix=/usr
|
|
|
|
|
|
|
|
busybox: musl $(BUSYBOX_OUT)
|
|
|
|
|
|
|
|
$(BUSYBOX_OUT): $(BUSYBOX_CFG)
|
|
|
|
@echo "Building BusyBox..."
|
|
|
|
@$(MAKE) -C $(BUSYBOX_DIR) -j $(CORES) CC="$(MUSL_GCC)"
|
|
|
|
|
|
|
|
$(BUSYBOX_CFG):
|
|
|
|
@echo "Copying BusyBox config..."
|
|
|
|
@cp -r $(CONFIGS_DIR)/busybox/. $(BUSYBOX_DIR)/
|
|
|
|
|
|
|
|
install: linux busybox
|
|
|
|
@cp $(LINUX_OUT) cdroot/
|
|
|
|
$(MAKE) -C $(BUSYBOX_DIR) install CONFIG_PREFIX=$(PWD)/initramfs -j $(CORES)
|
|
|
|
|
|
|
|
clean:
|
|
|
|
@echo "Cleaning up build artifacts..."
|
|
|
|
@$(MAKE) -C $(LINUX_DIR) clean
|
|
|
|
@$(MAKE) -C $(BUSYBOX_DIR) clean
|