summaryrefslogtreecommitdiff
path: root/mk/bdb.buildlink3.mk
blob: c85710d9330b56aef3c288595fd3d274ebe2e314 (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
# $NetBSD: bdb.buildlink3.mk,v 1.12 2004/11/15 17:54:49 jlam Exp $
#
# This Makefile fragment is meant to be included by packages that
# require a Berkeley DB implementation.  bdb.buildlink3.mk will:
#
#       * set BDBBASE to the base directory of the Berkeley DB files;
#	* set BDB_LIBS to the library option needed to link against
#	  the Berkeley DB library;
#       * set BDB_TYPE to the Berkeley DB implementation used.
#
# There are two variables that can be used to tweak the selection of
# the Berkeley DB implementation:
#
# BDB_DEFAULT is a user-settable variable whose value is the default
#       Berkeley DB implementation to use.
#
# BDB_ACCEPTED is a package-settable list of Berkeley DB implementations
#       that may be used by the package.

BDB_BUILDLINK3_MK:=	${BDB_BUILDLINK3_MK}+

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

.if !empty(BDB_BUILDLINK3_MK:M+)

# If we've specified a list of acceptable Berkeley DB packages and it
# doesn't include db1, then don't set USE_DB185 to yes.  The package's
# configure process should know how to probe for the libraries and
# headers on its own.
#
.  if defined(BDB_ACCEPTED) && empty(BDB_ACCEPTED:Mdb1)
USE_DB185?=	no
.  else
USE_DB185?=	yes
.  endif

BDB_DEFAULT?=	# empty
BDB_ACCEPTED?=	${_BDB_PKGS}

# _BDB_PKGS is an exhaustive list of all of the Berkeley DB
# implementations that may be used with bdb.buildlink3.mk, in order
# of precedence.
#
.  if !empty(USE_DB185:M[yY][eE][sS])
CHECK_BUILTIN.db1:=	yes
.    include "../../mk/db1.builtin.mk"
CHECK_BUILTIN.db1:=	no
.    if defined(IS_BUILTIN.db1) && !empty(IS_BUILTIN.db1:M[yY][eE][sS])
# Prefer the builtin db1 support if we requested it
_BDB_PKGS?=	db1 db4 db3 db2
.    else
_BDB_PKGS?=	db4 db3 db2 db1
.    endif
.  else
_BDB_PKGS?=	db4 db3 db2
.  endif

_BDB_PKGBASE.db2=	db
_BDB_PKGSRCDIR.db2=	../../databases/db
.  for _bdb_ in ${_BDB_PKGS}
_BDB_PKGBASE.${_bdb_}?=		${_bdb_}
_BDB_PKGSRCDIR.${_bdb_}?=	../../databases/${_bdb_}
.  endfor

_BDB_DEFAULT=	${BDB_DEFAULT}
_BDB_ACCEPTED=	${BDB_ACCEPTED}

# Mark the acceptable Berkeley DB packages and check which, if any, are
# already installed.
#
.  for _bdb_ in ${_BDB_ACCEPTED}
_BDB_OK.${_bdb_}=	yes
.    if !defined(_BDB_INSTALLED.${_bdb_})
_BDB_INSTALLED.${_bdb_}!=	\
	if ${PKG_INFO} -qe ${_BDB_PKGBASE.${_bdb_}}; then		\
		${ECHO} "yes";						\
	else								\
		${ECHO} "no";						\
	fi
MAKEFLAGS+=	_BDB_INSTALLED.${_bdb_}=${_BDB_INSTALLED.${_bdb_}}
.    endif
.  endfor

.  if defined(USE_BUILTIN.db1)
_BDB_OK.db1=		${USE_BUILTIN.db1}
_BDB_INSTALLED.db1=	${USE_BUILTIN.db1}
.  else
_BDB_OK.db1=		no
_BDB_INSTALLED.db1=	no
.  endif

.  if !defined(_BDB_TYPE)
#
# Prefer the default one if it's accepted,...
#
.    if !empty(_BDB_DEFAULT) && \
	defined(_BDB_OK.${_BDB_DEFAULT}) && \
	!empty(_BDB_OK.${_BDB_DEFAULT}:M[yY][eE][sS])
_BDB_TYPE=	${_BDB_DEFAULT}
.    endif
#
# ...otherwise, use one of the installed Berkeley DB packages,...
#
.    for _bdb_ in ${_BDB_ACCEPTED}
.      if !empty(_BDB_INSTALLED.${_bdb_}:M[yY][eE][sS])
_BDB_TYPE?=	${_bdb_}
.      endif
.    endfor
#
# ...otherwise, just use the first accepted Berkeley DB package.
#
.    for _bdb_ in ${_BDB_ACCEPTED}
_BDB_TYPE?=	${_bdb_}
.    endfor
_BDB_TYPE?=	none
MAKEFLAGS+=	_BDB_TYPE=${_BDB_TYPE}
.  endif

BDB_TYPE=	${_BDB_TYPE}
BUILD_DEFS+=	BDB_TYPE
BUILD_DEFS+=	BDBBASE

# Define some public variables to refer to package-specific variables.
BDBBASE=	${BUILDLINK_PREFIX.${_BDB_PKGBASE.${BDB_TYPE}}}
BDB_LIBS=	${BUILDLINK_LDADD.${_BDB_PKGBASE.${BDB_TYPE}}}

.endif	# BDB_BUILDLINK3_MK

.if ${BDB_TYPE} == "none"
PKG_FAIL_REASON=	"No acceptable Berkeley DB implementation found."
.elif ${BDB_TYPE} == "db1"
BUILDLINK_PACKAGES:=		${BUILDLINK_PACKAGES:Ndb1}
BUILDLINK_PACKAGES+=		db1
BUILDLINK_BUILTIN_MK.db1=	../../mk/db1.builtin.mk
.else
.  include "${_BDB_PKGSRCDIR.${BDB_TYPE}}/buildlink3.mk"
.endif