CC     = gcc
CFLAGS = -ggdb3 `pkg-config --cflags --libs eina`
BIN = eo_tokenizer
SRC = main.c eo_tokenizer.c eo_definitions.c
LOG = EINA_LOG_LEVELS=eo_toknz:4

.PHONY: clean
.SUFFIXES: .rl .xml .dot .png

.rl.c:
	ragel -s -o $@ $<

.rl.xml:
	ragel -x -o $@ $<

.rl.dot:
	ragel -V -p -S eo_tokenizer $< -o $@

.dot.png:
	dot -Tpng >$@ $<

.c.o:
	$(CC) -c -Wall -I. $(CFLAGS) $< -o $@

all: $(BIN)

eo_tokenizer.c: eo_tokenizer.rl
eo_tokenizer.xml: eo_tokenizer.rl
eo_tokenizer.dot: eo_tokenizer.rl
eo_tokenizer.png: eo_tokenizer.dot

eo_definitions.o: eo_definitions.c eo_definitions.h
eo_tokenizer.o: eo_tokenizer.c eo_tokenizer.h eo_definitions.h
main.o: main.c eo_tokenizer.h

eo_tokenizer: main.o eo_tokenizer.o eo_definitions.o
	$(CC) -Wall -I. $(CFLAGS) main.o eo_tokenizer.o eo_definitions.o -o $@

test: eo_tokenizer
	$(LOG) ./eo_tokenizer ./data/*.c

clean:
	rm -f *~ *.o *.dot *.png *.xml $(BIN).c $(BIN)