YACC=bison
LEX=flex
CC=g++

# XXX Top of the build tree and source tree
srcdir=		../../Python-2.5.2

# Python version
VERSION=	2.5

# Compiler flags
OPT=		-g
INCLUDES=	-I$(srcdir)/Include -I$(srcdir)
CFLAGS=		$(OPT)
CPPFLAGS=	$(INCLUDES)

# The Python library
LIBPYTHON=	$(srcdir)/libpython$(VERSION).a
PYTHON_EXT= py2Cmodule.so


# LIBS=		-lnsl -ldl -lreadline -ltermcap -lieee -lpthread -lutil
LIBS=		-ldl -lreadline -ltermcap -lpthread -lutil
LDFLAGS=	-Xlinker -export-dynamic
SYSLIBS=	-lm
MODLIBS=	
ALLLIBS=	$(LIBPYTHON) $(MODLIBS) $(LIBS) $(SYSLIBS)

all: tryit

.cpp.o:
	$(CC) $(CPPFLAGS) -c $<

.c.o:
	$(CC) $(CFLAGS) -c $<

check: tryit
	./tryit test0.c bla

tryit: main.o parser.o lexer.o cmm_error.o C2py.o backend.o ${PYTHON_EXT}
	$(CC) $(CFLAGS) $(LDFLAGS) -o tryit main.o parser.o lexer.o cmm_error.o C2py.o backend.o $(ALLLIBS)

parser.c parser.h: parser.y
	$(YACC) -dt parser.y
	mv -f parser.tab.c parser.c
	mv -f parser.tab.h parser.h

lexer.c: lexer.l
	$(LEX) -t lexer.l >lexer.c

parser.y: parser.spec parser.nP7510.spec buildpl.pl CmmParserLang.my
	./buildpl.pl >tmp.txt

# lexer.l: parser.spec parser.nP7510.spec buildpl.pl
# ./buildpl.pl >tmp.txt

lexer.o:	lexer.c
		$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@

C2py.o:	C2py.c
		$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@

cmm_error.o	: cmm_error.h cmm_error.cpp

${PYTHON_EXT}:	py2C.o
		gcc -shared $(CFLAGS) $(CPPFLAGS) $< -o $@

py2C.o: py2C.c
		gcc $(CFLAGS) $(CPPFLAGS) -c -fpic $< -o $@

clean:
	rm -f *.sc *.pyc *.o *.so lexer.c parser.[ch] tryit
