Files
librefront/Makefile
T
2025-09-20 13:29:06 +02:00

77 lines
2.0 KiB
Makefile

# To launch with debug messages: G_MESSAGES_DEBUG=all ./librefront
SRC_DIR := src
COMMON_SRC := $(shell find $(SRC_DIR)/common -name '*.c')
SERVER_SRC := $(shell find $(SRC_DIR)/server -name '*.c')
CLIENT_SRC := $(shell find $(SRC_DIR)/client -name '*.c')
COMMON_OBJ := $(patsubst $(SRC_DIR)/%.c, build/%.o, $(COMMON_SRC))
SERVER_OBJ := $(patsubst $(SRC_DIR)/%.c, build/%.o, $(SERVER_SRC))
CLIENT_OBJ := $(patsubst $(SRC_DIR)/%.c, build/%.o, $(CLIENT_SRC))
COMMON_DEP := $(COMMON_OBJ:.o=.d)
SERVER_DEP := $(SERVER_OBJ:.o=.d)
CLIENT_DEP := $(CLIENT_OBJ:.o=.d)
CC := gcc
LD := gcc
STD := gnu23
RM := rm -f
DEBUG ?= 1
COMMON_CFLAGS := -std=$(STD) -Werror -Wextra -Wall -MMD -MP -I$(SRC_DIR) `pkg-config --cflags glib-2.0 gio-2.0`
COMMON_LDFLAGS := -std=$(STD) -lm `pkg-config --libs glib-2.0 gio-2.0 sdl3 sdl3-image`
ifeq ($(DEBUG),1)
COMMON_CFLAGS += -g -DDEBUG
COMMON_LDFLAGS += -g
else
COMMON_CFLAGS += -O2 -DNDEBUG
endif
CLIENT_CFLAGS := $(COMMON_CFLAGS) # `pkg-config --cflags sdl3`
CLIENT_LDFLAGS := $(COMMON_LDFLAGS) # `pkg-config --libs sdl3`
SERVER_CFLAGS := $(COMMON_CFLAGS)
SERVER_LDFLAGS := $(COMMON_LDFLAGS)
CLIENT := librefront
SERVER := librefront-headless
.PHONY: all clean format
all: $(CLIENT) $(SERVER)
$(CLIENT): $(COMMON_OBJ) $(CLIENT_OBJ)
$(LD) $^ -o $@ $(CLIENT_LDFLAGS)
$(SERVER): $(COMMON_OBJ) $(SERVER_OBJ)
$(LD) $^ -o $@ $(SERVER_LDFLAGS)
build/common/%.o: $(SRC_DIR)/common/%.c
@mkdir -p $(dir $@)
$(CC) -c $< -o $@ $(COMMON_CFLAGS)
build/client/%.o: $(SRC_DIR)/client/%.c
@mkdir -p $(dir $@)
$(CC) -c $< -o $@ $(CLIENT_CFLAGS)
build/server/%.o: $(SRC_DIR)/server/%.c
@mkdir -p $(dir $@)
$(CC) -c $< -o $@ $(SERVER_CFLAGS)
clean:
$(RM) -r build/ $(CLIENT) $(SERVER) perf.data* massif.out*
format:
find $(SRC_DIR) -type f \( -name '*.c' -o -name '*.h' \) \
-exec sh -c 'tmp=$$(mktemp) || tmp=/tmp/indent.$$$$; \
indent -gnu "$$1" -o "$$tmp" && mv "$$tmp" "$$1"' _ {} \;
-include $(COMMON_DEP)
-include $(CLIENT_DEP)
-include $(SERVER_DEP)