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=arm-linux-gnueabihf 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/armhf/alpine-minirootfs-3.22.1-armhf.tar.gz -O $(MINIROOTFS) wget https://dl-cdn.alpinelinux.org/alpine/v3.22/releases/armhf/alpine-rpi-3.22.1-armhf.img.gz -O $(ALPINE_TAR) gunzip -c $(ALPINE_TAR) > $(ALPINE_IMG) rm -rf $(ALPINE)/* tar xvf $(MINIROOTFS) -C $< all: $(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/arm/v7 $(MINIROOTFS) alpine-custom:latest run: all docker run --add-host=host.docker.internal:host-gateway --platform linux/arm/v7 -it alpine-custom $(DOCKER_CMD) $(LIB): make -C $(LIBFT_DIR) $(BUILD_DIR): mkdir -p $@ $(ALPINE): mkdir -p $@ $(ASSETS): mkdir -p $@ clean: rm -rf $(BUILD_DIR) $(ALPINE) $(ASSETS)