summaryrefslogtreecommitdiff
path: root/databases/postgresql11/Makefile.common
blob: f685271235e911c5fa03db6e7393c80d1af06cfa (plain)
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# $NetBSD: Makefile.common,v 1.30 2022/10/16 14:42:50 gdt Exp $
#
# This Makefile fragment is included by all PostgreSQL packages built from
# the main sources of the PostgreSQL distribution except jdbc-postgresql.
#
# The PostgreSQL package naming scheme, aside from the obvious piecewise
# packages, is as follows:
#	<lang>-postgresql	client-side interface to PostgreSQL
#	postgresql-<lang>	server-side module for PostgreSQL backend
#
# used by databases/postgresql11-client/Makefile
# used by databases/postgresql11-contrib/Makefile
# used by databases/postgresql11-docs/Makefile
# used by databases/postgresql11-plperl/Makefile
# used by databases/postgresql11-plpython/Makefile
# used by databases/postgresql11-pltcl/Makefile
# used by databases/postgresql11-server/Makefile

DISTNAME=	postgresql-11.17
CATEGORIES=	databases
MASTER_SITES=	${MASTER_SITE_PGSQL:=source/v${PKGVERSION_NOREV}/}
EXTRACT_SUFX=	.tar.bz2

MAINTAINER?=	adam@NetBSD.org
HOMEPAGE=	https://www.postgresql.org/
LICENSE=	postgresql-license

CONFLICTS+=	postgresql-[0-9]*
CONFLICTS+=	postgresql[2-9][0-9]-[0-9]*

.if !empty(PKGNAME:M*-*-*)
module=		${PKGNAME:C/-[0-9].*$//:C/^.*-//}
CONFLICTS+=	postgresql[2-9][0-9]-${module}-[0-9]*
.endif

DISTINFO_FILE?=		${.CURDIR}/../../databases/postgresql11/distinfo
COMMON_FILESDIR?=	${.CURDIR}/../../databases/postgresql11/files
PATCHDIR?=		${.CURDIR}/../../databases/postgresql11/patches

USE_TOOLS+=		bison gmake lex
PKG_SYSCONFSUBDIR=	postgresql

.include "../../mk/bsd.prefs.mk"

PG_TEMPLATE.SunOS=	solaris
PG_TEMPLATE.IRIX=	irix5
PG_TEMPLATE.MirBSD=	openbsd
PG_TEMPLATE.DragonFly=	freebsd
.if !defined(PG_TEMPLATE.${OPSYS})
PG_TEMPLATE.${OPSYS}=	${LOWER_OPSYS}
.endif

PG_DATA_DIR=		${PREFIX}/share/postgresql
PG_DOC_DIR=		${PREFIX}/share/doc/postgresql
PG_LOCALE_DIR=		${PREFIX}/${PKGLOCALEDIR}/locale
PG_ETC_DIR=		${PKG_SYSCONFDIR}

GNU_CONFIGURE=		yes
CONFIGURE_ARGS+=	--sysconfdir=${PG_ETC_DIR}
CONFIGURE_ARGS+=	--datadir=${PG_DATA_DIR}
CONFIGURE_ARGS+=	--docdir=${PG_DOC_DIR}
CONFIGURE_ARGS+=	--localedir=${PG_LOCALE_DIR}
CONFIGURE_ARGS+=	--with-template=${PG_TEMPLATE.${OPSYS}}

CONFIGURE_ARGS+=	--with-libxml
CONFIGURE_ARGS+=	--with-readline
CONFIGURE_ARGS+=	--without-perl
CONFIGURE_ARGS+=	--without-python
CONFIGURE_ARGS+=	--without-tcl

# Work around a bug in autoconf, that thinks almost all mkdir
# implementations are deficient, and a bug someplace between postgis
# and pgxs, that causes topology/Makefile.in to run pgxs's install-sh
# but without a path.
CONFIGURE_ENV+=		ac_cv_path_mkdir="mkdir"

# avoid pointing to a wrapper
CONFIGURE_ENV+=		MSGFMT=${TOOLS_PATH.msgfmt}

# sys/ucred.h shouldn't be included on Solaris, causes conflicts between
# procfs and largefile.
CONFIGURE_ENV.SunOS+=	ac_cv_header_sys_ucred_h=no

# pkgsrc silently filters the --as-needed linker arg, but that makes
# it leak into the pgxs Makefiles and compromises manual building
# against PostgreSQL files installed. Disable it here to prevent
# that from happening.
.if ${OPSYS} == "SunOS" || ${OPSYS} == "Darwin"
CONFIGURE_ENV+=		pgac_cv_prog_cc_ldflags__Wl___as_needed=no
.endif

# Postgres on Alpha has no spinlock or memory barrier implementation
# and is "unlikely to work correctly".
# https://www.postgresql.org/message-id/E1X0yaj-000753-N6%40gemulon.postgresql.org
BROKEN_ON_PLATFORM+=	*-*-alpha

# Sporadic failures with a _high_ number of MAKE_JOBS:
# "fatal error: utils/errcodes.h: No such file or directory"
# Please override this locally if you can't reproduce it rather
# than removing MAKE_JOBS_SAFE, since this is necessary for
# bulk build stability.
MAKE_JOBS_SAFE=		no

.if ${MACHINE_ARCH} == "sparc"
CFLAGS.NetBSD+=		-D__sparc_v8__
.endif

# configure fails on OpenBSD and MirBSD if thread safety is enabled.
CONFIGURE_ARGS.MirBSD+=		--disable-thread-safety
CONFIGURE_ARGS.OpenBSD+=	--disable-thread-safety

# PGSQL_BLCKSZ is the size in bytes of a PostgreSQL disk page or block.
# This also limits the size of a tuple.  The valid values are powers
# of 2 up to 32768, and the default size is 8196.  Please don't change
# this value unless you know what you are doing.
BUILD_DEFS+=		PGSQL_BLCKSZ
.if defined(PGSQL_BLCKSZ)
CONFIGURE_ARGS+=	--with-blocksize=${PGSQL_BLCKSZ}
.endif

# UUID support for contrib/uuid-ossp
# It has to be defined here, because it affects Makefile.global
.if ${OPSYS:M*BSD}
CONFIGURE_ARGS+=	--with-uuid=bsd
.elif ${OPSYS} == "Darwin" || ${OPSYS} == "Linux"
CONFIGURE_ARGS+=	--with-uuid=e2fs
.include "../../devel/libuuid/buildlink3.mk"
.elif ${OPSYS} == "SunOS"
CONFIGURE_ARGS+=	--with-uuid=ossp
.include "../../devel/ossp-uuid/buildlink3.mk"
.endif

# PostgreSQL explicitly forbids any use of -ffast-math
BUILDLINK_TRANSFORM+=	rm:-ffast-math

# USE_LIBLTDL is "yes" or "no" depending on whether we're using libltdl
# to provide "dlopen" functionality for the PostgreSQL backend.
.if ${OPSYS} == "Interix"
USE_LIBLTDL?=		yes
.endif
USE_LIBLTDL?=		no

.include "../../devel/zlib/buildlink3.mk"
.include "../../textproc/libxml2/buildlink3.mk"

.include "../../mk/readline.buildlink3.mk"
.if ${READLINE_TYPE} == "editline"
CONFIGURE_ARGS+=	--with-libedit-preferred
.endif

.if !defined(META_PACKAGE)
post-extract:
.  if !empty(USE_LIBLTDL:M[yY][eE][sS])
	${CP} -f ${COMMON_FILESDIR}/dynloader-ltdl.h \
		${WRKSRC}/src/backend/port/dynloader/${PG_TEMPLATE.${OPSYS}:Q}.h
	${ECHO} "static int dummy = 0;" \
		> ${WRKSRC}/src/backend/port/dynloader/${PG_TEMPLATE.${OPSYS}:Q}.c
.  endif
	${TOUCH} ${WRKSRC}/src/template/dragonfly
	${CP} ${WRKSRC}/src/backend/port/dynloader/freebsd.c \
		${WRKSRC}/src/backend/port/dynloader/dragonfly.c
	${CP} ${WRKSRC}/src/backend/port/dynloader/freebsd.h \
		${WRKSRC}/src/backend/port/dynloader/dragonfly.h
	${CP} ${WRKSRC}/src/include/port/freebsd.h \
		${WRKSRC}/src/include/port/dragonfly.h
	${CP} ${WRKSRC}/src/makefiles/Makefile.freebsd \
		${WRKSRC}/src/makefiles/Makefile.dragonfly
.endif

.include "../../databases/postgresql11/options.mk"