SHELL = /bin/sh

MAKECONFIG_CXX       = g++
MAKECONFIG_LINK      = g++
MAKECONFIG_LFLAGS    = 
MAKECONFIG_LIBS      = 
MAKECONFIG_CXXFLAGS  = -pipe -O3 -Wno-deprecated

CXX       =   $(MAKECONFIG_CXX)
CXXFLAGS  =   $(MAKECONFIG_CXXFLAGS)
INCPATH   =   -I.
LFLAGS    =   $(MAKECONFIG_LFLAGS)
LIBS      =   $(MAKECONFIG_LIBS)

.SUFFIXES: .cpp

.cpp.o:
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

VPATH     = ..:.
DESTDIR   = ./
TARGET    = calculate

HEADERS = \
	calculate.h					\
	calculateLexicalBase.h		\
	calculateLexicalDriver.h	\
	calculateParserBase.h		\
	calculateParserData.h		\
	calculateParserDriver.h		\
	calculateRegexpData.h		\
	calculateStack.h			\
	stackTypes.h				\
	tvaluelist.h				\
	unionScalar.h

SOURCES = \
	main.cpp					\
	calculate.cpp				\
	calculateLexicalBase.cpp	\
	calculateLexicalDriver.cpp	\
	calculateParserBase.cpp		\
	calculateParserDriver.cpp

OBJECTS = $(SOURCES:.cpp=.o)

application: $(DESTDIR)$(TARGET)

$(DESTDIR)$(TARGET): $(OBJECTS)
	$(MAKECONFIG_LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS)

%.d: %.cpp
	$(SHELL) -ec "$(CXX) -MM $(CXXFLAGS) $(INCPATH) $< | sed 's/$*\\.o[ :]*/$@ &/g' > $@"

objects: $(OBJECTS)

clean:
	-rm -f $(OBJECTS)
	-rm -f *.d
	-rm -f core

ifneq ($(MAKECMDGOALS),clean)

include $(SOURCES:.cpp=.d)

endif
