LLVM bindings: allow to specify path to llvm-config
..by setting LLVM_CONFIG variable when generating definitions
for LLVM bindings. Example:
make LVM_CONFIG=~/Projects/LLVM/sources1/build/Debug+Asserts/bin/llvm-config
CC=gccxml.real
LLVM_CONFIG ?= llvm-config-3.8
CFLAGS=$(shell $(LLVM_CONFIG) --cflags)
XSLTPROC=xsltproc
XML2DEF_XSL=../../styles/gccxml2def.xsl
INCLUDE_DIR=../../../../llvm_s/llvm_c_ext/include
INCLUDES=-I$(shell llvm-config-3.8 --includedir) -I$(INCLUDE_DIR)
HEADERS=CoreExt.h Intrinsics.h DIBuilder.h DWARF.h
DEFFILES=$(HEADERS:%.h=%.h.def)
DEFFILE=llvm-c-ext.def
XMLFILES=$(HEADERS:%.h=%.h.xml)
XSL_PARAMS=--stringparam c-header-file $(INCLUDE_DIR)/llvm-c-ext/$(<:%.h.xml=%.h)
XSLTPROC_FLAGS=$(XSL_PARAMS)
default: all
all: $(DEFFILE)
xml: $(XMLFILES)
$(DEFFILE): $(DEFFILES)
cat $(DEFFILES) > $(DEFFILE)
# sed -i -e 's/^(struct-foreign LLVM/(struct LLVM/g' $(DEFFILE)
# sed -i -e 's/^(typedef-foreign LLVM/(typedef LLVM/g' $(DEFFILE)
# sed -i -e 's/^(enum-foreign LLVM/(enum LLVM/g' $(DEFFILE)
%.h.def:%.h.xml
$(XSLTPROC) $(XSLTPROC_FLAGS) -o $@ $(XML2DEF_XSL) $<
%.h.xml: $(INCLUDE_DIR)/llvm-c-ext/%.h
$(CC) -m64 $(CFLAGS) $(INCLUDES) $< -fxml=$@
clean:
rm -rf *.h.def *.h.xml
distclean: clean
rm -rf $(DEFFILE)