diff --git a/du8/Makefile b/du8/Makefile index 15b0233..f008eea 100644 --- a/du8/Makefile +++ b/du8/Makefile @@ -1,25 +1,59 @@ -CC=gcc -CFLAGS=-Wall -std=c99 -g -LDFLAGS=-lncurses +# Univerzálny Makefile pre ncurses projekt +# Autor: Mišo Chlebovec +# Verzia: 1.1 +# Kompilátor +CC = gcc -OBJS = main.o game.o world.o +# Základné flags +CFLAGS = -Wall -std=c99 -g -D_GNU_SOURCE -all: game +# Hľadanie ncurses +NCURSES_CFLAGS = $(shell pkg-config --cflags ncurses 2>/dev/null || \ + echo "-I/usr/include -I/usr/include/ncurses -I/usr/local/include -I/usr/local/include/ncurses") -game: $(OBJS) - $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) -o game +NCURSES_LIBS = $(shell pkg-config --libs ncurses 2>/dev/null || echo "-lncurses") -main.o: main.c game.h world.h - $(CC) $(CFLAGS) -c main.c +# Finalne flags +CFLAGS += $(NCURSES_CFLAGS) +LDFLAGS = $(NCURSES_LIBS) -game.o: game.c game.h world.h - $(CC) $(CFLAGS) -c game.c +# Súbory +SRCS = main.c game.c world.c +OBJS = $(SRCS:.c=.o) +TARGET = game -world.o: world.c world.h - $(CC) $(CFLAGS) -c world.c +# Pravidlá +all: $(TARGET) + +$(TARGET): $(OBJS) + $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) -o $(TARGET) + +%.o: %.c + $(CC) $(CFLAGS) -c $< -o $@ clean: - rm -f *.o game + rm -f $(OBJS) $(TARGET) +distclean: clean + rm -f *~ .*swp +# Pomocné pravidlá +.PHONY: all clean distclean + +# Automatická detekcia závislostí +DEPDIR := .deps +DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPDIR)/$*.d + +COMPILE.c = $(CC) $(DEPFLAGS) $(CFLAGS) -c + +%.o : %.c $(DEPDIR)/%.d | $(DEPDIR) + $(COMPILE.c) $< -o $@ + +$(DEPDIR): + @mkdir -p $@ + +DEPFILES := $(SRCS:%.c=$(DEPDIR)/%.d) +$(DEPFILES): + +include $(wildcard $(DEPFILES))