45 lines
875 B
Makefile
45 lines
875 B
Makefile
# Compiler
|
|
CC = gcc
|
|
|
|
# Build mode
|
|
BUILD_MODE ?= RELEASE
|
|
INCLUDE_DIRS := $(shell find src -type d)
|
|
|
|
ifeq ($(BUILD_MODE),DEBUG)
|
|
CFLAGS = -Wall -Wextra -std=c11 $(addprefix -I,$(INCLUDE_DIRS)) -g -O0
|
|
else
|
|
CFLAGS = -Wall -Wextra -std=c11 $(addprefix -I,$(INCLUDE_DIRS)) -O2
|
|
endif
|
|
|
|
# Linker flags
|
|
LDFLAGS = -lraylib -lGL -lm -lpthread -ldl -lrt -lX11
|
|
|
|
# Carpeta de build
|
|
BUILD_DIR = build
|
|
|
|
# Target final
|
|
TARGET = $(BUILD_DIR)/pns
|
|
|
|
# Fuentes y objetos
|
|
SRC = $(shell find src -name "*.c")
|
|
OBJ = $(patsubst src/%.c,$(BUILD_DIR)/%.o,$(SRC))
|
|
|
|
# Phony targets
|
|
.PHONY: all clean
|
|
|
|
# Target por defecto
|
|
all: $(TARGET)
|
|
|
|
# Linking
|
|
$(TARGET): $(OBJ)
|
|
$(CC) $(OBJ) -o $@ $(LDFLAGS)
|
|
|
|
# Compilación de objetos
|
|
# mkdir -p crea la carpeta automáticamente si no existe
|
|
$(BUILD_DIR)/%.o: src/%.c
|
|
mkdir -p $(dir $@)
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
# Limpiar todo
|
|
clean:
|
|
rm -rf $(BUILD_DIR)
|