xref: /freebsd/krb5/util/build-tools/krb5-config.sh (revision ee3960cba1068e12fb032a68c46d74841d9edab3)
1*ee3960cbSCy Schubert#!/bin/sh
2*ee3960cbSCy Schubert
3*ee3960cbSCy Schubert# Copyright 2001, 2002, 2003 by the Massachusetts Institute of Technology.
4*ee3960cbSCy Schubert# All Rights Reserved.
5*ee3960cbSCy Schubert#
6*ee3960cbSCy Schubert# Export of this software from the United States of America may
7*ee3960cbSCy Schubert#   require a specific license from the United States Government.
8*ee3960cbSCy Schubert#   It is the responsibility of any person or organization contemplating
9*ee3960cbSCy Schubert#   export to obtain such a license before exporting.
10*ee3960cbSCy Schubert#
11*ee3960cbSCy Schubert# WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
12*ee3960cbSCy Schubert# distribute this software and its documentation for any purpose and
13*ee3960cbSCy Schubert# without fee is hereby granted, provided that the above copyright
14*ee3960cbSCy Schubert# notice appear in all copies and that both that copyright notice and
15*ee3960cbSCy Schubert# this permission notice appear in supporting documentation, and that
16*ee3960cbSCy Schubert# the name of M.I.T. not be used in advertising or publicity pertaining
17*ee3960cbSCy Schubert# to distribution of the software without specific, written prior
18*ee3960cbSCy Schubert# permission.  Furthermore if you modify this software you must label
19*ee3960cbSCy Schubert# your software as modified software and not distribute it in such a
20*ee3960cbSCy Schubert# fashion that it might be confused with the original M.I.T. software.
21*ee3960cbSCy Schubert# M.I.T. makes no representations about the suitability of
22*ee3960cbSCy Schubert# this software for any purpose.  It is provided "as is" without express
23*ee3960cbSCy Schubert# or implied warranty.
24*ee3960cbSCy Schubert#
25*ee3960cbSCy Schubert#
26*ee3960cbSCy Schubert
27*ee3960cbSCy Schubert# Configurable parameters set by autoconf
28*ee3960cbSCy Schubert# Disreagard the above. Edit this by hand in the bespoke FreeBSD build.
29*ee3960cbSCy Schubertversion_string="Kerberos 5 release 1.21.3"
30*ee3960cbSCy Schubert
31*ee3960cbSCy Schubertprefix=/usr
32*ee3960cbSCy Schubertexec_prefix=${prefix}
33*ee3960cbSCy Schubertincludedir=${prefix}/include
34*ee3960cbSCy Schubertlibdir=${exec_prefix}/lib
35*ee3960cbSCy SchubertCC_LINK='$(CC) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CFLAGS) $(LDFLAGS)'
36*ee3960cbSCy SchubertKDB5_DB_LIB=
37*ee3960cbSCy SchubertRPATH_FLAG=''
38*ee3960cbSCy SchubertPROG_RPATH_FLAGS=''
39*ee3960cbSCy SchubertPTHREAD_CFLAGS='-pthread'
40*ee3960cbSCy SchubertDL_LIB=''
41*ee3960cbSCy SchubertDEFCCNAME='FILE:/tmp/krb5cc_%{uid}'
42*ee3960cbSCy SchubertDEFKTNAME='FILE:/etc/krb5.keytab'
43*ee3960cbSCy SchubertDEFCKTNAME='FILE:/var/krb5/user/%{euid}/client.keytab'
44*ee3960cbSCy Schubert
45*ee3960cbSCy SchubertLIBS='-lintl -L/usr/local/lib'
46*ee3960cbSCy SchubertGEN_LIB=
47*ee3960cbSCy Schubert
48*ee3960cbSCy Schubert# Defaults for program
49*ee3960cbSCy Schubertlibrary=krb5
50*ee3960cbSCy Schubert
51*ee3960cbSCy Schubert# Some constants
52*ee3960cbSCy Schubertvendor_string="Massachusetts Institute of Technology"
53*ee3960cbSCy Schubert
54*ee3960cbSCy Schubert# Process arguments
55*ee3960cbSCy Schubert# Yes, we are sloppy, library specifications can come before options
56*ee3960cbSCy Schubertwhile test $# != 0; do
57*ee3960cbSCy Schubert    case $1 in
58*ee3960cbSCy Schubert	--all)
59*ee3960cbSCy Schubert	    do_all=1
60*ee3960cbSCy Schubert	    ;;
61*ee3960cbSCy Schubert	--cflags)
62*ee3960cbSCy Schubert	    do_cflags=1
63*ee3960cbSCy Schubert	    ;;
64*ee3960cbSCy Schubert	--defccname)
65*ee3960cbSCy Schubert	    do_defccname=1
66*ee3960cbSCy Schubert	    ;;
67*ee3960cbSCy Schubert	--defcktname)
68*ee3960cbSCy Schubert	    do_defcktname=1
69*ee3960cbSCy Schubert	    ;;
70*ee3960cbSCy Schubert	--defktname)
71*ee3960cbSCy Schubert	    do_defktname=1
72*ee3960cbSCy Schubert	    ;;
73*ee3960cbSCy Schubert	--deps) # historically a no-op
74*ee3960cbSCy Schubert	    ;;
75*ee3960cbSCy Schubert	--exec-prefix)
76*ee3960cbSCy Schubert	    do_exec_prefix=1
77*ee3960cbSCy Schubert	    ;;
78*ee3960cbSCy Schubert	--help)
79*ee3960cbSCy Schubert	    do_help=1
80*ee3960cbSCy Schubert	    ;;
81*ee3960cbSCy Schubert	--libs)
82*ee3960cbSCy Schubert	    do_libs=1
83*ee3960cbSCy Schubert	    ;;
84*ee3960cbSCy Schubert	--prefix)
85*ee3960cbSCy Schubert	    do_prefix=1
86*ee3960cbSCy Schubert	    ;;
87*ee3960cbSCy Schubert	--vendor)
88*ee3960cbSCy Schubert	    do_vendor=1
89*ee3960cbSCy Schubert	    ;;
90*ee3960cbSCy Schubert	--version)
91*ee3960cbSCy Schubert	    do_version=1
92*ee3960cbSCy Schubert	    ;;
93*ee3960cbSCy Schubert	krb5)
94*ee3960cbSCy Schubert	    library=krb5
95*ee3960cbSCy Schubert	    ;;
96*ee3960cbSCy Schubert	gssapi)
97*ee3960cbSCy Schubert	    library=gssapi
98*ee3960cbSCy Schubert	    ;;
99*ee3960cbSCy Schubert	gssrpc)
100*ee3960cbSCy Schubert	    library=gssrpc
101*ee3960cbSCy Schubert	    ;;
102*ee3960cbSCy Schubert	kadm-client)
103*ee3960cbSCy Schubert	    library=kadm_client
104*ee3960cbSCy Schubert	    ;;
105*ee3960cbSCy Schubert	kadm-server)
106*ee3960cbSCy Schubert	    library=kadm_server
107*ee3960cbSCy Schubert	    ;;
108*ee3960cbSCy Schubert	kdb)
109*ee3960cbSCy Schubert	    library=kdb
110*ee3960cbSCy Schubert	    ;;
111*ee3960cbSCy Schubert	*)
112*ee3960cbSCy Schubert	    echo "$0: Unknown option \`$1' -- use \`--help' for usage"
113*ee3960cbSCy Schubert	    exit 1
114*ee3960cbSCy Schubert    esac
115*ee3960cbSCy Schubert    shift
116*ee3960cbSCy Schubertdone
117*ee3960cbSCy Schubert
118*ee3960cbSCy Schubert# If required options - provide help
119*ee3960cbSCy Schubertif test -z "$do_all" -a -z "$do_version" -a -z "$do_vendor" -a \
120*ee3960cbSCy Schubert    -z "$do_prefix" -a -z "$do_vendor" -a -z "$do_exec_prefix" -a \
121*ee3960cbSCy Schubert    -z "$do_defccname" -a -z "$do_defktname" -a -z "$do_defcktname" -a \
122*ee3960cbSCy Schubert    -z "$do_cflags" -a -z "$do_libs"; then
123*ee3960cbSCy Schubert    do_help=1
124*ee3960cbSCy Schubertfi
125*ee3960cbSCy Schubert
126*ee3960cbSCy Schubert
127*ee3960cbSCy Schubertif test -n "$do_help"; then
128*ee3960cbSCy Schubert    echo "Usage: $0 [OPTIONS] [LIBRARIES]"
129*ee3960cbSCy Schubert    echo "Options:"
130*ee3960cbSCy Schubert    echo "        [--help]          Help"
131*ee3960cbSCy Schubert    echo "        [--all]           Display version, vendor, and various values"
132*ee3960cbSCy Schubert    echo "        [--version]       Version information"
133*ee3960cbSCy Schubert    echo "        [--vendor]        Vendor information"
134*ee3960cbSCy Schubert    echo "        [--prefix]        Kerberos installed prefix"
135*ee3960cbSCy Schubert    echo "        [--exec-prefix]   Kerberos installed exec_prefix"
136*ee3960cbSCy Schubert    echo "        [--defccname]     Show built-in default ccache name"
137*ee3960cbSCy Schubert    echo "        [--defktname]     Show built-in default keytab name"
138*ee3960cbSCy Schubert    echo "        [--defcktname]    Show built-in default client keytab name"
139*ee3960cbSCy Schubert    echo "        [--cflags]        Compile time CFLAGS"
140*ee3960cbSCy Schubert    echo "        [--libs]          List libraries required to link [LIBRARIES]"
141*ee3960cbSCy Schubert    echo "Libraries:"
142*ee3960cbSCy Schubert    echo "        krb5              Kerberos 5 application"
143*ee3960cbSCy Schubert    echo "        gssapi            GSSAPI application with Kerberos 5 bindings"
144*ee3960cbSCy Schubert    echo "        gssrpc            GSSAPI RPC application"
145*ee3960cbSCy Schubert    echo "        kadm-client       Kadmin client"
146*ee3960cbSCy Schubert    echo "        kadm-server       Kadmin server"
147*ee3960cbSCy Schubert    echo "        kdb               Application that accesses the kerberos database"
148*ee3960cbSCy Schubert    exit 0
149*ee3960cbSCy Schubertfi
150*ee3960cbSCy Schubert
151*ee3960cbSCy Schubertif test -n "$do_all"; then
152*ee3960cbSCy Schubert    all_exit=
153*ee3960cbSCy Schubert    do_version=1
154*ee3960cbSCy Schubert    do_prefix=1
155*ee3960cbSCy Schubert    do_exec_prefix=1
156*ee3960cbSCy Schubert    do_vendor=1
157*ee3960cbSCy Schubert    title_version="Version:     "
158*ee3960cbSCy Schubert    title_prefix="Prefix:      "
159*ee3960cbSCy Schubert    title_exec_prefix="Exec_prefix: "
160*ee3960cbSCy Schubert    title_vendor="Vendor:      "
161*ee3960cbSCy Schubertelse
162*ee3960cbSCy Schubert    all_exit="exit 0"
163*ee3960cbSCy Schubertfi
164*ee3960cbSCy Schubert
165*ee3960cbSCy Schubertif test -n "$do_version"; then
166*ee3960cbSCy Schubert    echo "$title_version$version_string"
167*ee3960cbSCy Schubert    $all_exit
168*ee3960cbSCy Schubertfi
169*ee3960cbSCy Schubert
170*ee3960cbSCy Schubertif test -n "$do_vendor"; then
171*ee3960cbSCy Schubert    echo "$title_vendor$vendor_string"
172*ee3960cbSCy Schubert    $all_exit
173*ee3960cbSCy Schubertfi
174*ee3960cbSCy Schubert
175*ee3960cbSCy Schubertif test -n "$do_prefix"; then
176*ee3960cbSCy Schubert    echo "$title_prefix$prefix"
177*ee3960cbSCy Schubert    $all_exit
178*ee3960cbSCy Schubertfi
179*ee3960cbSCy Schubert
180*ee3960cbSCy Schubertif test -n "$do_exec_prefix"; then
181*ee3960cbSCy Schubert    echo "$title_exec_prefix$exec_prefix"
182*ee3960cbSCy Schubert    $all_exit
183*ee3960cbSCy Schubertfi
184*ee3960cbSCy Schubert
185*ee3960cbSCy Schubertif test -n "$do_defccname"; then
186*ee3960cbSCy Schubert    echo "$DEFCCNAME"
187*ee3960cbSCy Schubert    $all_exit
188*ee3960cbSCy Schubertfi
189*ee3960cbSCy Schubert
190*ee3960cbSCy Schubertif test -n "$do_defktname"; then
191*ee3960cbSCy Schubert    echo "$DEFKTNAME"
192*ee3960cbSCy Schubert    $all_exit
193*ee3960cbSCy Schubertfi
194*ee3960cbSCy Schubert
195*ee3960cbSCy Schubertif test -n "$do_defcktname"; then
196*ee3960cbSCy Schubert    echo "$DEFCKTNAME"
197*ee3960cbSCy Schubert    $all_exit
198*ee3960cbSCy Schubertfi
199*ee3960cbSCy Schubert
200*ee3960cbSCy Schubertif test -n "$do_cflags"; then
201*ee3960cbSCy Schubert    if test x"$includedir" != x"/usr/include" ; then
202*ee3960cbSCy Schubert        echo "-I${includedir}"
203*ee3960cbSCy Schubert    else
204*ee3960cbSCy Schubert        echo ''
205*ee3960cbSCy Schubert    fi
206*ee3960cbSCy Schubertfi
207*ee3960cbSCy Schubert
208*ee3960cbSCy Schubert
209*ee3960cbSCy Schubertif test -n "$do_libs"; then
210*ee3960cbSCy Schubert    # Assumes /usr/lib is the standard library directory everywhere...
211*ee3960cbSCy Schubert    if test "$libdir" = /usr/lib; then
212*ee3960cbSCy Schubert	libdirarg=
213*ee3960cbSCy Schubert    else
214*ee3960cbSCy Schubert	libdirarg="-L$libdir"
215*ee3960cbSCy Schubert    fi
216*ee3960cbSCy Schubert    # Ugly gross hack for our build tree
217*ee3960cbSCy Schubert    lib_flags=`echo $CC_LINK | sed -e 's/\$(CC)//' \
218*ee3960cbSCy Schubert	    -e 's/\$(PURE)//' \
219*ee3960cbSCy Schubert	    -e 's#\$(PROG_RPATH_FLAGS)#'"$PROG_RPATH_FLAGS"'#' \
220*ee3960cbSCy Schubert	    -e 's#\$(PROG_RPATH)#'$libdir'#' \
221*ee3960cbSCy Schubert	    -e 's#\$(PROG_LIBPATH)#'$libdirarg'#' \
222*ee3960cbSCy Schubert	    -e 's#\$(RPATH_FLAG)#'"$RPATH_FLAG"'#' \
223*ee3960cbSCy Schubert	    -e 's#\$(LDFLAGS)##' \
224*ee3960cbSCy Schubert	    -e 's#\$(PTHREAD_CFLAGS)#'"$PTHREAD_CFLAGS"'#' \
225*ee3960cbSCy Schubert	    -e 's#\$(CFLAGS)##'`
226*ee3960cbSCy Schubert
227*ee3960cbSCy Schubert    if test $library = 'kdb'; then
228*ee3960cbSCy Schubert	lib_flags="$lib_flags -lkdb5 $KDB5_DB_LIB"
229*ee3960cbSCy Schubert	library=krb5
230*ee3960cbSCy Schubert    fi
231*ee3960cbSCy Schubert
232*ee3960cbSCy Schubert    if test $library = 'kadm_server'; then
233*ee3960cbSCy Schubert	lib_flags="$lib_flags -lkadm5srv_mit -lkdb5 $KDB5_DB_LIB"
234*ee3960cbSCy Schubert	library=gssrpc
235*ee3960cbSCy Schubert    fi
236*ee3960cbSCy Schubert
237*ee3960cbSCy Schubert    if test $library = 'kadm_client'; then
238*ee3960cbSCy Schubert	lib_flags="$lib_flags -lkadm5clnt_mit"
239*ee3960cbSCy Schubert	library=gssrpc
240*ee3960cbSCy Schubert    fi
241*ee3960cbSCy Schubert
242*ee3960cbSCy Schubert    if test $library = 'gssrpc'; then
243*ee3960cbSCy Schubert	lib_flags="$lib_flags -lgssrpc"
244*ee3960cbSCy Schubert	library=gssapi
245*ee3960cbSCy Schubert    fi
246*ee3960cbSCy Schubert
247*ee3960cbSCy Schubert    if test $library = 'gssapi'; then
248*ee3960cbSCy Schubert	lib_flags="$lib_flags -lgssapi_krb5"
249*ee3960cbSCy Schubert	library=krb5
250*ee3960cbSCy Schubert    fi
251*ee3960cbSCy Schubert
252*ee3960cbSCy Schubert    if test $library = 'krb5'; then
253*ee3960cbSCy Schubert	lib_flags="$lib_flags -lkrb5 -lk5crypto -lcom_err"
254*ee3960cbSCy Schubert    fi
255*ee3960cbSCy Schubert
256*ee3960cbSCy Schubert    # If we ever support a flag to generate output suitable for static
257*ee3960cbSCy Schubert    # linking, we would output "-lkrb5support $GEN_LIB $LIBS $DL_LIB"
258*ee3960cbSCy Schubert    # here.
259*ee3960cbSCy Schubert
260*ee3960cbSCy Schubert    echo $lib_flags
261*ee3960cbSCy Schubertfi
262*ee3960cbSCy Schubert
263*ee3960cbSCy Schubertexit 0
264