/[ports]/head/Mk/Uses/gssapi.mk
ViewVC logotype

Contents of /head/Mk/Uses/gssapi.mk

Parent Directory Parent Directory | Revision Log Revision Log


Revision 518677 - (show annotations) (download)
Fri Nov 29 22:11:34 2019 UTC (4 years, 7 months ago) by pkubaj
File MIME type: text/plain
File size: 5617 byte(s)
Mk/Uses/gssapi.mk: don't set GSSAPILDFLAGS for USES=gssapi

Setting GSSAPILDFLAGS for USES=gssapi causes -L/usr/lib to be added to LDFLAGS.

This breaks compilation of some ports, like www/squid on GCC architectures when new GCC from ports needs to be used.

The new GCC tries to link to libstdc++ and fails. Not setting it explicitely causes /usr/local/lib/gcc8/libstdc++.so to be taken instead and /usr/lib is searched for libraries anyway, just with lower priority.

Tested on powerpc64 and amd64 on www/squid.

PR:		237275
Approved by:	mentors (implicit approval), hrs (maintainer timeout)

1 # $FreeBSD$
2 #
3 # handle dependency on Kerberos port
4 #
5 # Feature: gssapi
6 # Usage: USES=gssapi or USES=gssapi:ARGS
7 # Valid ARGS: base (default, implicit), heimdal, mit.
8 # "bootstrap" is a special prefix only for krb5 or heimdal ports.
9 # ("bootstrap,mit")
10 # flags is a special suffix to define CFLAGS, LDFLAGS, and LDADD.
11 # ("base,flags")
12 #
13 # MAINTAINER: hrs@FreeBSD.org
14 #
15 # User defined variables:
16 # HEIMDAL_HOME (default: ${LOCALBASE})
17 # KRB5_HOME (default: ${LOCALBASE})
18 #
19 # Exported variables:
20 # GSSAPIBASEDIR
21 # GSSAPICPPFLAGS
22 # GSSAPIINCDIR
23 # GSSAPILDFLAGS
24 # GSSAPILIBDIR
25 # GSSAPILIBS
26 # GSSAPI_CONFIGURE_ARGS
27 # KRB5CONFIG
28 #
29 # Affected variables:
30 # PREFIX (bootstrap)
31 # CPPFLAGS (flags)
32 # LDADD (flags)
33 # LDCFLAGS
34 #
35 # Notes:
36 # - GSSAPILIBDIR is prepended to "-Wl,-rpath," in LDFLAGS.
37 # - bootstrap sets PREFIX based on KRB5_HOME or HEIMDAL_HOME.
38 #
39 # Usage:
40 #
41 # A typical example:
42 #
43 # OPTIONS_SINGLE= GSSAPI
44 # OPTIONS_SINGLE_GSSAPI= GSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT GSSAPI_NONE
45 #
46 # GSSAPI_BASE_USES= gssapi
47 # GSSAPI_BASE_CONFIGURE_ON= \
48 # --with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}
49 #
50 # GSSAPI_HEIMDAL_USES=gssapi:heimdal
51 # GSSAPI_HEIMDAL_CONFIGURE_ON= \
52 # --with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}
53 #
54 # GSSAPI_MIT_USES= gssapi:mit
55 # GSSAPI_MIT_CONFIGURE_ON= \
56 # --with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}
57 #
58 # GSSAPI_NONE_CONFIGURE_ON= --without-gssapi
59 #
60 # If pathname is required for Kerberos implementation, use ${GSSAPIBASEDIR}.
61 #
62 # CPPFLAGS, LDFLAGS, and LDADD can automatically be set by using "flags"
63 # modifier. It is useful if the port does not use a configure script.
64 #
65 # How To Debug:
66 #
67 # A port maintainer can try "make debug-krb" to confirm if building
68 # a GSSAPI library works fine. It will perform a library link test and
69 # show which library and what parameters will be used.
70 # If it works but your port does not build, some parameters are missing in
71 # the building phase of the port. If it does not work, the problem is in
72 # the GSSAPI library, not your port. Please contact MAINTAINER of this file
73 # in that case.
74 #
75 .if !defined(_INCLUDE_USES_GSSAPI_MK)
76 _INCLUDE_USES_GSSAPI_MK= yes
77
78 _HEIMDAL_DEPENDS=${GSSAPILIBDIR}/libgssapi.so:security/heimdal
79 _MITKRB5_DEPENDS=${GSSAPILIBDIR}/libkrb5support.so:security/krb5
80 _HEADERS= sys/types.h sys/stat.h stdint.h
81
82 .if empty(gssapi_ARGS)
83 gssapi_ARGS= base
84 .endif
85 .for _A in ${gssapi_ARGS}
86 _local:= ${_A}
87 .if ${_local} == "base"
88 . if ${SSL_DEFAULT} != base
89 IGNORE= You are using OpenSSL from ports and have selected GSSAPI from base, please select another GSSAPI value
90 . endif
91 HEIMDAL_HOME= /usr
92 GSSAPIBASEDIR= ${HEIMDAL_HOME}
93 GSSAPILIBDIR= ${GSSAPIBASEDIR}/lib
94 GSSAPIINCDIR= ${GSSAPIBASEDIR}/include
95 _HEADERS+= gssapi/gssapi.h gssapi/gssapi_krb5.h krb5.h
96 GSSAPICPPFLAGS= -I"${GSSAPIINCDIR}"
97 GSSAPILIBS= -lkrb5 -lgssapi -lgssapi_krb5
98 GSSAPILDFLAGS=
99 .elif ${_local} == "heimdal"
100 HEIMDAL_HOME?= ${LOCALBASE}
101 GSSAPIBASEDIR= ${HEIMDAL_HOME}
102 GSSAPILIBDIR= ${GSSAPIBASEDIR}/lib/heimdal
103 GSSAPIINCDIR= ${GSSAPIBASEDIR}/include/heimdal
104 _HEADERS+= gssapi/gssapi.h gssapi/gssapi_krb5.h krb5.h
105 .if !defined(_KRB_BOOTSTRAP)
106 BUILD_DEPENDS+= ${_HEIMDAL_DEPENDS}
107 RUN_DEPENDS+= ${_HEIMDAL_DEPENDS}
108 .else
109 PREFIX= ${HEIMDAL_HOME}
110 .endif
111 GSSAPICPPFLAGS= -I"${GSSAPIINCDIR}"
112 GSSAPILIBS= -lkrb5 -lgssapi
113 GSSAPILDFLAGS= -L"${GSSAPILIBDIR}"
114 _RPATH= ${GSSAPILIBDIR}
115 .elif ${_local} == "mit"
116 KRB5_HOME?= ${LOCALBASE}
117 GSSAPIBASEDIR= ${KRB5_HOME}
118 GSSAPILIBDIR= ${GSSAPIBASEDIR}/lib
119 GSSAPIINCDIR= ${GSSAPIBASEDIR}/include
120 _HEADERS+= gssapi/gssapi.h gssapi/gssapi_krb5.h krb5.h
121 .if !defined(_KRB_BOOTSTRAP)
122 BUILD_DEPENDS+= ${_MITKRB5_DEPENDS}
123 RUN_DEPENDS+= ${_MITKRB5_DEPENDS}
124 .else
125 PREFIX= ${KRB5_HOME}
126 .endif
127 GSSAPILIBS= -lkrb5 -lgssapi_krb5
128 GSSAPICPPFLAGS= -I"${GSSAPIINCDIR}"
129 GSSAPILDFLAGS= -L"${GSSAPILIBDIR}"
130 _RPATH= ${GSSAPILIBDIR}
131 .elif ${_local} == "bootstrap"
132 _KRB_BOOTSTRAP= 1
133 .elif ${_local} == "flags"
134 _KRB_USEFLAGS= 1
135 .else
136 IGNORE= USES=gssapi - invalid args: [${_local}] specified
137 .endif
138 .endfor
139
140 KRB5CONFIG=${GSSAPIBASEDIR}/bin/krb5-config
141
142 # Fix up -Wl,-rpath in LDFLAGS
143 .if defined(_RPATH) && !empty(_RPATH)
144 .if !empty(LDFLAGS:M-Wl,-rpath,*)
145 .for F in ${LDFLAGS:M-Wl,-rpath,*}
146 LDFLAGS:= -Wl,-rpath,${_RPATH}:${F:S/-Wl,-rpath,//} \
147 ${LDFLAGS:N-Wl,-rpath,*}
148 .endfor
149 .else
150 LDFLAGS+= -Wl,-rpath,${_RPATH}:/usr/lib
151 .endif
152 _DEBUG_KRB_RPATH= -Wl,-rpath,${_RPATH}
153 .endif
154 .if defined(_KRB_USEFLAGS) && !empty(_KRB_USEFLAGS)
155 CPPFLAGS+= ${GSSAPICPPFLAGS}
156 LDFLAGS+= ${GSSAPILDFLAGS}
157 LDADD+= ${GSSAPILIBS}
158 .endif
159 GSSAPI_CONFIGURE_ARGS= \
160 CFLAGS="${GSSAPICPPFLAGS} ${CFLAGS}" \
161 LDFLAGS="${GSSAPILDFLAGS} ${LDFLAGS}" \
162 LIBS="${GSSAPILIBS} ${LIBS}" \
163 KRB5CONFIG="${KRB5CONFIG}"
164
165 debug-krb:
166 @(for I in ${_HEADERS}; do echo "#include <$$I>"; done; \
167 echo "int main() { gss_acquire_cred(0, 0, 0, 0, 0, 0, 0, 0);" \
168 "krb5_init_context(0);" \
169 "gsskrb5_register_acceptor_identity(0); return 0;}" \
170 ) > /tmp/${.TARGET}.c
171 ${CC} ${CFLAGS} -o /tmp/${.TARGET}.x ${GSSAPICPPFLAGS} \
172 ${GSSAPILIBS} ${GSSAPILDFLAGS} ${_DEBUG_KRB_RPATH} \
173 /tmp/${.TARGET}.c && \
174 ldd /tmp/${.TARGET}.x; \
175 ${RM} /tmp/${.TARGET}.x
176 @echo "PREFIX: ${PREFIX}"
177 @echo "GSSAPIBASEDIR: ${GSSAPIBASEDIR}"
178 @echo "GSSAPIINCDIR: ${GSSAPIINCDIR}"
179 @echo "GSSAPILIBDIR: ${GSSAPILIBDIR}"
180 @echo "GSSAPILIBS: ${GSSAPILIBS}"
181 @echo "GSSAPICPPFLAGS: ${GSSAPICPPFLAGS}"
182 @echo "GSSAPILDFLAGS: ${GSSAPILDFLAGS}"
183 @echo "GSSAPI_CONFIGURE_ARGS: ${GSSAPI_CONFIGURE_ARGS}"
184 @echo "KRB5CONFIG: ${KRB5CONFIG}"
185 @echo "CFLAGS: ${CFLAGS}"
186 @echo "LDFLAGS: ${LDFLAGS}"
187 @echo "LDADD: ${LDADD}"
188 .endif

Properties

Name Value
svn:eol-style native
svn:keywords FreeBSD=%H
svn:mime-type text/plain

  ViewVC Help
Powered by ViewVC 1.1.27