3 SRCS
= client.c loader.c objects.c pooler.c proto.c sbuf.c server.c util.c \
4 admin.c stats.c takeover.c md5.c janitor.c pktbuf.c system.c main.c \
5 varcache.c aatree.c hash.c slab.c
6 HDRS
= client.h loader.h objects.h pooler.h proto.h sbuf.h server.h util.h \
7 admin.h stats.h takeover.h md5.h janitor.h pktbuf.h system.h bouncer.h \
8 list.h mbuf.h varcache.h aatree.h hash.h slab.h iobuf.h
10 # data & dirs to include in tgz
11 DOCS
= doc
/overview.txt doc
/usage.txt doc
/config.txt doc
/todo.txt
12 MANPAGES
= doc
/pgbouncer
.1 doc
/pgbouncer
.5
13 DATA
= README NEWS AUTHORS COPYRIGHT etc
/pgbouncer.ini etc
/userlist.txt Makefile \
14 config.mak.in
include/config.h.in \
15 configure configure.ac debian
/packages debian
/changelog doc
/Makefile \
16 test/Makefile
test/asynctest.c
test/conntest.sh
test/ctest6000.ini \
17 test/ctest7000.ini
test/run-conntest.sh
test/stress.py
test/test.ini \
18 test/test.sh
test/userlist.txt etc
/example.debian.init.sh doc
/fixman.py \
19 win32
/eventmsg.mc win32
/eventmsg.rc win32
/MSG00001.bin \
20 win32
/Makefile win32
/pgbevent.c \
21 win32
/win32support.c win32
/win32support.h
22 DIRS
= doc etc
include src debian
test win32
24 # keep autoconf stuff separate
27 # fill values for unconfigured tree
31 # calculate full-path values
33 hdrs
= $(addprefix $(srcdir)/include/, $(HDRS
))
34 srcs
= $(addprefix $(srcdir)/src
/, $(SRCS
))
35 objs
= $(addprefix $(builddir
)/lib
/, $(OBJS
))
36 FULL
= $(PACKAGE_TARNAME
)-$(PACKAGE_VERSION
)
37 DISTFILES
= $(DIRS
) $(DATA
) $(DOCS
) $(srcs
) $(hdrs
) $(MANPAGES
)
38 exe
= $(builddir
)/pgbouncer
$(EXT
)
40 CPPCFLAGS
+= -I
$(srcdir)/include
42 ifneq ($(builddir
),$(srcdir))
43 CPPCFLAGS
+= -I
$(builddir
)/include
46 ifeq ($(enable_debug
),yes
)
47 CPPCFLAGS
+= -DDBGVER
="\"compiled by <$${USER}@`hostname`> at `date '+%Y-%m-%d %H:%M:%S'`\""
50 ifeq ($(PORTNAME
),win32
)
54 CPPFLAGS
+= -I
$(srcdir)/win32
55 WSRCS
= win32support.c
56 WHDRS
= win32support.h
57 WOBJS
= $(WSRCS
:.c
=.o
)
58 srcs
+= $(srcdir)/win32
/win32support.c
59 hdrs
+= $(srcdir)/win32
/win32support.h
60 objs
+= $(builddir
)/lib
/win32support.o
62 dll
= $(builddir
)/pgbevent.dll
63 dlldef
= $(builddir
)/lib
/pgbevent.def
64 dllobjs
= $(builddir
)/lib
/eventmsg.o
$(builddir
)/lib
/pgbevent.o
66 DEFFLAGS
= --export-all-symbols
-A
70 # Quiet by default, 'make V=1' shows commands
80 ## actual targets now ##
83 all: $(exe
) $(dll
) doc-all
86 $(exe
): $(builddir
)/config.mak
$(objs
)
88 $(Q
) $(CC
) -o
$@
$(LDFLAGS
) $(objs
) $(LIBS
)
90 # objects depend on all the headers
91 $(builddir
)/lib
/%.o
: $(srcdir)/src
/%.c
$(builddir
)/config.mak
$(hdrs
)
92 @mkdir
-p
$(builddir
)/lib
94 $(Q
) $(CC
) -c
-o
$@
$< $(DEFS
) $(CFLAGS
) $(CPPFLAGS
)
96 $(builddir
)/lib
/%.o
: $(srcdir)/win32
/%.c
$(builddir
)/config.mak
$(hdrs
)
97 @mkdir
-p
$(builddir
)/lib
99 $(Q
) $(CC
) -c
-o
$@
$< $(DEFS
) $(CFLAGS
) $(CPPFLAGS
)
101 # install binary and other stuff
102 install: $(exe
) doc-install
103 mkdir
-p
$(DESTDIR
)$(bindir)
104 mkdir
-p
$(DESTDIR
)$(docdir
)
105 $(BININSTALL
) -m
755 $(exe
) $(DESTDIR
)$(bindir)
106 $(INSTALL
) -m
644 $(srcdir)/etc
/pgbouncer.ini
$(DESTDIR
)$(docdir
)
107 ifeq ($(PORTNAME
),win32
)
108 $(BININSTALL
) -m
755 $(dll
) $(DESTDIR
)$(bindir)
112 tgz
: config.mak
$(DISTFILES
) $(MANPAGES
)
113 rm -rf
$(FULL
) $(FULL
).tgz
115 (for f in
$(DISTFILES
); do echo
$$f; done
) | cpio
-pm
$(FULL
)
116 tar czf
$(FULL
).tgz
$(FULL
)
120 $(MAKE
) -C doc pgbouncer
.1
123 $(MAKE
) -C doc pgbouncer
.5
125 # create debian package
132 rm -f
$(objs
) $(exe
) $(dll
) $(dlldef
) $(dllobjs
)
134 # clean configure results
135 distclean: clean doc-distclean
136 rm -f
include/config.h
include/config.h.in~ config.log config.status config.mak
139 # clean autoconf results
140 realclean: distclean doc-realclean
141 rm -f aclocal
* include/config.h.in configure depcomp install-sh missing
144 # generate configure script and config.h.in
147 rm -rf autom4te
* include/config.h.in~
149 # targets can depend on this to force ./configure
150 $(builddir
)/config.mak
::
151 @
test -f
$(srcdir)/configure ||
{ \
152 echo
"Please run 'make boot && ./configure' first.";exit
1;}
153 @
test -f
$@ ||
{ echo
"Please run ./configure first.";exit
1;}
155 doc-all doc-install doc-clean doc-distclean doc-realclean
:
156 @if
test -d doc
; then
$(MAKE
) -C doc
$(subst doc-
,,$@
) DESTDIR
=$(DESTDIR
) ;\
160 # targets can depend on this to force 'make boot'
162 @
test -f
$@ ||
{ echo
"Please run 'make boot' first.";exit
1;}
165 tags: $(srcs
) $(hdrs
)
166 if
test -f ..
/libevent
/event.h
; then \
167 ctags
$(srcs
) $(hdrs
) ..
/libevent
/*.
[ch
]; \
169 ctags
$(srcs
) $(hdrs
); \
172 # run sparse over code
175 $(MAKE
) clean pgbouncer CC
=cgcc
179 $(CC
) -pg
$(DEFS
) -g
-O2
$(CPPFLAGS
) $(LDFLAGS
) -o
$@
$(srcs
) $(LIBS
)
184 $(builddir
)/lib
/%.s
: $(srcdir)/src
/%.c config.mak
$(hdrs
)
185 @mkdir
-p
$(builddir
)/lib
187 $(Q
) $(CC
) -S
-fverbose-asm
-o
$@
$< $(DEFS
) $(CFLAGS
) $(CPPFLAGS
)
191 ifeq ($(PORTNAME
),win32
)
193 $(builddir
)/lib
/eventmsg.o
: $(srcdir)/win32
/eventmsg.rc
195 $(Q
) $(WINDRES
) $< -o
$@
--include-dir
=$(srcdir)/win32
197 $(dlldef
): $(dllobjs
)
199 $(Q
) $(DLLTOOL
) $(DEFFLAGS
) --output-def
$@
$(dllobjs
)
202 $(dll
): $(builddir
)/config.mak
$(dllobjs
) $(dlldef
)
204 $(Q
) $(DLLWRAP
) --def
$(dlldef
) -o
$@
$(dllobjs
)
208 stripped
: $(exe
) $(dll
)
209 $(STRIP
) $(exe
) $(dll
)