rpi/Makefile
2025-09-22 20:05:58 +00:00

59 lines
1.3 KiB
Makefile

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)