resources/examples/llvm-c/Makefile
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 17 Sep 2015 07:36:40 +0100
changeset 49 307d55f736ec
parent 43 9327987437ae
permissions -rw-r--r--
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
CFLAGS=-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS
XSLTPROC=xsltproc
XML2DEF_XSL=../../styles/gccxml2def.xsl




INCLUDE_DIR=$(shell llvm-config-3.8 --includedir)
HEADERS=Core.h ExecutionEngine.h Target.h Analysis.h BitWriter.h
DEFFILES=$(HEADERS:%.h=%.h.def)
DEFFILE=llvm-c.def
XMLFILES=$(HEADERS:%.h=%.h.xml)

XSL_PARAMS=--stringparam c-header-file $(INCLUDE_DIR)/llvm-c/$(<:%.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/%.h
	$(CC) -m64 $(CFLAGS) -I$(INCLUDE_DIR) $< -fxml=$@

clean:
	rm -rf *.h.def *.h.xml

distclean: clean
	rm -rf $(DEFFILE)