Server/Client build separation
This commit is contained in:
@@ -1,8 +1,18 @@
|
||||
# To launch with debug messages: G_MESSAGES_DEBUG=all ./librefront
|
||||
|
||||
SRC := $(shell find src -name '*.c')
|
||||
OBJ := $(patsubst src/%.c, build/%.o, $(SRC))
|
||||
DEP := $(OBJ:.o=.d)
|
||||
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
|
||||
@@ -11,30 +21,51 @@ RM := rm -f
|
||||
|
||||
DEBUG ?= 1
|
||||
|
||||
CFLAGS := -std=$(STD) -Werror -Wextra -Wall -MMD -MP `pkg-config --cflags sdl3 sdl3-image glib-2.0`
|
||||
LDFLAGS := -std=$(STD) -lm `pkg-config --libs sdl3 sdl3-image glib-2.0`
|
||||
|
||||
TARGET := librefront
|
||||
COMMON_CFLAGS := -std=$(STD) -Werror -Wextra -Wall -MMD -MP -I$(SRC_DIR) `pkg-config --cflags glib-2.0`
|
||||
COMMON_LDFLAGS := -std=$(STD) -lm `pkg-config --libs glib-2.0`
|
||||
|
||||
ifeq ($(DEBUG),1)
|
||||
CFLAGS += -g -DDEBUG
|
||||
LDFLAGS += -g
|
||||
COMMON_CFLAGS += -g -DDEBUG
|
||||
COMMON_LDFLAGS += -g
|
||||
else
|
||||
CFLAGS += -O2 -DNDEBUG
|
||||
COMMON_CFLAGS += -O2 -DNDEBUG
|
||||
endif
|
||||
|
||||
|
||||
CLIENT_CFLAGS := $(COMMON_CFLAGS) `pkg-config --cflags sdl3 sdl3-image`
|
||||
CLIENT_LDFLAGS := $(COMMON_LDFLAGS) `pkg-config --libs sdl3 sdl3-image`
|
||||
|
||||
SERVER_CFLAGS := $(COMMON_CFLAGS)
|
||||
SERVER_LDFLAGS := $(COMMON_LDFLAGS)
|
||||
|
||||
CLIENT := librefront
|
||||
SERVER := librefront-headless
|
||||
|
||||
.PHONY: all clean
|
||||
|
||||
all: $(TARGET)
|
||||
all: $(CLIENT) $(SERVER)
|
||||
|
||||
$(TARGET): $(OBJ)
|
||||
$(LD) $^ -o $@ $(LDFLAGS)
|
||||
$(CLIENT): $(COMMON_OBJ) $(CLIENT_OBJ)
|
||||
$(LD) $^ -o $@ $(CLIENT_LDFLAGS)
|
||||
|
||||
build/%.o: src/%.c
|
||||
$(SERVER): $(COMMON_OBJ) $(SERVER_OBJ)
|
||||
$(LD) $^ -o $@ $(SERVER_LDFLAGS)
|
||||
|
||||
build/common/%.o: $(SRC_DIR)/common/%.c
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) -c $< -o $@ $(CFLAGS)
|
||||
$(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/ $(TARGET) $(OBJ) $(DEP) perf.data* massif.out*
|
||||
$(RM) -r build/ $(CLIENT) $(SERVER) perf.data* massif.out*
|
||||
|
||||
-include $(DEP)
|
||||
-include $(COMMON_DEP)
|
||||
-include $(CLIENT_DEP)
|
||||
-include $(SERVER_DEP)
|
||||
|
||||
Reference in New Issue
Block a user