File: Makefile

package info (click to toggle)
postgresql-plproxy 2.11.0-12
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 564 kB
  • sloc: ansic: 3,476; sql: 1,136; lex: 340; yacc: 171; makefile: 93; sh: 18; awk: 14
file content (132 lines) | stat: -rw-r--r-- 3,683 bytes parent folder | download
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
EXTENSION  = plproxy

# sync with NEWS, META.json, plproxy.control
EXTVERSION = 2.11.0
UPGRADE_VERS = 2.3.0 2.4.0 2.5.0 2.6.0 2.7.0 2.8.0 2.9.0 2.10.0
DISTVERSION = $(EXTVERSION)

# set to 1 to disallow functions containing SELECT
NO_SELECT = 0

# libpq config
PG_CONFIG = pg_config
PQINCSERVER = $(shell $(PG_CONFIG) --includedir-server)
PQINC = $(shell $(PG_CONFIG) --includedir)
PQLIB = $(shell $(PG_CONFIG) --libdir)

# module setup
MODULE_big = $(EXTENSION)
SRCS = src/cluster.c src/execute.c src/function.c src/main.c \
       src/query.c src/result.c src/type.c src/aatree.c
OBJS = src/scanner.o src/parser.tab.o $(SRCS:.c=.o)
EXTRA_CLEAN = src/scanner.[ch] src/parser.tab.[ch] libplproxy.* plproxy.so
SHLIB_LINK = -L$(PQLIB) -lpq

HDRS = src/plproxy.h src/rowstamp.h src/aatree.h

# Server include must come before client include, because there could
# be mismatching libpq-dev and postgresql-server-dev installed.
PG_CPPFLAGS = -I$(PQINCSERVER) -I$(PQINC) -DNO_SELECT=$(NO_SELECT) $(EXTRA_CPPFLAGS)

ifdef VPATH
PG_CPPFLAGS += -I$(VPATH)/src
endif

DISTNAME = $(EXTENSION)-$(DISTVERSION)

# regression testing setup
REGRESS = plproxy_init plproxy_test plproxy_select plproxy_many \
     plproxy_errors plproxy_clustermap plproxy_dynamic_record \
     plproxy_encoding plproxy_split plproxy_target plproxy_alter \
     plproxy_cancel plproxy_range plproxy_sqlmed plproxy_table \
     plproxy_modular
REGRESS_OPTS = --inputdir=test

# use known db name
override CONTRIB_TESTDB := regression

PLPROXY_SQL = sql/plproxy_lang.sql sql/plproxy_fdw.sql
DATA_built = sql/$(EXTENSION)--$(EXTVERSION).sql \
	     $(foreach v,$(UPGRADE_VERS),sql/plproxy--$(v)--$(EXTVERSION).sql)

#
# load PGXS makefile
#
PGXS = $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)

ifeq ($(PORTNAME), win32)
SHLIB_LINK += -lws2_32 -lpgport
endif

# PGXS may define them as empty
FLEX := $(if $(FLEX),$(FLEX),flex)
BISON := $(if $(BISON),$(BISON),bison)

# parser rules
src/scanner.o: src/parser.tab.h
src/parser.tab.h: src/parser.tab.c

src/parser.tab.c: src/parser.y
	@mkdir -p src
	$(BISON) -b src/parser -d $<

src/parser.o: src/scanner.h
src/scanner.h: src/scanner.c
src/scanner.c: src/scanner.l
	@mkdir -p src
	$(FLEX) -o$@ --header-file=$(@:.c=.h) $<

sql/$(EXTENSION)--$(EXTVERSION).sql: $(PLPROXY_SQL)
	@mkdir -p sql
	cat $^ > $@

$(foreach v,$(UPGRADE_VERS),sql/plproxy--$(v)--$(EXTVERSION).sql): sql/ext_update_validator.sql
	@mkdir -p sql
	cat $< >$@

# dependencies

$(OBJS): $(HDRS)

# utility rules

tags: $(SRCS) $(HDRS)
	ctags $(SRCS) $(HDRS)

dist:
	git archive --prefix=$(DISTNAME)/ HEAD | gzip -9 > $(DISTNAME).tar.gz

zip:
	git archive -o $(DISTNAME).zip --format zip --prefix=$(DISTNAME)/ HEAD

test: install
	$(MAKE) installcheck || { filterdiff --format=unified regression.diffs | less; exit 1; }

citest:
	$(MAKE) installcheck || { filterdiff --format=unified regression.diffs; exit 1; }

ack:
	cp results/*.out test/expected/

checkver:
	@echo "Checking version numbers"
	@test "$(DISTVERSION)" = "$(EXTVERSION)" \
		|| { echo "ERROR: DISTVERSION <> EXTVERSION"; exit 1; }
	@grep -q "^default_version *= *'$(EXTVERSION)'" $(EXTENSION).control \
		|| { echo "ERROR: $(EXTENSION).control has wrong version"; exit 1; }
	@grep -q "Proxy $(EXTVERSION) " NEWS.md \
		|| { echo "ERROR: NEWS.md needs version"; exit 1; }
	@grep '"version"' META.json | head -n 1 | grep -q '"$(EXTVERSION)"' \
		|| { echo "ERROR: META.json has wrong version"; exit 1; }

REPO = github
release: checkver
	git diff --exit-code
	git tag v$(EXTVERSION)
	git push $(REPO)
	git push $(REPO) v$(EXTVERSION):v$(EXTVERSION)

doc/note.md: Makefile NEWS.md
	awk -vVER=$(EXTVERSION) -f doc/note.awk NEWS.md > doc/note.md