Add files from parent branch HEAD:
[pkgsrc.git] / mk / bdb.buildlink3.mk
1 # $NetBSD: bdb.buildlink3.mk,v 1.10 2004/05/30 10:40:02 grant Exp $
2 #
3 # This Makefile fragment is meant to be included by packages that
4 # require a Berkeley DB implementation.  bdb.buildlink3.mk will:
5 #
6 #       * set BDBBASE to the base directory of the Berkeley DB files;
7 #       * set BDB_TYPE to the Berkeley DB implementation used.
8 #
9 # There are two variables that can be used to tweak the selection of
10 # the Berkeley DB implementation:
11 #
12 # BDB_DEFAULT is a user-settable variable whose value is the default
13 #       Berkeley DB implementation to use.
14 #
15 # BDB_ACCEPTED is a package-settable list of Berkeley DB implementations
16 #       that may be used by the package.
17
18 BDB_BUILDLINK3_MK:=     ${BDB_BUILDLINK3_MK}+
19
20 .include "../../mk/bsd.prefs.mk"
21
22 .if !empty(BDB_BUILDLINK3_MK:M+)
23 BDB_DEFAULT?=   # empty
24 BDB_ACCEPTED?=  ${_BDB_PKGS}
25
26 # This is an exhaustive list of all of the Berkeley DB implementations
27 # that may be used with bdb.buildlink3.mk, in order of precedence.
28 #
29 _BDB_PKGS?=     native db4 db3 db2
30
31 _BDB_PKGBASE.db2=       db
32 _BDB_PKGSRCDIR.db2=     ../../databases/db
33 .  for _bdb_ in ${_BDB_PKGS}
34 _BDB_PKGBASE.${_bdb_}?=         ${_bdb_}
35 _BDB_PKGSRCDIR.${_bdb_}?=       ../../databases/${_bdb_}
36 .  endfor
37
38 _BDB_DEFAULT=   ${BDB_DEFAULT}
39 _BDB_ACCEPTED=  ${BDB_ACCEPTED}
40
41 # Mark the acceptable Berkeley DB packages and check which, if any, are
42 # already installed.
43 #
44 .  for _bdb_ in ${_BDB_ACCEPTED:Nnative}
45 _BDB_OK.${_bdb_}=       yes
46 .    if !defined(_BDB_INSTALLED.${_bdb_})
47 _BDB_INSTALLED.${_bdb_}!=       \
48         if ${PKG_INFO} -qe ${_BDB_PKGBASE.${_bdb_}}; then               \
49                 ${ECHO} "yes";                                          \
50         else                                                            \
51                 ${ECHO} "no";                                           \
52         fi
53 MAKEFLAGS+=     _BDB_INSTALLED.${_bdb_}=${_BDB_INSTALLED.${_bdb_}}
54 .    endif
55 .  endfor
56
57 USE_DB185?=             yes
58 _BDB_CPPFLAGS?=         # empty
59 _BDB_LIBS?=             # empty
60 _BDB_LDFLAGS?=          # empty
61 _BDB_OK.native?=        no
62 _BDB_INSTALLED.native?= no
63 .  if exists(/usr/include/db.h)
64 _BDB_OK.native!=        \
65         if ${GREP} -q "^\#define.*HASHVERSION.*2$$" /usr/include/db.h; then \
66                 ${ECHO} "yes";                                          \
67         else                                                            \
68                 ${ECHO} "no";                                           \
69         fi
70 .    if !empty(_BDB_OK.native:M[yY][eE][sS])
71 _BDB_INSTALLED.native=  yes
72 _BDB_INCDIRS=           include
73 _BDB_TRANSFORM=         # empty
74 _BDB_LIBS+=             # empty
75 .    endif
76 .  endif
77 .  if !empty(_BDB_OK.native:M[nN][oO]) && exists(/usr/include/db1/db.h)
78 _BDB_OK.native=         yes
79 _BDB_INSTALLED.native=  yes
80 _BDB_INCDIRS=           include/db1
81 _BDB_TRANSFORM=         l:db:db1
82 _BDB_LIBS+=             -ldb1
83 _BDB_CPPFLAGS+=         -I/usr/${_BDB_INCDIRS}
84 .  endif
85 .  if !empty(USE_DB185:M[nN][oO])
86 _BDB_OK.native=         no
87 _BDB_INSTALLED.native=  no
88 _BDB_INCDIRS=           # empty
89 _BDB_TRANSFORM=         # empty
90 _BDB_LIBS+=             # empty
91 .  endif
92
93 .  if !defined(_BDB_TYPE)
94 #
95 # Prefer the default one if it's accepted,...
96 #
97 .    if !empty(_BDB_DEFAULT) && \
98         defined(_BDB_OK.${_BDB_DEFAULT}) && \
99         !empty(_BDB_OK.${_BDB_DEFAULT}:M[yY][eE][sS])
100 _BDB_TYPE=      ${_BDB_DEFAULT}
101 .    endif
102 #
103 # ...otherwise, use one of the installed Berkeley DB packages,...
104 #
105 .    for _bdb_ in ${_BDB_ACCEPTED}
106 .      if !empty(_BDB_INSTALLED.${_bdb_}:M[yY][eE][sS])
107 _BDB_TYPE?=     ${_bdb_}
108 .      endif
109 .    endfor
110 #
111 # ...otherwise, just use the first accepted Berkeley DB package.
112 #
113 .    for _bdb_ in ${_BDB_ACCEPTED:Nnative}
114 _BDB_TYPE?=     ${_bdb_}
115 .    endfor
116 _BDB_TYPE?=     none
117 MAKEFLAGS+=     _BDB_TYPE=${_BDB_TYPE}
118 .  endif
119
120 BDB_TYPE=       ${_BDB_TYPE}
121 BUILD_DEFS+=    BDB_TYPE
122 BUILD_DEFS+=    BDBBASE
123
124 .endif  # BDB_BUILDLINK3_MK
125
126 .if ${BDB_TYPE} == "none"
127 PKG_FAIL_REASON=        "No acceptable Berkeley DB implementation found."
128 .else
129 .  if ${BDB_TYPE} == "native"
130 IS_BUILTIN.db-native=           yes
131 USE_BUILTIN.db-native=          yes
132 BUILDLINK_PACKAGES:=            ${BUILDLINK_PACKAGES:Ndb-native}
133 BUILDLINK_PACKAGES+=            db-native
134 BUILDLINK_INCDIRS.db-native?=   ${_BDB_INCDIRS}
135 BUILDLINK_TRANSFORM?=           ${_BDB_TRANSFORM}
136 BDBBASE=        ${BUILDLINK_PREFIX.db-native}
137 BUILDLINK_CPPFLAGS.bdb+=        ${_BDB_CPPFLAGS}
138 BUILDLINK_LDFLAGS.bdb+=         ${_BDB_LDFLAGS}
139 BUILDLINK_LIBS.bdb+=            ${_BDB_LIBS}
140 .  else
141 BDBBASE=        ${BUILDLINK_PREFIX.${_BDB_PKGBASE.${BDB_TYPE}}}
142 .    include "${_BDB_PKGSRCDIR.${BDB_TYPE}}/buildlink3.mk"
143 BUILDLINK_CPPFLAGS.bdb+=        ${BUILDLINK_CPPFLAGS.${BDB_TYPE}}
144 BUILDLINK_LDFLAGS.bdb+=         ${BUILDLINK_LDFLAGS.${BDB_TYPE}}
145 BUILDLINK_LIBS.bdb+=            ${BUILDLINK_LIBS.${BDB_TYPE}}
146 .  endif
147 .endif