CC      = gcc
CFLAGS  = -W -Wall -pedantic -ansi -std=c99
LDFLAGS = -lncursesw

EXECUTABLE = bin/ttysolitaire
LIB_DIR    = lib
DEBUG_DIR  = debug
SRC        = ${LIB_DIR}/ttysolitaire.c
LIB_OBJECTS = ${LIB_DIR}/frame.o         \
              ${LIB_DIR}/card.o          \
              ${LIB_DIR}/stack.o         \
              ${LIB_DIR}/deck.o          \
              ${LIB_DIR}/util.o          \
              ${LIB_DIR}/cursor.o        \
              ${LIB_DIR}/keyboard.o      \
              ${LIB_DIR}/display.o       \
              ${LIB_DIR}/game.o          \
              ${DEBUG_DIR}/card_debug.o  \
              ${DEBUG_DIR}/stack_debug.o \
              ${DEBUG_DIR}/deck_debug.o  \

TEST_EXECUTABLE = bin/ttysolitaire_test
TEST_DIR        = test
TEST_SRC        = ${TEST_DIR}/ttysolitaire_test.c
TEST_OBJECTS = ${TEST_DIR}/frame_test.o    \
               ${TEST_DIR}/card_test.o     \
               ${TEST_DIR}/stack_test.o    \
               ${TEST_DIR}/deck_test.o     \
               ${TEST_DIR}/util_test.o     \
               ${TEST_DIR}/cursor_test.o   \
               ${TEST_DIR}/keyboard_test.o \
               ${TEST_DIR}/display_test.o  \
               ${TEST_DIR}/game_test.o     \

ttysolitaire: ${LIB_OBJECTS}
	${CC} ${CFLAGS} ${LDFLAGS} ${SRC} -o ${EXECUTABLE} ${LIB_OBJECTS}

test: ${TEST_OBJECTS}
	${CC} ${CFLAGS} ${LDFLAGS} ${TEST_SRC} -o ${TEST_EXECUTABLE} ${TEST_OBJECTS}
	${TEST_EXECUTABLE}

clean:
	rm -rf {${LIB_DIR},${TEST_DIR}}/*.o ${EXECUTABLE} ${TEST_EXECUTABLE}