OS = $(shell uname -s)
LLVM_VERSION = $(shell llvm-config --version | cut -d . -f 1,2)
CFLAGS = -O3 -fno-use-cxa-atexit
CFLAGS += $(shell llvm-config --cppflags) $(shell llvm-config --cxxflags)
LIBDIR = $(shell llvm-config --libdir)
LLVMLIBS = $(shell llvm-config --system-libs) $(shell llvm-config --libs)
LIB = libllvmext.a
ifeq ($(OS), Darwin)
CLANG ?= clang++
else ifeq ($(OS), Linux)
CLANG ?= clang++-$(LLVM_VERSION)
else
$(error Unsupported platform: $(OS))
endif
.PHONY: all test
all: $(LIB)
test: $(LIB) test.cpp
$(CLANG) $(CFLAGS) -L$(LIBDIR) $(LLVMLIBS) $(LIB) test.cpp -o $(OUT_DIR)/test
llvmext.o: llvmext.cpp
$(CLANG) $(CFLAGS) -c $< -o $(OUT_DIR)/$@
$(LIB): llvmext.o
ar rcs $(OUT_DIR)/$@ $(OUT_DIR)/$^
clean:
rm -f $(OUT_DIR)/*.o $(OUT_DIR)/$(LIB)