LLVM_OBJDIR := /Users/lhames/Projects/llvm/llvm-svn-tot/build/x86-64/Debug+Asserts/llvm
LLVM_CONFIG := $(LLVM_OBJDIR)/bin/llvm-config

CXX := clang++

LLVM_COMPONENTS := mcjit interpreter nativecodegen bitreader bitwriter irreader \
	           ipo linker selectiondag asmparser instrumentation objcarcopts option

CLANG_LIBS = -lclangFrontend -lclangSerialization -lclangDriver -lclangCodeGen \
             -lclangParse -lclangSema -lclangStaticAnalyzerFrontend \
             -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore \
             -lclangAnalysis -lclangRewrite -lclangRewriteFrontend \
             -lclangEdit -lclangAST -lclangLex -lclangBasic

CXXFLAGS := $(shell $(LLVM_CONFIG) --cxxflags) \
            -I$(shell $(LLVM_CONFIG) --src-root)/tools/clang/include \
            -I$(shell $(LLVM_CONFIG) --obj-root)/tools/clang/include


LDFLAGS := -L$(shell $(LLVM_CONFIG) --libdir) $(CLANG_LIBS) \
           $(shell $(LLVM_CONFIG) --system-libs --libs $(LLVM_COMPONENTS))

jit-derived: jit-derived.o
	$(CXX) $(CXXFLAGS) -o $@ $< $(LDFLAGS) -v

jit-derived.o: jit-derived.cpp BaseClass.h
	$(CXX) $(CXXFLAGS) -c -o $@ $<

.PHONY: run-test
run-test: jit-derived
	./jit-derived test-case.cpp

.PHONY: clean
clean:
	rm -f jit-derived jit-derived.o
