--- ./Code/PgSQL/rdkit/Makefile.orig	2019-01-14 15:16:06.892096754 +0100
+++ ./Code/PgSQL/rdkit/Makefile	2019-01-14 15:16:18.788148697 +0100
@@ -11,8 +11,9 @@
 # -------------------------
 
 
-RDKIT=$(RDBASE)
 
+RDKIT=$(RDBASE)
+RDKIT_PGSQL_SRCDIR=$(RDBASE)/Code/PgSQL/rdkit
 
 ifeq ($(USE_INCHI),1)
   INCHILIBS=-lRDInchiLib -lInchi
@@ -26,18 +27,17 @@
   AVALONREGRESS=avalon
 endif
 
-POPCOUNTFLAGS=-DUSE_BUILTIN_POPCOUNT -mpopcnt
-
 ifeq ($(USE_THREADS),1)
   THREADLIBS=-L${BOOSTHOME}/lib -lboost_thread -lboost_system
 endif
 
-RDKLIBS       = ${AVALONLIBS} ${INCHILIBS} -lMolDraw2D -lMolTransforms -lMolHash -lFMCS -lChemReactions -lChemTransforms -lFileParsers -lSmilesParse -lFingerprints -lSubgraphs -lDescriptors -lPartialCharges -lSubstructMatch  -lGraphMol -lEigenSolvers -lDataStructs -lDepictor -lRDGeometryLib -lRDGeneral
+RDKLIBS       = ${AVALONLIBS} ${INCHILIBS} -lRDKitMolDraw2D -lRDKitMolTransforms -lRDKitMolHash -lRDKitFMCS -lRDKitChemReactions -lRDKitChemTransforms -lRDKitFileParsers -lRDKitSmilesParse -lRDKitFingerprints -lRDKitSubgraphs -lRDKitDescriptors -lRDKitPartialCharges -lRDKitSubstructMatch  -lRDKitGraphMol -lRDKitEigenSolvers -lRDKitDataStructs -lRDKitDepictor -lRDKitRDGeometryLib -lRDKitRDGeneral
+RDKIT_LIBDIR ?= ${RDKIT}/lib
 
 ifeq ($(STATIC_LINK),0)
-  SHLIB_LINK += -L${RDKIT}/lib -Wl,-rpath,'${RDKIT}/lib' ${RDKLIBS}
+  SHLIB_LINK += -L${RDKIT_LIBDIR} ${RDKLIBS}
 else
-  SHLIB_LINK += -L${RDKIT}/lib $(addsuffix _static,${RDKLIBS})
+  SHLIB_LINK += -L${RDKIT_LIBDIR} $(addsuffix _static,${RDKLIBS})
 endif
 
 ifndef BOOSTHOME
@@ -47,7 +47,7 @@
 
 SHLIB_LINK += ${THREADLIBS}
 
-PG_CPPFLAGS = -I${BOOSTHOME}/include -I${RDKIT}/Code -DRDKITVER='"007300"' ${AVALONFLAGS} ${INCHIFLAGS} ${POPCOUNTFLAGS}
+PG_CPPFLAGS = -I${BOOSTHOME}/include -I${RDKIT}/Code -DRDKITVER='"007300"' ${AVALONFLAGS} ${INCHIFLAGS}
 
 CPLUSPLUSFLAGS = $(filter-out -fexcess-precision=standard -Wmissing-prototypes -Wdeclaration-after-statement, $(CFLAGS))
 CPLUSPLUSFLAGS += -Wno-unused-function
@@ -56,38 +56,49 @@
 CPLUSPLUSFLAGS := $(filter-out -fexcess-precision=standard,$(CPLUSPLUSFLAGS))
 
 EXTENSION  = rdkit
-EXTVERSION = $(shell grep default_version $(EXTENSION).control | sed -e "s/default_version[[:space:]]*=[[:space:]]*'\([^']*\)'/\1/")
+EXTVERSION = $(shell grep default_version ${RDKIT_PGSQL_SRCDIR}/$(EXTENSION).control | sed -e "s/default_version[[:space:]]*=[[:space:]]*'\([^']*\)'/\1/")
 PG_CONFIG  = pg_config
 MODULE_big = rdkit
 OBJS       = rdkit_io.o mol_op.o bfp_op.o sfp_op.o rxn_op.o rdkit_gist.o bfp_gist.o bfp_gin.o low_gist.o guc.o cache.o adapter.o bitstring.o
 PGXS       := $(shell $(PG_CONFIG) --pgxs)
+PG96 = $(shell $(PG_CONFIG) --version | grep -qE " 9\.[1-5]" && echo no || echo yes)
 PG95 = $(shell $(PG_CONFIG) --version | grep -qE " 9\.[1-4]" && echo no || echo yes)
 PG92 = $(shell $(PG_CONFIG) --version | grep -qE " 9\.[1-2]" && echo yes || echo no)
 
 all: $(EXTENSION)--$(EXTVERSION).sql
 
+ifeq ($(PG96),yes)
+$(EXTENSION)--$(EXTVERSION).sql: $(EXTENSION).sql.in
+	sed -e's/@RDKIT_PG_BFP_GIST_FETCH@/FUNCTION    9   gbfp_fetch (internal),/;' \
+-e's/@RDKIT_GIN_BFP_TRICONSISTENT@/FUNCTION    6   gin_bfp_triconsistent(internal, int2, bfp, int4, internal, internal, internal),/' \
+-e's/@RDKIT_PARALLEL_SAFE@/PARALLEL SAFE/' \
+ $< > $@
+else
 ifeq ($(PG95),yes)
 $(EXTENSION)--$(EXTVERSION).sql: $(EXTENSION).sql.in
 	sed -e's/@RDKIT_PG_BFP_GIST_FETCH@/FUNCTION    9   gbfp_fetch (internal),/;' \
 -e's/@RDKIT_GIN_BFP_TRICONSISTENT@/FUNCTION    6   gin_bfp_triconsistent(internal, int2, bfp, int4, internal, internal, internal),/' \
+-e's/@RDKIT_PARALLEL_SAFE@//' \
  $< > $@
-	cp $< $@
 else
 ifeq ($(PG92),no)
 $(EXTENSION)--$(EXTVERSION).sql: $(EXTENSION).sql.in
 	sed -e's/@RDKIT_PG_BFP_GIST_FETCH@//;' \
 -e's/@RDKIT_GIN_BFP_TRICONSISTENT@/FUNCTION    6   gin_bfp_triconsistent(internal, int2, bfp, int4, internal, internal, internal),/' \
+-e's/@RDKIT_PARALLEL_SAFE@//' \
 $< > $@
 else
 $(EXTENSION)--$(EXTVERSION).sql: $(EXTENSION).sql.in
 	sed -e's/@RDKIT_PG_BFP_GIST_FETCH@//;' \
 -e's/@RDKIT_GIN_BFP_TRICONSISTENT@//;' \
+-e's/@RDKIT_PARALLEL_SAFE@//' \
 $< > $@
 endif
 endif
+endif
 
 REGRESS    = rdkit-91 props btree molgist bfpgist-91 bfpgin sfpgist slfpgist fps reaction ${INCHIREGRESS} ${AVALONREGRESS}
-DATA = $(EXTENSION)--$(EXTVERSION).sql
+DATA_built = $(EXTENSION)--$(EXTVERSION).sql
 EXTRA_CLEAN = $(EXTENSION)--$(EXTVERSION).sql
 include $(PGXS)
 
@@ -101,3 +112,9 @@
 
 %.o : %.cpp
 	$(CXX) $(CPLUSPLUSFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
+
+COMPILE.cxx.bc = $(CLANG) -xc++ -Wno-ignored-attributes $(BITCODE_CXXFLAGS) $(CPPFLAGS) -emit-llvm -c
+
+%.bc : %.cpp
+	$(COMPILE.cxx.bc) -o $@ $<
+	opt-7 -module-summary -f $@ -o $@
