CPP=g++
SWIG=swig
SWIGOPTS_LANG=-c++ -python 

PYTHONDIR=/usr/include/python2.6
WCCLDIR=/usr/local/include/libwccl/
CORPUS2DIR=/usr/local/include/libcorpus2/
PWRUTILDIR=

CORPUS2BIN=/usr/local/lib/libcorpus2.so
PWRUTILBIN=/usr/local/lib/libpwrutils.so
CCLBIN=/usr/local/lib/libwccl.so
ANTLRLIB=/usr/lib/libantlr-pic.a 

# CPPFLAGS=-fPIC -Wall -O2
CPPFLAGS=-fPIC -O2

# CBIN=libcorpustag.o libcorpustagset.o libcorpustagsetmanager.o libcclparser.o
# CBIN=libcclvalue.o libcclbool.o libcclposition.o libccltset.o libcclstrset.o
# CBIN=libcclexpression.o libcclparsedexpression.o
CBIN=libcclfunctionaloperator.o

CBINOUT=_libcorpustag.so _libcorpustagset.so _libcorpustagsetmanager.so \
	_libcclvalue.so _libcclstrset.so _libcclbool.so _libcclposition.so \
	_libccltset.so _libcclexpression.so _libcclparsedexpression.so \
	_libcclfunctionaloperator.so

CWRAP=libcorpustag_wrap.cxx libcorpustagset_wrap.cxx libcorpustagsetmanager_wrap.cxx \
	libcclvalue_wrap.cxx libcclstrset_wrap.cxx libcclbool_wrap.cxx \
	libcclparser_wrap.cxx libcclposition_wrap.cxx libccltset_wrap.cxx \
	libcclexpression_wrap.cxx libcclparsedexpression_wrap.cxx \
	libcclfunctionaloperator_wrap.cxx

CWRAPBIN=libcorpustag_wrap.o libcorpustagset_wrap.o libcorpustagsetmanager_wrap.o \
				 libcclvalue_wrap.o libcclstrset_wrap.o libcclbool_wrap.o \
				 libcclposition_wrap.o libccltset_wrap.o \
				 libcclexpression_wrap.o libcclparsedexpression_wrap.o \
				 libcclfunctionaloperator_wrap.o

PYMODULES=libcorpustag.py libcorpustagset.py libcorpustagsetmanager.py \
	libcclvalue.py libcclstrset.py libcclbool.py \
	libcclparser.py libcclposition.py libccltset.py \
	libcclexpression.py libcclparsedexpression.py

PYCBIN=libcorpustag.pyc libcorpustagset.pyc libcorpustagsetmanager.pyc \
	 libcclvalue.pyc libcclstrset.pyc libcclbool.pyc \
	 libcclposition.pyc libccltset.pyc libcclexpression.pyc libcclparsedexpression.pyc

all:$(CBIN)
	# Nothing to do


# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
#  Corpus2 Wrappers
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# Tag
libcorpustag.o:
	$(SWIG) $(SWIGOPTS_LANG) libcorpustag.i
	$(CPP) -c libcorpustag_wrap.cxx -I$(PYTHONDIR) $(CPPFLAGS)
	$(CPP) -shared libcorpustag_wrap.o \
		$(PWRUTILBIN) $(CORPUS2BIN) -o _libcorpustag.so

# Tagset
libcorpustagset.o:
	$(SWIG) $(SWIGOPTS_LANG) libcorpustagset.i
	$(CPP) -c libcorpustagset_wrap.cxx -I$(PYTHONDIR) $(CPPFLAGS)
	$(CPP) -fPIC -shared libcorpustagset_wrap.o \
		$(PWRUTILBIN) $(CORPUS2BIN) -o _libcorpustagset.so

# Tagsetmanager
libcorpustagsetmanager.o:
	$(SWIG) $(SWIGOPTS_LANG) libcorpustagsetmanager.i
	$(CPP) -c libcorpustagsetmanager_wrap.cxx -I$(PYTHONDIR) $(CPPFLAGS)
	$(CPP) -shared libcorpustagsetmanager_wrap.o \
		$(CCLBIN) $(PWRUTILBIN) $(CORPUS2BIN) -o _libcorpustagsetmanager.so

# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
#  CCL Wrappers
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# Value
libcclvalue.o:
	$(SWIG) $(SWIGOPTS_LANG) libcclvalue.i
	$(CPP) -c libcclvalue_wrap.cxx -I$(PYTHONDIR) -I$(WCCLDIR) $(CPPFLAGS)
	$(CPP) -shared libcclvalue_wrap.o \
		$(CCLBIN) $(ANTLRLIB) -o _libcclvalue.so

# Bool
libcclbool.o:
	$(SWIG) $(SWIGOPTS_LANG) libcclbool.i
	$(CPP) -c libcclbool_wrap.cxx -I$(PYTHONDIR) -I$(WCCLDIR) $(CPPFLAGS)
	$(CPP) -shared libcclbool_wrap.o \
		$(CCLBIN) $(ANTLRLIB) -o _libcclbool.so

# Position
libcclposition.o:
	$(SWIG) $(SWIGOPTS_LANG) libcclposition.i
	$(CPP) -c libcclposition_wrap.cxx -I$(PYTHONDIR) -I$(WCCLDIR) $(CPPFLAGS)
	$(CPP) -shared libcclposition_wrap.o \
		$(CCLBIN) $(ANTLRLIB) -o _libcclposition.so

# TSet
libccltset.o:
	$(SWIG) $(SWIGOPTS_LANG) libccltset.i
	$(CPP) -c libccltset_wrap.cxx -I$(PYTHONDIR) -I$(WCCLDIR) $(CPPFLAGS)
	$(CPP) -shared libccltset_wrap.o \
		$(CCLBIN) $(ANTLRLIB) -o _libccltset.so

# StrSet
libcclstrset.o:
	$(SWIG) $(SWIGOPTS_LANG) libcclstrset.i
	$(CPP) -c libcclstrset_wrap.cxx -I$(PYTHONDIR) -I$(WCCLDIR) $(CPPFLAGS)
	$(CPP) -shared libcclstrset_wrap.o \
		$(CCLBIN) $(ANTLRLIB) -o _libcclstrset.so

# Expression
libcclexpression.o:
	$(SWIG) $(SWIGOPTS_LANG) libcclexpression.i
	$(CPP) -c libcclexpression_wrap.cxx -I$(PYTHONDIR) -I$(WCCLDIR) $(CPPFLAGS)
	$(CPP) -shared libcclexpression_wrap.o \
		$(CCLBIN) $(ANTLRLIB) -o _libcclexpression.so

# ParsedExpression
libcclparsedexpression.o:
	$(SWIG) $(SWIGOPTS_LANG) libcclparsedexpression.i
	$(CPP) -c libcclparsedexpression_wrap.cxx -I$(PYTHONDIR) -I$(WCCLDIR) $(CPPFLAGS)
	$(CPP) -shared libcclparsedexpression_wrap.o \
		$(CCLBIN) $(ANTLRLIB) -o _libcclparsedexpression.so

# FunctionalOperator
libcclfunctionaloperator.o:
	$(SWIG) $(SWIGOPTS_LANG) libcclfunctionaloperator.i
	$(CPP) -c libcclfunctionaloperator_wrap.cxx -I$(PYTHONDIR) -I$(WCCLDIR) $(CPPFLAGS)
	$(CPP) -shared libcclfunctionaloperator_wrap.o \
		$(CCLBIN) $(ANTLRLIB) -o _libcclfunctionaloperator.so

# -----------------------------------------------------------------------------
clean:
	rm -f $(CBIN) $(CBINOUT) $(CWRAP) $(CWRAPBIN) $(PYMODULES) $(PYCBIN)