#------------------------------------------------------------------------------
#  Makefile for Stack ADT
#
#  make             makes StackTest
#  make clean       removes binary files
#  make check       runs StackTest under valgrind
#------------------------------------------------------------------------------

EXECUTABLE     = StackTest
EXEOBJ         = $(EXECUTABLE).o
EXESRC         = $(EXECUTABLE).c
ADT            = Stack
ADTOBJ         = $(ADT).o
ADTSRC         = $(ADT).c
ADT_H          = $(ADT).h
COMPILE        = gcc -std=c17 -Wall -c
LINK           = gcc -std=c17 -Wall -o
REMOVE         = rm -f
MEMCHECK       = valgrind --leak-check=full 


$(EXECUTABLE) : $(EXEOBJ) $(ADTOBJ)
	$(LINK) $(EXECUTABLE) $(EXEOBJ) $(ADTOBJ)

$(EXEOBJ) : $(ADT_H) $(EXESRC)
	$(COMPILE) $(EXESRC)

$(ADTOBJ) : $(ADT_H) $(ADTSRC)
	$(COMPILE) $(ADTSRC)

clean :
	$(REMOVE) $(EXECUTABLE) $(EXEOBJ) $(ADTOBJ)

check : $(EXECUTABLE)
	$(MEMCHECK) $(EXECUTABLE)
