SRC = fallzone.c essential.c figures.c cords.c score.c box.c menu.c fx.c
CC = gcc
OBJ = $(SRC:.c=.o)
DEFS = -D_POSIX_C_SOURCE=199506L
CFLAGS = $(DEFS) -g -Wall -ansi -pedantic -Wno-long-long
ENDFLAGS = $(CFLAGS) -Os -static -s
LIBS = -lm


ifeq ($(OS), Windows_NT)

INCL = -I C:\mingw64\include
LIBS += C:\mingw64\lib\pdcurses.o

else

LIBS += $(shell pkg-config -libs ncurses)

endif # INCL and LIBS for different OS'es



main: main.c $(OBJ)
	$(CC) $(CFLAGS) $(INCL) $^ $(LIBS) -o $@

finish: main.c $(OBJ)
	$(CC) $(ENDFLAGS) $(INCL) $^ $(LIBS) -o tetris

test: test.c $(OBJ)
	$(CC) $(CFLAGS) $^ $(LIBS) -o $@

%.o: %.c %.h
	$(CC) $(CFLAGS) -c $< -o $@


ifneq ($(SRC),)
ifneq (clean, $(MAKECMDGOALS))
-include deps.mk
endif

deps.mk: $(wildcard *.c)
	@$(CC) -MM $^ > $@
endif



ifeq ($(OS), Windows_NT)
    RM := del /f /q        # Delete files (/f=force, /q=quiet)
else
    RM := rm -f            # Delete files (force)
endif


clean:
	@$(RM) *.o *.valgrind main deps.mk tetris
	@clear


ifneq ($(OS), Windows_NT)
check:
	valgrind --leak-check=full --track-origins=yes ./main

log:
	valgrind --leak-check=full --track-origins=yes --show-leak-kinds=all --log-file='log.valgrind' ./main

gdb:
	@xterm -T '0' -geometry '49x26+0+10' -e \
		'tty > /tmp/ttynum.txt; sleep 9999' &
	@xterm -T '0' -geometry '48x26+690+10' -e \
		'tty=`cat /tmp/ttynum.txt`; gdb --tty=$$tty -q --tui -ex "start" \
	   	./main; pkill -KILL -t `echo "$$tty" | cut -d'/' -f3,4`' &
endif
