CC = g++ -Wall
LIBFLAGS = -lxml2
CFLAGS = -O3 -I. -I/usr/include/libxml2
LEX = flex

COMMON_OBJECTS = \
	Unicode.o \
	UnicodeData.o \
	Case.o
COMMON_DEPENDENCIES = \
	$(COMMON_OBJECTS)

DOCFILTERS_OBJECTS = \
	Filters.o \
	ParseHTML.o \
	ParseTXT.o \
	PreFilterHTML.o \
	PreFilterTXT.o \
	PostFilterHTML.o \
	PostFilterTXT.o \
	CharsetConvert.o \
	EncodingIANA.o \
	MIMEType.o \
	htmldef.o
DOCFILTERS_DEPENDENCIES = \
	$(DOCFILTERS_OBJECTS)

TOKENIZATION_OBJECTS = \
	Tokenization.o \
	Tokenizer.o \
	token.o
TOKENIZATION_DEPENDENCIES = \
	Tokenizer.l \
	Tokenizer.cc \
	$(TOKENIZATION_OBJECTS)

SEGMENTATION_OBJECTS = \
	Segmentation.o
SEGMENTATION_DEPENDENCIES = \
	$(SEGMENTATION_OBJECTS)

MAIN_OBJECTS = \
	main.o \
	$(COMMON_OBJECTS) \
	$(DOCFILTERS_OBJECTS) \
	$(TOKENIZATION_OBJECTS) \
	$(SEGMENTATION_OBJECTS)
MAIN_DEPENDENCIES = \
	$(MAIN_OBJECTS) \
	$(DOCFILTERS_DEPENDENCIES) \
	$(TOKENIZATION_DEPENDENCIES)\
	$(SEGMENTATION_DEPENDENCIES)

tokenization:	$(MAIN_DEPENDENCIES)
	${CC} ${CFLAGS} -o$@ ${LIBFLAGS} ${MAIN_OBJECTS}

.cc.o:
	${CC} ${CFLAGS} -o$@ -c $<

clean:
	rm *.[ao]
	rm Tokenizer.cc

%.cc:	%.l
	$(LEX) -p -p -B -o$@ $^
