CXX    = g++296
YACC   = bison
LEX    = flex

BLDDIR = ../build
SRCDIR = ../src
INCDIR = ../inc

SOURCE = main.cpp \
	 array.cpp astring.cpp ccodes.cpp ctable.cpp \
	 datatype.cpp errorhan.cpp fileacc.cpp fileline.cpp \
	 indextab.cpp linklist.cpp mem.cpp \
	 nameidma.cpp numval.cpp rcbinstr.cpp \
	 rcostrm.cpp \
	 rcscan.cpp rcstack.cpp resource.cpp \
	 stack.cpp stringar.cpp structst.cpp \
	 unicode_compressor.cpp \
	 localise.cpp

GENSRC = rcompl.cpp rcomp.cpp
OBJECT = $(addprefix $(BLDDIR)/, $(notdir $(SOURCE:.cpp=.o) \
					  $(GENSRC:.cpp=.o)))
TARGET = $(addprefix $(BLDDIR)/, rcomp )

VPATH  = $(SRCDIR) $(BLDDIR)

dummy := $(shell mkdir -p $(BLDDIR))

all: $(TARGET)

$(TARGET): $(OBJECT)
	$(CXX) $^ -o $@
	strip $@
	
$(OBJECT) $(GENSRC): $(BLDDIR)/rcomp.hpp

$(OBJECT): $(BLDDIR)/%.o: %.cpp
	$(CXX) $(CXXFLAGS) -D __LINUX__ -I $(INCDIR) -I $(BLDDIR) -c $< -o $@

$(BLDDIR)/rcompl.cpp: rcomp.l
	$(LEX) -t $< > $@

$(BLDDIR)/rcomp.cpp $(BLDDIR)/rcomp.hpp: $(SRCDIR)/rcomp.y
	$(YACC) -d $< -o $(BLDDIR)/rcomp.cpp

clean:
	rm -f $(GENSRC) $(OBJECT) $(TARGET)
	rm -f $(addprefix $(BLDDIR)/, $(GENSRC) rcomp.hpp)

test:
	@echo "TODO: stuff in ../tsrc"

.PHONY: all clean test

