source: trunk/base/aclocal.m4 @ 9841

Last change on this file since 9841 was 9841, checked in by rshaw, 16 years ago

Fixes problem with configure finding binaries from ports that were installed
prior to re-installation of port code. Configure now properly ignores the DP
$prefix/bin and $prefix/sbin paths to prevent potential bootstrapping problems
and base/ update problems.

Reviewed by: landonf

  • Property svn:eol-style set to native
File size: 10.6 KB
Line 
1builtin(include,tcl.m4)
2
3dnl This macro checks if the user specified a dports tree
4dnl explicitly. If not, search for it
5
6# OD_PATH_DPORTSDIR(DEFAULT_DPORTSDIR)
7#---------------------------------------
8 AC_DEFUN([OD_PATH_DPORTSDIR],[
9        dnl For ease of reading, run after gcc has been found/configured
10        AC_REQUIRE([AC_PROG_CC])
11
12        AC_ARG_WITH(dports-dir, [AC_HELP_STRING([--with-dports-dir=DIR], [Specify alternate dports directory])], [ dportsdir="$withval" ] )
13
14
15        AC_MSG_CHECKING([for dports tree])
16        if test "x$dportsdir" != "x" ; then
17          if test -d "$dportsdir" -a -e "$dportsdir/PortIndex" ; then
18                :
19          else
20                AC_MSG_ERROR([$dportsdir not a valid dports tree])
21          fi
22        else
23                dnl If the user didn't give a path, look for default
24                if test "x$1" != "x" ; then
25                  if test -d "$1" -a -e "$1/PortIndex" ; then
26                        dportsdir=$1
27                  fi
28                fi
29        fi
30
31        if test "x$dportsdir" != "x" ; then
32                AC_MSG_RESULT($dportsdir)
33                DPORTSDIR="$dportsdir"
34                AC_SUBST(DPORTSDIR)
35        else
36                AC_MSG_WARN([No dports tree found])
37        fi
38
39         ])
40
41
42# OD_PATH_PORTCONFIGDIR(PREFIX)
43#---------------------------------------
44AC_DEFUN([OD_PATH_PORTCONFIGDIR],[
45        dnl if the user actually specified --prefix, shift
46        dnl portconfigdir to $prefix/etc/ports
47        dnl     AC_REQUIRE([OD_PATH_DPORTSDIR])
48       
49        AC_MSG_CHECKING([for ports config directory])
50
51        if test "$1" != "NONE" ; then
52                dnl user gave --prefix
53                portconfigdir='${sysconfdir}/ports'
54        else
55           case $host_os in
56           darwin*)
57                portconfigdir='/private/etc/ports'
58                ;;
59           *)
60                portconfigdir='/etc/ports'
61                ;;
62           esac
63        fi
64
65
66        AC_MSG_RESULT([$portconfigdir])
67        PORTCONFIGDIR="$portconfigdir"
68        AC_SUBST(PORTCONFIGDIR)
69
70        ])
71
72# OD_CHECK_INSTALLUSER
73#-------------------------------------------------
74AC_DEFUN([OD_CHECK_INSTALLUSER],[
75        dnl if with user specifies --with-install-user,
76        dnl use it. otherwise default to platform defaults
77        AC_REQUIRE([OD_PATH_PORTCONFIGDIR])
78
79        AC_ARG_WITH(install-user, [AC_HELP_STRING([--with-install-user=USER], [Specify user ownership of installed files])], [ DSTUSR=$withval ] )
80       
81        AC_MSG_CHECKING([for install user])
82        if test "x$DSTUSR" = "x" ; then
83           DSTUSR=root
84        fi
85
86        AC_MSG_RESULT([$DSTUSR])
87        AC_SUBST(DSTUSR)
88])
89
90# OD_CHECK_INSTALLGROUP
91#-------------------------------------------------
92AC_DEFUN([OD_CHECK_INSTALLGROUP],[
93        dnl if with user specifies --with-install-group,
94        dnl use it. otherwise default to platform defaults
95        AC_REQUIRE([OD_CHECK_INSTALLUSER])
96
97        AC_ARG_WITH(install-group, [AC_HELP_STRING([--with-install-group=GROUP], [Specify group ownership of installed files])], [ DSTGRP=$withval ] )
98
99        AC_MSG_CHECKING([for install group])
100        if test "x$DSTGRP" = "x" ; then
101           
102           case $host_os in
103           darwin*)
104                DSTGRP="admin"
105                ;;
106           *)
107                DSTGRP="wheel"
108                ;;
109           esac
110        fi
111
112        AC_MSG_RESULT([$DSTGRP])
113        AC_SUBST(DSTGRP)
114])
115
116# OD_DIRECTORY_MODE
117#-------------------------------------------------
118AC_DEFUN([OD_DIRECTORY_MODE],[
119        dnl if with user specifies --with-directory-mode,
120        dnl use the specified permissions for ${prefix} directories
121        dnl otherwise use 0775
122        AC_REQUIRE([OD_PATH_PORTCONFIGDIR])
123
124        AC_ARG_WITH(directory-mode, [AC_HELP_STRING([--with-directory-mode=MODE], [Specify directory mode of installed directories])], [ DSTMODE=$withval ] )
125       
126        AC_MSG_CHECKING([what permissions to use for installation directories])
127        if test "x$DSTMODE" = "x" ; then
128           DSTMODE=0775
129        fi
130
131        AC_MSG_RESULT([$DSTMODE])
132        AC_SUBST(DSTMODE)
133])
134
135# OD_LIB_MD5
136#---------------------------------------
137# Check for an md5 implementation
138AC_DEFUN([OD_LIB_MD5],[
139
140        # Check for libmd, which is prefered
141        AC_CHECK_LIB([md], [MD5Update],[
142                AC_CHECK_HEADERS([md5.h], ,[
143                        case $host_os in
144                                darwin*)       
145                                        AC_MSG_NOTICE([Please install the BSD SDK package from the Xcode Developer Tools CD.])
146                                        ;;
147                                *)     
148                                        AC_MSG_NOTICE([Please install the libmd developer headers for your platform.])
149                                        ;;
150                        esac
151                        AC_MSG_ERROR([libmd was found, but md5.h is missing.])
152                ])
153                AC_DEFINE([HAVE_LIBMD], ,[Define if you have the `md' library (-lmd).])
154                MD5_LIBS="-lmd"]
155        )
156        if test "x$MD5_LIBS" = "x" ; then
157                # If libmd is not found, check for libcrypto from OpenSSL
158                AC_CHECK_LIB([crypto], [MD5_Update],[
159                        AC_CHECK_HEADERS([openssl/md5.h],,[
160                                case $host_os in
161                                        darwin*)       
162                                        AC_MSG_NOTICE([Please install the BSD SDK package from the Xcode Developer Tools CD.])
163                                                ;;
164                                        *)     
165                                        AC_MSG_NOTICE([Please install the libmd developer headers for your platform.])
166                                                ;;
167                                esac
168                                AC_MSG_ERROR([libcrypt was found, but header file openssl/md5.h is missing.])
169                        ])
170                        AC_DEFINE([HAVE_LIBCRYPTO],,[Define if you have the `crypto' library (-lcrypto).])
171                        MD5_LIBS="-lcrypto"
172                ], [
173                        AC_MSG_ERROR([Neither OpenSSL or libmd were found. A working md5 implementation is required.])
174                ])
175        fi
176        if test "x$MD5_LIBS" = "x"; then
177                AC_MSG_ERROR([Neither OpenSSL or libmd were found. A working md5 implementation is required.])
178        fi
179        AC_SUBST([MD5_LIBS])
180])
181
182dnl This macro checks for X11 presence. If the libraries are
183dnl present, so must the headers be. If nothing is present,
184dnl print a warning
185
186# OD_CHECK_X11
187# ---------------------
188AC_DEFUN([OD_CHECK_X11], [
189
190        AC_PATH_XTRA
191
192        # Check for libX11
193        AC_CHECK_LIB([X11], [XOpenDisplay],[
194                has_x_runtime=yes
195                ], [ has_x_runtime=no ], [-L/usr/X11R6/lib $X_LIBS])
196
197#       echo "------done---------"
198#       echo "x_includes=${x_includes}"
199#       echo "x_libraries=${x_libraries}"
200#       echo "no_x=${no_x}"
201#       echo "X_CFLAGS=${X_CFLAGS}"
202#       echo "X_LIBS=${X_LIBS}"
203#       echo "X_DISPLAY_MISSING=${X_DISPLAY_MISSING}"
204#       echo "has_x_runtime=${has_x_runtime}"
205#       echo "host_os=${host_os}"
206#       echo "------done---------"
207
208        state=
209
210        case "__${has_x_runtime}__${no_x}__" in
211                "__no__yes__")
212                # either the user said --without-x, or it was not found
213                # at all (runtime or headers)
214                        AC_MSG_WARN([X11 not available. You will not be able to use dports that use X11])
215                        state=0
216                        ;;
217                "__yes__yes__")
218                        state=1
219                        ;;
220                "__yes____")
221                        state=2
222                        ;;
223                *)
224                        state=3
225                        ;;
226        esac
227
228        case $host_os in
229                darwin*)       
230                        case $state in
231                                1)
232                                        cat <<EOF;
233Please install the X11 SDK packages from the
234Xcode Developer Tools CD
235EOF
236                                        AC_MSG_ERROR([Broken X11 install. No X11 headers])
237
238                                        ;;
239                                3)
240                                        cat <<EOF;
241Unknown configuration problem. Please install the X11 runtime
242and/or X11 SDK  packages from the Xcode Developer Tools CD
243EOF
244                                        AC_MSG_ERROR([Broken X11 install])
245                                        ;;
246                        esac
247                        ;;
248                *)     
249                        case $state in
250                                1)
251                                        cat <<EOF;
252Please install the X11 developer headers for your platform
253EOF
254                                        AC_MSG_ERROR([Broken X11 install. No X11 headers])
255
256                                        ;;
257                                3)
258                                        cat <<EOF;
259Unknown configuration problem. Please install the X11
260implementation for your platform
261EOF
262                                        AC_MSG_ERROR([Broken X11 install])
263                                        ;;
264                        esac
265                        ;;
266        esac
267
268])
269
270# OD_PROG_MTREE
271#---------------------------------------
272AC_DEFUN([OD_PROG_MTREE],[
273
274        AC_PATH_PROG([MTREE], [mtree], ,  [/usr/bin:/usr/sbin:/bin:/sbin])
275
276        if test "x$MTREE" = "x" ; then
277                AC_CONFIG_SUBDIRS([src/programs/mtree])
278                MTREE='$(TOPSRCDIR)/src/programs/mtree/mtree'
279#               MTREE='${prefix}/bin/mtree'
280                REPLACEMENT_PROGS="$REPLACEMENT_PROGS mtree"
281        fi
282
283        AC_SUBST(MTREE)
284])
285
286#------------------------------------------------------------------------
287# OD_TCL_PACKAGE_DIR --
288#
289#       Locate the correct directory for Tcl package installation
290#
291# Arguments:
292#       None.
293#
294# Requires:
295#       TCLVERSION must be set
296#       CYGPATH must be set
297#       TCLSH must be set
298#
299# Results:
300#
301#       Adds a --with-tclpackage switch to configure.
302#       Result is cached.
303#
304#       Substs the following vars:
305#               TCL_PACKAGE_DIR
306#------------------------------------------------------------------------
307
308AC_DEFUN(OD_TCL_PACKAGE_DIR, [
309    AC_MSG_CHECKING(for Tcl package directory)
310
311    AC_ARG_WITH(tclpackage, [  --with-tclpackage       Tcl package installation directory.], with_tclpackagedir=${withval})
312
313    if test x"${with_tclpackagedir}" != x ; then
314        ac_cv_c_tclpkgd=${with_tclpackagedir}
315    else
316        AC_CACHE_VAL(ac_cv_c_tclpkgd, [
317            # Use the value from --with-tclpackagedir, if it was given
318
319            if test x"${with_tclpackagedir}" != x ; then
320                ac_cv_c_tclpkgd=${with_tclpackagedir}
321            else
322                # On darwin we can do some intelligent guessing
323                case $host_os in
324                    darwin*)
325                        tcl_autopath=`echo 'puts \$auto_path' | $TCLSH`
326                        for path in $tcl_autopath; do
327                            if test "$path" = "/Library/Tcl"; then
328                                ac_cv_c_tclpkgd="$path"
329                                break
330                            fi
331                            if test "$path" = "/System/Library/Tcl"; then
332                                if test -d "$path"; then
333                                    ac_cv_c_tclpkgd="$path"
334                                    break
335                                fi
336                            fi
337                        done
338                    ;;
339                esac
340                if test x"${ac_cv_c_tclpkgd}" = x ; then
341                    # Fudge a path from the first entry in the auto_path
342                    tcl_pkgpath=`echo 'puts [[lindex \$auto_path 0]]' | $TCLSH`
343                    if test -d "$tcl_pkgpath"; then
344                        ac_cv_c_tclpkgd="$tcl_pkgpath"
345                    fi
346                    # If the first entry does not exist, do nothing
347                fi
348            fi
349        ])
350    fi
351
352    if test x"${ac_cv_c_tclpkgd}" = x ; then
353        AC_MSG_ERROR(Tcl package directory not found.  Please specify its location with --with-tclpackagedir)
354    else
355        AC_MSG_RESULT(${ac_cv_c_tclpkgd})
356    fi
357
358    # Convert to a native path and substitute into the output files.
359
360    PACKAGE_DIR_NATIVE=`${CYGPATH} ${ac_cv_c_tclpkgd}`
361
362    TCL_PACKAGE_DIR=${PACKAGE_DIR_NATIVE}
363
364    AC_SUBST(TCL_PACKAGE_DIR)
365])
366
367# OD_PROG_TCLSH
368#---------------------------------------
369AC_DEFUN([OD_PROG_TCLSH],[
370
371
372        case $host_os in
373                freebsd*)
374                        # FreeBSD installs a dummy tclsh (annoying)
375                        # Look for a real versioned tclsh first
376                        AC_PATH_PROG([TCLSH], [tclsh${TCL_VERSION} tclsh])
377                        ;;
378                *)
379                        # Otherwise, look for a non-versioned tclsh
380                        AC_PATH_PROG([TCLSH], [tclsh tclsh${TCL_VERSION}])
381                        ;;
382        esac
383        if test "x$TCLSH" = "x" ; then
384                AC_MSG_ERROR([Could not find tclsh])
385        fi
386
387        AC_SUBST(TCLSH)
388])
389
390
391dnl This macro tests if the compiler supports GCC's
392dnl __attribute__ syntax for unused variables/parameters
393AC_DEFUN([OD_COMPILER_ATTRIBUTE_UNUSED], [
394        AC_MSG_CHECKING([how to mark unused variables])
395        AC_COMPILE_IFELSE(
396                [AC_LANG_SOURCE([[int a __attribute__ ((unused));]])],
397                [AC_DEFINE(UNUSED, [__attribute__((unused))], [Attribute to mark unused variables])],
398                [AC_DEFINE(UNUSED, [])])
399
400        AC_MSG_RESULT([])
401       
402])
403
404dnl This macro ensures DP installation prefix bin/sbin paths are NOT in PATH
405dnl for configure to prevent potential problems when base/ code is updated
406dnl and ports are installed that would match needed items.
407AC_DEFUN([OD_PATH_SCAN],[
408        oldprefix=$prefix
409        if test "x$prefix" = "xNONE" ; then
410                prefix=$ac_default_prefix
411        fi
412        oldPATH=$PATH
413        newPATH=
414        as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
415        for as_dir in $oldPATH
416        do
417                IFS=$as_save_IFS
418                if test "x$as_dir" != "x$prefix/bin" &&
419                        test "x$as_dir" != "x$prefix/sbin"; then
420                        if test -z "$newPATH"; then
421                                newPATH=$as_dir
422                        else
423                                newPATH=$newPATH$PATH_SEPARATOR$as_dir
424                        fi
425                fi
426        done
427        PATH=$newPATH; export PATH
428        prefix=$oldprefix
429])
430
Note: See TracBrowser for help on using the repository browser.