86 lines
2.0 KiB
Makefile
86 lines
2.0 KiB
Makefile
NAME := qos
|
|
DEBUG := true
|
|
OUT_DIR := out
|
|
KEY_DIR := keys
|
|
TARGET := local
|
|
CACHE_DIR := cache
|
|
CONFIG_DIR := targets/$(TARGET)
|
|
SCRIPTS_DIR := scripts
|
|
CPUS := $(shell nproc)
|
|
ARCH := x86_64
|
|
|
|
include $(PWD)/config.env
|
|
include $(PWD)/make/keys.mk
|
|
include $(PWD)/make/fetch.mk
|
|
include $(PWD)/make/extract.mk
|
|
include $(PWD)/make/toolchain.mk
|
|
|
|
.DEFAULT_GOAL := default
|
|
default: $(OUT_DIR)/bzImage
|
|
|
|
$(CONFIG_DIR)/busybox.config:
|
|
$(toolchain) " \
|
|
cd /cache/busybox-$(BUSYBOX_VERSION) && \
|
|
KCONFIG_NOTIMESTAMP=1 make menuconfig && \
|
|
cp .config /config/busybox.config; \
|
|
"
|
|
|
|
$(CONFIG_DIR)/linux.config:
|
|
$(toolchain) " \
|
|
cd /cache/linux-$(LINUX_VERSION) && \
|
|
make menuconfig && \
|
|
cp .config /config/linux.config; \
|
|
"
|
|
|
|
$(OUT_DIR)/rootfs.cpio: $(OUT_DIR)/busybox
|
|
mkdir -p $(CACHE_DIR)/rootfs/bin
|
|
ifdef DEBUG
|
|
cp $(OUT_DIR)/busybox $(CACHE_DIR)/rootfs/bin;
|
|
cp $(SCRIPTS_DIR)/busybox_init $(CACHE_DIR)/rootfs/init;
|
|
chmod +x $(CACHE_DIR)/rootfs/init;
|
|
endif
|
|
$(toolchain) " \
|
|
cd /cache/rootfs \
|
|
&& find . \
|
|
| cpio -o -H newc \
|
|
| gzip -f - > /out/rootfs.cpio \
|
|
"
|
|
|
|
# Currently broken determinism attempt
|
|
# $(toolchain) " \
|
|
# cd /cache/rootfs \
|
|
# && mkdir -p dev \
|
|
# && fakeroot mknod -m 0622 dev/console c 5 1 \
|
|
# && find . -mindepth 1 -execdir touch -hcd "@0" "{}" + \
|
|
# && find . -mindepth 1 -printf '%P\0' \
|
|
# | sort -z \
|
|
# | LANG=C bsdtar --uid 0 --gid 0 --null -cnf - -T - \
|
|
# | LANG=C bsdtar --null -cf - --format=newc @- \
|
|
# " > $@
|
|
|
|
|
|
$(OUT_DIR)/busybox: extract
|
|
$(toolchain) " \
|
|
cd /cache/busybox-$(BUSYBOX_VERSION) && \
|
|
cp /config/busybox.config .config && \
|
|
make -j$(CPUS) busybox && \
|
|
cp busybox /out/; \
|
|
"
|
|
|
|
$(OUT_DIR)/bzImage: extract $(OUT_DIR)/rootfs.cpio
|
|
$(toolchain) " \
|
|
cd /cache/linux-$(LINUX_VERSION) && \
|
|
cp /config/linux.config .config && \
|
|
make olddefconfig && \
|
|
make -j$(CPUS) ARCH=$(ARCH) bzImage && \
|
|
cp arch/x86_64/boot/bzImage /out/; \
|
|
"
|
|
|
|
.PHONY: run
|
|
run:
|
|
qemu-system-x86_64 \
|
|
-m 512M \
|
|
-nographic \
|
|
-initrd $(OUT_DIR)/rootfs.cpio \
|
|
-kernel $(OUT_DIR)/bzImage
|