#
# Makefile fr kalkylatorn, Niv VG.  GNU GCC (g++)
#
# Filkataloger dr olika delar av programvaran finns.
EXPRESSION = ../Expression

# Kompilator och flaggor som pverkar kompilering, inkludering, etc. 
# Lgg till '-g' i CCFLAGS om kompilering fr avlusning ska gras.
CCC       = g++
CCFLAGS  += -std=c++98 -pedantic -Wall -Wextra
CPPFLAGS += -I$(EXPRESSION)

# Objektkodsmoduler som ingr i den kompletta kalkylatorn
OBJECTS = kalkylator.o Calculator.o Expression.o Expression_Tree.o \
	  expression_utils.o Expression_Maker.o Variable_Table.o

# Huvudml - skapas med kommandot 'make' eller 'make kalkylator'
kalkylator: $(OBJECTS) Makefile
	$(CCC) $(CCFLAGS) $(CPPFLAGS) -o kalkylator $(OBJECTS)

# Delml
kalkylator.o: kalkylator.cc
	$(CCC) $(CCFLAGS) $(CPPFLAGS) -c kalkylator.cc

Calculator.o: Calculator.h Calculator.cc
	$(CCC) $(CCFLAGS) $(CPPFLAGS) -c Calculator.cc

Expression.o: $(EXPRESSION)/Expression.h $(EXPRESSION)/Expression.cc
	$(CCC) $(CCFLAGS) $(CPPFLAGS) -c $(EXPRESSION)/Expression.cc

Expression_Maker.o: $(EXPRESSION)/Expression_Maker.h $(EXPRESSION)/Expression_Maker.cc
	$(CCC) $(CCFLAGS) $(CPPFLAGS) -c $(EXPRESSION)/Expression_Maker.cc

Variable_Table.o: $(EXPRESSION)/Variable_Table.h $(EXPRESSION)/Variable_Table.cc
	$(CCC) $(CCFLAGS) $(CPPFLAGS) -c $(EXPRESSION)/Variable_Table.cc

Expression_Tree.o: $(EXPRESSION)/Expression_Tree.h $(EXPRESSION)/Expression_Tree.cc
	$(CCC) $(CCFLAGS) $(CPPFLAGS) -c $(EXPRESSION)/Expression_Tree.cc

expression_utils.o: $(EXPRESSION)/expression_utils.cc
	$(CCC) $(CCFLAGS) $(CPPFLAGS) -c $(EXPRESSION)/expression_utils.cc

# 'make clean' tar bort objektkodsfiler och 'core'
clean:
	@ \rm -rf *.o core

# 'make zap' tar ocks bort det krbara programmet och reservkopior (filer
# som slutar med tecknet '~')
zap: clean
	@ \rm -rf kalkylator *~
