59 lines
1.3 KiB
Makefile
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)
|