44 lines
992 B
Makefile
44 lines
992 B
Makefile
TARGET := tracker
|
|
|
|
BUILDDIR := build
|
|
.DEFAULT_GOAL := all
|
|
|
|
SRCDIRS := src
|
|
SRCFILES := $(shell find $(SRCDIRS) -type f -name "*.c")
|
|
OBJFILES := $(SRCFILES:%.c=$(BUILDDIR)/%.c.o)
|
|
DEPFILES := $(SRCFILES:%.c=$(BUILDDIR)/%.c.d)
|
|
|
|
CC := gcc
|
|
CFLAGS := -Wall -Wextra
|
|
CPPFLAGS := -I src $(shell pkg-config --cflags sdl2)
|
|
LDLIBS := $(shell pkg-config --libs sdl2)
|
|
|
|
.PHONY: $(TARGET) all clean
|
|
all: $(TARGET)
|
|
|
|
# PHONY RULES
|
|
# -----------
|
|
|
|
$(TARGET): $(BUILDDIR)/$(TARGET)
|
|
|
|
clean:
|
|
echo CLEAN FILES FOR $(TARGET)
|
|
rm -rf $(BUILDDIR)
|
|
|
|
# SPECIFIC BUILD RULES
|
|
# --------------------
|
|
|
|
$(BUILDDIR)/$(TARGET): $(OBJFILES)
|
|
echo 'LD ' $@
|
|
mkdir -p $(@D)
|
|
$(CC) $(LDFLAGS) -o $@ $(OBJFILES) $(LDLIBS)
|
|
|
|
$(OBJFILES): $(BUILDDIR)/%.c.o: %.c
|
|
echo 'CC ' $@
|
|
mkdir -p $(@D)
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) -MMD -MP -o $@ -c $<
|
|
|
|
# Header dependencies generated by -MMD. Keep this after the real targets so
|
|
# included files can never accidentally become Make's default goal.
|
|
-include $(DEPFILES)
|