-
Notifications
You must be signed in to change notification settings - Fork 11
/
Makefile.internal
101 lines (75 loc) · 3.27 KB
/
Makefile.internal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
EXTENSION = provsql
EXTVERSION = $(shell grep default_version $(EXTENSION).common.control | \
sed -e "s/default_version[[:space:]]*=[[:space:]]*'\([^']*\)'/\1/")
MODULE_big = provsql
OBJS = $(patsubst %.c,%.o,$(wildcard src/*.c)) $(patsubst %.cpp,%.o,$(wildcard src/*.cpp))
DOCS = $(wildcard doc/*.md)
DATA = sql/$(EXTENSION)--$(EXTVERSION).sql
EXTRA_CLEAN = sql/$(EXTENSION)--$(EXTVERSION).sql tdkc test/schedule $(EXTENSION).control
# We want REGRESS to be empty, since we are going to provide a schedule
# of tests. But we want REGRESS to be defined, otherwise installcheck
# does nothing. So we use the following Makefile trick to have a defined
# variable with empty value
EMPTY =
REGRESS = $(EMPTY)
REGRESS_OPTS = --load-extension=plpgsql --inputdir=test --outputdir=$(shell mktemp -d /tmp/tmp.provsqlXXXX) --schedule test/schedule
OS := $(shell uname)
ARCH := $(shell uname -m)
# Additional options for pg_regress can be specified below, e.g., a port
# number with EXTRA_REGRESS_OPTS = --port=5434
EXTRA_REGRESS_OPTS =
all: $(DATA) $(MODULE_big).so test/schedule
$(OBJS): $(wildcard src/*.h)
sql/$(EXTENSION)--$(EXTVERSION).sql: sql/$(EXTENSION).sql
cp $< $@
ifdef DEBUG
PG_CPPFLAGS += -O0 -g
endif
# Disable JIT code generation, due to various bugs, see in particular
# https://bugs.llvm.org/show_bug.cgi?id=41863
# https://github.com/PierreSenellart/provsql/issues/9
with_llvm = no
# A different pg_config can be specified below, e.g., when different
# PostgreSQL are installed on the same machine
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
%.o : %.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
ifeq ($(OS), Darwin)
HOMEBREW_PREFIX = $(shell brew --prefix)
BOOST_INSTALL_PATH = $(shell brew --prefix boost)
LINKER_FLAGS += -L$(BOOST_INSTALL_PATH)/lib -L$(HOMEBREW_PREFIX)/lib
endif
ifeq ($(ARCH), arm64)
PRECXXFLAGS=-I$(BOOST_INSTALL_PATH)/include
endif
ifeq ($(ARCH), x86_64)
PRECXXFLAGS=-I/usr/local/include
endif
PRECXXFLAGS+=-std=c++17 -Wno-register -fPIC
%.o : %.cpp
$(CXX) $(PRECXXFLAGS) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $<
LINKER_FLAGS += -lstdc++ -lboost_serialization -Wno-lto-type-mismatch
VERSION = $(shell $(PG_CONFIG) --version | awk '{print $$2}')
PGVER_MAJOR = $(shell echo $(VERSION) | awk -F. '{ print ($$1 + 0) }')
# Ways to pass linker flags have changed in PostgreSQL 16
ifeq ($(shell [ $(PGVER_MAJOR) -ge 16 ]; echo $$?), 0)
CFLAGS_SL_MODULE += $(LINKER_FLAGS)
else
LDFLAGS_SL += $(LINKER_FLAGS)
endif
test/schedule: $(wildcard test/schedule.*)
cat test/schedule.common > test/schedule
if [ $(PGVER_MAJOR) -ge 14 ]; then \
cat test/schedule.14 >> test/schedule; \
fi
$(EXTENSION).control: $(EXTENSION).common.control
if [ $(PGVER_MAJOR) -lt 13 ]; then \
grep -v trusted $< > $@; \
else \
cp $< $@; \
fi
installcheck: test/schedule
tdkc: src/TreeDecomposition.cpp src/TreeDecomposition.h src/BooleanCircuit.cpp src/BooleanCircuit.h src/Circuit.hpp src/dDNNF.h src/dDNNF.cpp src/dDNNFTreeDecompositionBuilder.h src/dDNNFTreeDecompositionBuilder.cpp src/Circuit.h src/Graph.h src/PermutationStrategy.h src/TreeDecompositionKnowledgeCompiler.cpp
$(CXX) $(PRECXXFLAGS) -DTDKC -W -Wall -o tdkc src/TreeDecomposition.cpp src/BooleanCircuit.cpp src/dDNNF.cpp src/dDNNFTreeDecompositionBuilder.cpp src/TreeDecompositionKnowledgeCompiler.cpp