LIBLBFGS_DIR=./liblbfgs-1.10
LIBLBFGS_HDR_DIR=$(LIBLBFGS_DIR)/include

TARGET=train-eda eda

CXX=g++
#CXXFLAGS= -Wall
CXXFLAGS= -Wall -O2
#CXXFLAGS= -Wall -O3

LIBLINEAR_BINARIES=liblinear-1.91/tron.o liblinear-1.91/linear.o liblinear-1.91/blas/blas.a

#LIBLBFGS_BINARIES=$(LIBLBFGS_DIR)/lib/lbfgs.o


all:$(TARGET)

clean:
	cd liblinear-1.91/ && make clean
	rm -rf $(TARGET)

train-eda:\
	src/common/sentence.cpp\
	src/common/string_indexer.cpp\
	src/common/eda_unlabeled_edge_feature_extractor.cpp\
	src/common/simple_edge_label_feature_extractor.cpp\
	src/parse/chu_liu_edmonds.cpp\
	src/train/lbfgs_hpp_parser_learner.cpp\
	src/train/log_linear_sgd_parser_learner.cpp\
	src/model/models.cpp\
	src/bin/train.cpp
	cd liblinear-1.91/ && make
#	$(CXX) $(CXXFLAGS) -o $@ $^ $(LIBLINEAR_BINARIES) -I$(LIBLBFGS_HDR_DIR) -I.
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LIBLINEAR_BINARIES) $(LIBLBFGS_BINARIES) -I$(LIBLBFGS_HDR_DIR) -I.



eda:\
	src/common/sentence.cpp\
	src/common/string_indexer.cpp\
	src/parse/chu_liu_edmonds.cpp\
	src/common/eda_unlabeled_edge_feature_extractor.cpp\
	src/common/simple_edge_label_feature_extractor.cpp\
	src/model/models.cpp\
	src/bin/parse.cpp
	cd liblinear-1.91/ && make
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LIBLINEAR_BINARIES) -I.


liblinear-1.91/tron.o:
	cd liblinear-1.91/ && make


chu_liu_edmonds_test: src/parse/chu_liu_edmonds.cpp src/parse/chu_liu_edmonds_test.cpp
	$(CXX) $(CXXFLAGS) -o $@ $^

sentence_test: src/common/sentence_test.cpp src/common/sentence.cpp
	$(CXX) $(CXXFLAGS) -o $@ $^

models_test:\
	src/common/sentence.cpp\
	src/common/string_indexer.cpp\
	src/parse/chu_liu_edmonds.cpp\
	src/common/eda_unlabeled_edge_feature_extractor.cpp\
	src/train/simple_edge_label_feature_extractor.cpp\
	src/model/models.cpp\
	src/model/models_test.cpp
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LIBLINEAR_BINARIES)
