aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: f1983d907fce1d2598f0a95b51661932eaf4442a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# --- Compiler Settings ---
CC ?= gcc
PKG_CONFIG ?= pkg-config

# Check if raylib is available via pkg-config
HAS_RAYLIB_PC := $(shell $(PKG_CONFIG) --exists raylib && echo yes)

ifeq ($(HAS_RAYLIB_PC),yes)
	RAYLIB_CFLAGS := $(shell $(PKG_CONFIG) --cflags raylib)
	RAYLIB_LIBS   := $(shell $(PKG_CONFIG) --libs raylib)
else
	# Fallback for systems without raylib pkg-config (using local lib/ and standard flags)
	RAYLIB_CFLAGS := 
	RAYLIB_LIBS   := -Llib -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 -Wl,-rpath=./lib
endif

# User CFLAGS/LDFLAGS can be passed from environment
CFLAGS  += -Wall -Wextra -std=c99 -O2 -Iinclude $(RAYLIB_CFLAGS)
LDFLAGS += $(RAYLIB_LIBS) -lm

# --- Project Directories ---
SRC_DIR = src
OBJ_DIR = obj
BIN_DIR = bin

# --- Files ---
SRCS = $(wildcard $(SRC_DIR)/*.c)
OBJS = $(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/%.o, $(SRCS))

# --- Output Binary ---
TARGET = $(BIN_DIR)/dungeon_game

# --- Build Rules ---
all: $(TARGET)

$(TARGET): $(OBJS) | $(BIN_DIR)
	@echo "Linking $@"
	$(CC) $(OBJS) -o $@ $(LDFLAGS)
	@echo "Build successful! Run with: ./$(TARGET)"

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR)
	@echo "Compiling $<"
	$(CC) $(CFLAGS) -c $< -o $@

$(BIN_DIR):
	mkdir -p $(BIN_DIR)

$(OBJ_DIR):
	mkdir -p $(OBJ_DIR)

clean:
	@echo "Cleaning up..."
	rm -rf $(OBJ_DIR) $(BIN_DIR)

.PHONY: all clean