CC = clang SRC_DIR := src SRC := $(SRC_DIR)/main.c BUILD_DIR := build ASSETS := assets TARGET := $(BUILD_DIR)/hello CTOOLS := $(SRC_DIR)/ctools LIBFT_DIR := $(CTOOLS)/libft LIBFT := $(LIBFT_DIR)/lib/libft.a LIB := $(LIBFT) CFLAGS := -Wall -Wextra -Werror --target=aarch64-linux-musl DOCKER_CMD := /bin/sh -c 'hello "host.docker.internal" "8000"' MINIROOTFS := $(ASSETS)/minirootfs.tar.gz ALPINE := alpine/ ALPINE_BIN := $(ALPINE)/bin ALPINE_IMG := $(ASSETS)/alpine.img ALPINE_TAR := $(ALPINE_IMG).gz get: $(ALPINE) $(ASSETS) wget https://dl-cdn.alpinelinux.org/alpine/v3.22/releases/aarch64/alpine-rpi-3.22.1-aarch64.tar.gz -O $(ALPINE_TAR) rm -rf $(ALPINE)/* tar xvf $(ALPINE_TAR) -C $(ALPINE) all: build copy $(SRC) $(BUILD_DIR) $(LIB) get $(CC) $(CFLAGS) -o $(TARGET) -static $(SRC) $(LIB) cp $(TARGET) $(ALPINE_BIN) tar czf $(MINIROOTFS) -C alpine ./ docker import --platform linux/arm64 $(MINIROOTFS) alpine-custom:latest build: $(SRC) $(BUILD_DIR) $(LIB) get $(CC) $(CFLAGS) -o $(TARGET) -static $(SRC) $(LIB) copy: build cp $(TARGET) $(ALPINE_BIN) tar czf $(MINIROOTFS) -C alpine ./ docker import --platform linux/arm64 $(MINIROOTFS) alpine-custom:latest run: all docker run --add-host=host.docker.internal:host-gateway --platform linux/arm64 -it alpine-custom $(DOCKER_CMD) $(LIB): make aarch64 -C $(LIBFT_DIR) $(BUILD_DIR): mkdir -p $@ $(ALPINE): mkdir -p $@ $(ASSETS): mkdir -p $@ clean: rm -rf $(BUILD_DIR) $(ALPINE) $(ASSETS)