source: trunk/base/aclocal.m4 @ 118736

Last change on this file since 118736 was 118736, checked in by jeremyhu@…, 3 years ago

Fix configure when the BZIP2 envvar is set

configure: === extracting vendor/tclx8.4.1.tar.bz2
bzip2: Can't guess original name for /usr/bin/bzip2 -- using /usr/bin/bzip2.out
bzip2: Input file /usr/bin/bzip2 has 2 other links.
configure: error: tarball vendor/tclx8.4.1.tar.bz2 did not extract to vendor/tclx8.4
make: * [config.status] Error 1

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 38.7 KB
Line 
1dnl $Id: aclocal.m4 118736 2014-04-10 01:19:39Z jeremyhu@macports.org $
2builtin(include,m4/tcl.m4)
3builtin(include,m4/pthread.m4)
4builtin(include,m4/foundation.m4)
5
6dnl Search for a variable in a list. Run ACTION-IF-FOUND if it is in the list,
7dnl ACTION-IF-NOT-FOUND otherwise.
8dnl
9dnl Parameters:
10dnl  - The name of the list.
11dnl  - The name of the variable that should be searched in the list.
12dnl  - An optional action to be run if found
13dnl  - An optional action to be run if not found
14dnl
15dnl _MP_LIST_CONTAINS_QUOTED([listname], [varname], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
16AC_DEFUN([_MP_LIST_CONTAINS], [dnl
17        mp_list_contains_present=
18        eval "mp_list_contains_list=\"$$1\""
19        for mp_list_contains_entry in $mp_list_contains_list; do
20                test -z "$mp_list_contains_entry" && continue
21                if test "x$$2" = "x$mp_list_contains_entry"; then
22                        mp_list_contains_present=1
23                        break
24                fi
25        done
26        if test "x$mp_list_contains_present" = "x"; then
27                m4_ifvaln([$3], [$3], [:])dnl
28                m4_ifvaln([$4], [else $4])dnl
29        fi
30])
31
32dnl Quote a variable and prepend it to a list.
33dnl
34dnl Parameters:
35dnl  - The name of the list.
36dnl  - The name of the variable that should be quoted and prepended to the
37dnl    list.
38AC_DEFUN([_MP_LIST_PREPEND_QUOTED], [dnl
39        _MP_QUOTE([$2])
40        _MP_VAR_PREPEND([$1], ["$$2 "])
41])
42
43
44dnl Quote a variable and append it to a list.
45dnl
46dnl Parameters:
47dnl  - The name of the list.
48dnl  - The name of the variable that should be quoted and appended to the list.
49AC_DEFUN([_MP_LIST_APPEND_QUOTED], [dnl
50        _MP_QUOTE([$2])
51        AS_VAR_APPEND([$1], [" $$2"])
52])
53
54dnl Prepend the shell expansion of a value to a variable.
55dnl
56dnl Parameters:
57dnl  - The name of the variable to which the second argument should be
58dnl    prepended.
59dnl  - The value that should be expanded using the shell expansion rules and
60dnl    prepended to the variable given in the first argument.
61AC_DEFUN([_MP_VAR_PREPEND], [dnl
62        AC_REQUIRE([_MP_VAR_PREPEND_PREPARE])dnl
63        mp_fn_var_prepend $1 $2
64])
65
66dnl Define the function required for _MP_VAR_PREPEND
67AC_DEFUN([_MP_VAR_PREPEND_PREPARE], [dnl
68        mp_fn_var_prepend() {
69                eval "$[]1=\"$[]2\$$[]1\""
70        }
71])
72
73dnl Quote a variable in single quotes (escaping any existing single quotes) and
74dnl store it in itself.
75dnl
76dnl Parameters:
77dnl  - The name of the variable that should be quoted using single quotes.
78AC_DEFUN([_MP_QUOTE], [dnl
79        case $$1 in
80                *\'*)
81                        $1=$(AS_ECHO(["$$1"]) | sed "s/'/'\\\\\\\\''/g")
82                ;;
83        esac
84        $1="'$$1'"dnl
85])
86
87
88dnl Extract the key part of a key-value pair given as string in the form
89dnl  --key=value or
90dnl   -key=value
91dnl
92dnl Parameters:
93dnl  - The variable name to assign to
94dnl  - The (quoted, if necessary) key-value pair
95AC_DEFUN([_MP_EXTRACT_KEY], [dnl
96        $1=$(AS_ECHO([$2]) | sed -E 's/^--?([[^=]]+)=.*$/\1/')dnl
97])
98
99dnl Configure a project contained in a .tar.gz, .tgz or .tar.bz2 tarball,
100dnl extracting it previously, if necessary. Different from AC_CONFIG_SUBDIRS
101dnl (on which this macro is based), you can pass parameters to the
102dnl sub-configure script.
103dnl
104dnl Parameters:
105dnl  - The relative path to the tarball
106dnl  - The relative path to the directory that will be extracted from the
107dnl    tarball and contains the configure script to be run (can be a sub directory of the extracted directory)
108dnl  - Parameters to pass to the configure script
109dnl
110dnl MP_CONFIG_TARBALL([path-to-tarball], [dir-extracted-from-tarball-with-configure], [configure-parameters])
111AC_DEFUN([MP_CONFIG_TARBALL], [
112        AC_PATH_PROG(GZIP, [gzip], [])
113        AC_PATH_PROG(BZIP2, [bzip2], [])
114
115        mp_tarball="$1"
116        ac_dir=$2
117
118        mp_popdir=$(pwd)
119        if ! test -d "$ac_dir"; then
120                mp_tarball_vendordir="$(dirname "$mp_tarball")"
121                AS_MKDIR_P(["$mp_tarball_vendordir"])
122                AC_MSG_NOTICE([=== extracting $mp_tarball])
123                mp_tarball_extract_cmd=
124                case "$mp_tarball" in
125                        *.tar.gz | *.tgz)
126                                if test "x$GZIP" = "x"; then
127                                        AC_MSG_ERROR([gzip not found])
128                                fi
129                                mp_tarball_extract_cmd="$GZIP"
130                                ;;
131                        *.tar.bz2 | *.tbz2)
132                                if test "x$BZIP2" = "x"; then
133                                        AC_MSG_ERROR([bzip2 not found])
134                                fi
135                                mp_tarball_extract_cmd="$BZIP2"
136                                ;;
137                        *)
138                                AC_MSG_ERROR([Don't know how to extract tarball $mp_tarball])
139                                ;;
140                esac
141                (cd "$mp_tarball_vendordir"; "$mp_tarball_extract_cmd" -dc "$ac_abs_confdir/$mp_tarball" | tar xf - || AC_MSG_ERROR([failed to extract $mp_tarball]))
142        fi
143        if ! test -d "$ac_dir"; then
144                AC_MSG_ERROR([tarball $mp_tarball did not extract to $ac_dir])
145        fi
146
147        AS_MKDIR_P(["$ac_dir"])
148        _AC_SRCDIRS(["$ac_dir"])
149        cd "$ac_dir"
150
151        if test "$no_recursion" != yes || test ! -f "$ac_srcdir/config.status"; then
152                AC_MSG_NOTICE([=== configuring in $ac_dir ($mp_popdir/$ac_dir)])
153                if test -f "$ac_srcdir/configure"; then
154                        mp_sub_configure_args=
155                        mp_sub_configure_keys=
156                        # Compile a list of keys that have been given to the MP_CONFIG_TARBALL
157                        # macro; we want to skip copying those parameters from the original
158                        # configure invocation.
159                        for mp_arg in $3; do
160                                case $mp_arg in
161                                        --*=* | -*=*)
162                                                _MP_EXTRACT_KEY([mp_arg_key], ["$mp_arg"])
163                                                _MP_LIST_APPEND_QUOTED([mp_sub_configure_keys], [mp_arg_key])
164                                        ;;
165                                esac
166                                _MP_LIST_APPEND_QUOTED([mp_sub_configure_args], [mp_arg])
167                        done
168                        # Walk the list of arguments given to the original configure script;
169                        # filter out a few common ones we likely would not want to pass along,
170                        # add --disable-option-checking and filter those already given as
171                        # argument to MP_CONFIG_TARBALL.
172                        # Most of this code is adapted from _AC_OUTPUT_SUBDIRS in
173                        # $prefix/share/autoconf/autoconf/status.m4.
174                        mp_prev=
175                        eval "set x $ac_configure_args"
176                        shift
177                        for mp_arg; do
178                                if test -n "$mp_prev"; then
179                                        mp_prev=
180                                        continue
181                                fi
182                                case $mp_arg in
183                                          -cache-file \
184                                        | --cache-file \
185                                        | --cache-fil \
186                                        | --cache-fi \
187                                        | --cache-f \
188                                        | --cache- \
189                                        | --cache \
190                                        | --cach \
191                                        | --cac \
192                                        | --ca \
193                                        | --c)
194                                                mp_prev=cache_file
195                                        ;;
196                                          -cache-file=* \
197                                        | --cache-file=* \
198                                        | --cache-fil=* \
199                                        | --cache-fi=* \
200                                        | --cache-f=* \
201                                        | --cache-=* \
202                                        | --cache=* \
203                                        | --cach=* \
204                                        | --cac=* \
205                                        | --ca=* \
206                                        | --c=*)
207                                                # ignore --cache-file
208                                        ;;
209                                          --config-cache \
210                                        | -C)
211                                                # ignore -C
212                                        ;;
213                                          -srcdir \
214                                        | --srcdir \
215                                        | -srcdi \
216                                        | -srcd \
217                                        | -src \
218                                        | -sr)
219                                                mp_prev=srcdir
220                                        ;;
221                                          -srcdir=* \
222                                        | --srcdir=* \
223                                        | --srcdi=* \
224                                        | --srcd=* \
225                                        | --src=* \
226                                        | --sr=*)
227                                                # ignore --srcdir
228                                        ;;
229                                          -prefix \
230                                        | --prefix \
231                                        | --prefi \
232                                        | --pref \
233                                        | --pre \
234                                        | --pr \
235                                        | --p)
236                                                mp_prev=prefix
237                                        ;;
238                                          -prefix=* \
239                                        | --prefix=* \
240                                        | --prefi=* \
241                                        | --pref=* \
242                                        | --pre=* \
243                                        | --pr=* \
244                                        | --p=*)
245                                                # ignore --prefix
246                                        ;;
247                                        --disable-option-checking)
248                                                # ignore --disable-option-checking
249                                        ;;
250                                        --*=* | -*=*)
251                                                _MP_EXTRACT_KEY([mp_arg_key], ["$mp_arg"])
252                                                _MP_LIST_CONTAINS([mp_sub_configure_keys], [mp_arg_key], [], [
253                                                        _MP_LIST_APPEND_QUOTED([mp_sub_configure_args], [mp_arg])
254                                                ])
255                                        ;;
256                                        *)
257                                                # always pass positional arguments
258                                                _MP_LIST_APPEND_QUOTED([mp_sub_configure_args], [mp_arg])
259                                        ;;
260                                esac
261                        done
262
263                        # Now prepend some arguments that should always be present unless
264                        # overriden, such as --prefix, --silent, --disable-option-checking,
265                        # --cache-file, --srcdir
266                        # Pass --prefix unless already given
267                        mp_arg_key=prefix
268                        _MP_LIST_CONTAINS([mp_sub_configure_args], [mp_arg_key], [], [
269                                mp_arg="--prefix=$prefix"
270                                _MP_LIST_PREPEND_QUOTED([mp_sub_configure_args], [mp_arg])
271                        ])
272
273                        # Pass --silent
274                        if test "$silent" = yes; then
275                                mp_arg="--silent"
276                                _MP_LIST_PREPEND_QUOTED([mp_sub_configure_args], [mp_arg])
277                        fi
278
279                        # Always prepend --disable-option-checking to silence warnings, since
280                        # different subdirs can have different --enable and --with options.
281                        mp_arg="--disable-option-checking"
282                        _MP_LIST_PREPEND_QUOTED([mp_sub_configure_args], [mp_arg])
283
284                        # Make the cache file name correct relative to the subdirectory.
285                        case $cache_file in
286                                [[\\/]]* | ?:[[\\/]]* )
287                                        mp_sub_cache_file=$cache_file
288                                ;;
289                                *) # Relative name.
290                                        mp_sub_cache_file=$ac_top_build_prefix$cache_file
291                                ;;
292                        esac
293                        mp_arg="--cache-file=$mp_sub_cache_file"
294                        _MP_LIST_PREPEND_QUOTED([mp_sub_configure_args], [mp_arg])
295
296                        mp_arg="--srcdir=$ac_srcdir"
297                        _MP_LIST_APPEND_QUOTED([mp_sub_configure_args], [mp_arg])
298
299                        AC_MSG_NOTICE([running $SHELL $ac_srcdir/configure $mp_sub_configure_args in $ac_dir])
300                        eval "\$SHELL \$ac_srcdir/configure $mp_sub_configure_args" || AC_MSG_ERROR([configure failed for $ac_dir])
301                else
302                        AC_MSG_ERROR([no configure script found in $ac_dir])
303                fi
304                AC_MSG_NOTICE([=== finished configuring in $ac_dir ($mp_popdir/$ac_dir)])
305        fi
306        cd "$mp_popdir"
307])
308
309
310#------------------------------------------------------------------------
311# MP_CHECK_FRAMEWORK_COREFOUNDATION --
312#
313#       Check if CoreFoundation framework is available, define HAVE_FRAMEWORK_COREFOUNDATION if so.
314#
315# Arguments:
316#       None.
317#
318# Requires:
319#       None.
320#
321# Depends:
322#               AC_LANG_PROGRAM
323#
324# Results:
325#       Result is cached.
326#
327#       If CoreFoundation framework is available, defines the following variables:
328#               HAVE_FRAMEWORK_COREFOUNDATION
329#
330#------------------------------------------------------------------------
331AC_DEFUN(MP_CHECK_FRAMEWORK_COREFOUNDATION, [
332        FRAMEWORK_LIBS="-framework CoreFoundation"
333
334        AC_MSG_CHECKING([for CoreFoundation framework])
335
336        AC_CACHE_VAL(mp_cv_have_framework_corefoundation, [
337                ac_save_LIBS="$LIBS"
338                LIBS="$FRAMEWORK_LIBS $LIBS"
339               
340                AC_LINK_IFELSE([
341                        AC_LANG_PROGRAM([
342                                        #include <CoreFoundation/CoreFoundation.h>
343                                ], [
344                                        CFURLRef url = CFURLCreateWithFileSystemPath(NULL, CFSTR("/testing"), kCFURLPOSIXPathStyle, 1);
345                                        CFArrayRef bundles = CFBundleCreateBundlesFromDirectory(NULL, url, CFSTR("pkg"));
346                        ])
347                        ], [
348                                mp_cv_have_framework_corefoundation="yes"
349                        ], [
350                                mp_cv_have_framework_corefoundation="no"
351                        ]
352                )
353
354                LIBS="$ac_save_LIBS"
355        ])
356
357        AC_MSG_RESULT(${mp_cv_have_framework_corefoundation})
358
359        if test x"${mp_cv_have_framework_corefoundation}" = "xyes"; then
360                AC_DEFINE([HAVE_FRAMEWORK_COREFOUNDATION], [], [Define if CoreFoundation framework is available])
361        fi
362
363        AC_SUBST(HAVE_FRAMEWORK_COREFOUNDATION)
364])
365
366
367#------------------------------------------------------------------------
368# MP_CHECK_FUNCTION_CFNOTIFICATIONCENTERGETDARWINNOTIFYCENTER --
369#
370#       Check if if the routine CFNOTIFICATIONCENTERGETDARWINNOTIFYCENTER
371#       is available in CoreFoundation.
372#
373# Arguments:
374#       None.
375#
376# Requires:
377#       None.
378#
379# Depends:
380#               AC_LANG_PROGRAM
381#
382# Results:
383#       Result is cached.
384#
385#       If function CFNotificationCenterGetDarwinNotifyCenter is in the CoreFoundation framework, defines the following variables:
386#               HAVE_FUNCTION_CFNOTIFICATIONCENTERGETDARWINNOTIFYCENTER
387#
388#------------------------------------------------------------------------
389AC_DEFUN(MP_CHECK_FUNCTION_CFNOTIFICATIONCENTERGETDARWINNOTIFYCENTER, [
390        FRAMEWORK_LIBS="-framework CoreFoundation"
391
392        AC_MSG_CHECKING([for CFNotificationCenterGetDarwinNotifyCenter])
393
394        AC_CACHE_VAL(mp_cv_have_function_cfnotificationcentergetdarwinnotifycenter, [
395                ac_save_LIBS="$LIBS"
396                LIBS="$FRAMEWORK_LIBS $LIBS"
397               
398                AC_LINK_IFELSE([
399                        AC_LANG_PROGRAM([
400                                        #include <CoreFoundation/CoreFoundation.h>
401                                ], [
402                                        CFNotificationCenterRef ref = CFNotificationCenterGetDarwinNotifyCenter();
403                        ])
404                        ], [
405                                mp_cv_have_function_cfnotificationcentergetdarwinnotifycenter="yes"
406                        ], [
407                                mp_cv_have_function_cfnotificationcentergetdarwinnotifycenter="no"
408                        ]
409                )
410
411                LIBS="$ac_save_LIBS"
412        ])
413
414        AC_MSG_RESULT(${mp_cv_have_function_cfnotificationcentergetdarwinnotifycenter})
415
416        if test x"${mp_cv_have_function_cfnotificationcentergetdarwinnotifycenter}" = "xyes"; then
417                AC_DEFINE([HAVE_FUNCTION_CFNOTIFICATIONCENTERGETDARWINNOTIFYCENTER], [], [Define if function CFNotificationCenterGetDarwinNotifyCenter in CoreFoundation framework])
418        fi
419
420        AC_SUBST(HAVE_FUNCTION_CFNOTIFICATIONCENTERGETDARWINNOTIFYCENTER)
421])
422
423
424#------------------------------------------------------------------------
425# MP_CHECK_FRAMEWORK_SYSTEMCONFIGURATION --
426#
427#       Check if SystemConfiguration framework is available, define HAVE_FRAMEWORK_SYSTEMCONFIGURATION if so.
428#
429# Arguments:
430#       None.
431#
432# Requires:
433#       None.
434#
435# Depends:
436#               AC_LANG_PROGRAM
437#
438# Results:
439#       Result is cached.
440#
441#       If SystemConfiguration framework is available, defines the following variables:
442#               HAVE_FRAMEWORK_SYSTEMCONFIGURATION
443#
444#------------------------------------------------------------------------
445AC_DEFUN(MP_CHECK_FRAMEWORK_SYSTEMCONFIGURATION, [
446        FRAMEWORK_LIBS="-framework SystemConfiguration"
447
448        AC_MSG_CHECKING([for SystemConfiguration framework])
449
450        AC_CACHE_VAL(mp_cv_have_framework_systemconfiguration, [
451                ac_save_LIBS="$LIBS"
452                LIBS="$FRAMEWORK_LIBS $LIBS"
453               
454                AC_LINK_IFELSE([
455                        AC_LANG_PROGRAM([
456                                        #include <SystemConfiguration/SystemConfiguration.h>
457                                ], [
458                                        int err = SCError();
459                                        SCDynamicStoreRef dsRef = SCDynamicStoreCreate(NULL, NULL, NULL, NULL);
460                        ])
461                        ], [
462                                mp_cv_have_framework_systemconfiguration="yes"
463                        ], [
464                                mp_cv_have_framework_systemconfiguration="no"
465                        ]
466                )
467
468                LIBS="$ac_save_LIBS"
469        ])
470
471        AC_MSG_RESULT(${mp_cv_have_framework_systemconfiguration})
472
473        if test x"${mp_cv_have_framework_systemconfiguration}" = "xyes"; then
474                AC_DEFINE([HAVE_FRAMEWORK_SYSTEMCONFIGURATION], [], [Define if SystemConfiguration framework is available])
475        fi
476
477        AC_SUBST(HAVE_FRAMEWORK_SYSTEMCONFIGURATION)
478])
479
480
481#------------------------------------------------------------------------
482# MP_CHECK_FRAMEWORK_IOKIT --
483#
484#       Check if IOKit framework is available, define HAVE_FRAMEWORK_IOKIT if so.
485#
486# Arguments:
487#       None.
488#
489# Requires:
490#       None.
491#
492# Depends:
493#               AC_LANG_PROGRAM
494#
495# Results:
496#       Result is cached.
497#
498#       If IOKit framework is available, defines the following variables:
499#               HAVE_FRAMEWORK_IOKIT
500#
501#------------------------------------------------------------------------
502AC_DEFUN(MP_CHECK_FRAMEWORK_IOKIT, [
503        FRAMEWORK_LIBS="-framework IOKit"
504
505        AC_MSG_CHECKING([for IOKit framework])
506
507        AC_CACHE_VAL(mp_cv_have_framework_iokit, [
508                ac_save_LIBS="$LIBS"
509                LIBS="$FRAMEWORK_LIBS $LIBS"
510               
511                AC_LINK_IFELSE([
512                        AC_LANG_PROGRAM([
513                                        #include <IOKit/IOKitLib.h>
514                                ], [
515                                        IOCreateReceivePort(0, NULL);
516                                        IORegisterForSystemPower(0, NULL, NULL, NULL);
517                        ])
518                        ], [
519                                mp_cv_have_framework_iokit="yes"
520                        ], [
521                                mp_cv_have_framework_iokit="no"
522                        ]
523                )
524
525                LIBS="$ac_save_LIBS"
526        ])
527
528        AC_MSG_RESULT(${mp_cv_have_framework_iokit})
529
530        if test x"${mp_cv_have_framework_iokit}" = "xyes"; then
531                AC_DEFINE([HAVE_FRAMEWORK_IOKIT], [], [Define if IOKit framework is available])
532        fi
533
534        AC_SUBST(HAVE_FRAMEWORK_IOKIT)
535])
536
537
538dnl This macro checks if the user specified a ports tree
539dnl explicitly. If not, search for it
540
541# MP_PATH_PORTSDIR(DEFAULT_PORTSDIR)
542#---------------------------------------
543 AC_DEFUN([MP_PATH_PORTSDIR],[
544        dnl For ease of reading, run after gcc has been found/configured
545        AC_REQUIRE([AC_PROG_CC])
546
547        AC_ARG_WITH(ports-dir, [AS_HELP_STRING([--with-ports-dir=DIR],[Specify alternate ports directory])], [ portsdir="$withval" ] )
548
549
550        AC_MSG_CHECKING([for ports tree])
551        if test "x$portsdir" != "x" ; then
552          if test -d "$portsdir" -a -e "$portsdir/PortIndex" ; then
553                :
554          else
555                AC_MSG_ERROR([$portsdir not a valid ports tree])
556          fi
557        else
558                dnl If the user didn't give a path, look for default
559                if test "x$1" != "x" ; then
560                  if test -d "$1" -a -e "$1/PortIndex" ; then
561                        portsdir=$1
562                  fi
563                fi
564        fi
565
566        if test "x$portsdir" != "x" ; then
567                AC_MSG_RESULT($portsdir)
568                PORTSDIR="$portsdir"
569                AC_SUBST(PORTSDIR)
570        else
571                AC_MSG_WARN([No ports tree found])
572        fi
573
574         ])
575
576
577# MP_PATH_MPCONFIGDIR
578#---------------------------------------
579AC_DEFUN([MP_PATH_MPCONFIGDIR],[
580        dnl if the user actually specified --prefix, shift
581        dnl mpconfigdir to $prefix/etc/macports
582        dnl     AC_REQUIRE([MP_PATH_PORTSDIR])
583       
584        AC_MSG_CHECKING([for MacPorts config directory])
585
586        mpconfigdir='${sysconfdir}/macports'
587
588        AC_MSG_RESULT([$mpconfigdir])
589        MPCONFIGDIR="$mpconfigdir"
590        AC_SUBST(MPCONFIGDIR)
591
592        ])
593
594# MP_CHECK_OLDLAYOUT
595#---------------------------------------
596AC_DEFUN([MP_CHECK_OLDLAYOUT],[
597        dnl Bail if there is an existing install of DP/MP older than 1.5
598
599        AC_MSG_CHECKING([that any existing MacPorts install can be upgraded])
600
601        eval dpversionfile="${sysconfdir}/ports/dp_version"
602        if test -f "$dpversionfile"; then
603                AC_MSG_ERROR([Existing MacPorts or DarwinPorts install is too old to be upgraded. Install MacPorts 1.7.1 first.])
604        else
605                AC_MSG_RESULT([yes])
606        fi
607
608        ])
609
610# MP_CHECK_NOROOTPRIVILEGES
611#-------------------------------------------------
612AC_DEFUN([MP_CHECK_NOROOTPRIVILEGES],[
613        dnl if with user specifies --with-no-root-privileges,
614        dnl use current user and group.
615        dnl use ~/Library/Tcl as Tcl package directory
616        AC_REQUIRE([MP_PATH_MPCONFIGDIR])
617
618        AC_ARG_WITH(no-root-privileges, [AS_HELP_STRING([--with-no-root-privileges],[Specify that MacPorts should be installed in your home directory])], [ROOTPRIVS=$withval] )
619
620        if test "${ROOTPRIVS+set}" = set; then
621                # Set install-user to current user
622                AC_MSG_CHECKING([for install user])
623                DSTUSR=`id -un`
624                AC_MSG_RESULT([$DSTUSR])
625                AC_SUBST(DSTUSR)
626
627                # Set install-group to current user
628                AC_MSG_CHECKING([for install group])
629                DSTGRP=`id -gn`
630                AC_MSG_RESULT([$DSTGRP])
631                AC_SUBST(DSTGRP)
632
633                # Set run-user to current user
634                AC_MSG_CHECKING([for macports user])
635                RUNUSR=`id -un`
636                AC_MSG_RESULT([$RUNUSR])
637                AC_SUBST(RUNUSR)
638        fi
639
640])
641
642# MP_CHECK_RUNUSER
643#-------------------------------------------------
644AC_DEFUN([MP_CHECK_RUNUSER],[
645        dnl if with user specifies --with-macports-user,
646        dnl use it. otherwise default to platform defaults
647        AC_REQUIRE([MP_PATH_MPCONFIGDIR])
648
649        AC_ARG_WITH(macports-user, [AS_HELP_STRING([--with-macports-user=USER],[Specify user to drop privileges to, if possible, during compiles etc.])], [ RUNUSR=$withval ] )
650       
651        AC_MSG_CHECKING([for macports user])
652        if test "x$RUNUSR" = "x" ; then
653                RUNUSR=macports
654        fi
655
656        AC_MSG_RESULT([$RUNUSR])
657        AC_SUBST(RUNUSR)
658])
659
660
661# MP_SHARED_DIRECTORY
662#-------------------------------------------------
663AC_DEFUN([MP_SHARED_DIRECTORY],[
664        dnl if with user specifies --with-shared-directory,
665        dnl use 0775 permissions for ${prefix} directories
666        AC_REQUIRE([MP_PATH_MPCONFIGDIR])
667
668        AC_ARG_WITH(shared-directory, [AS_HELP_STRING([--with-shared-directory],[Use 0775 permissions for installed directories])], [ SHAREDIR=$withval ] )
669
670        if test "${SHAREDIR+set}" = set; then   
671                AC_MSG_CHECKING([whether to share the install directory with all members of the install group])
672                DSTMODE=0775
673
674                AC_MSG_RESULT([$DSTMODE])
675                AC_SUBST(DSTMODE)
676        fi
677])
678
679# MP_CHECK_INSTALLUSER
680#-------------------------------------------------
681AC_DEFUN([MP_CHECK_INSTALLUSER],[
682        dnl if with user specifies --with-install-user,
683        dnl use it. otherwise default to platform defaults
684        AC_REQUIRE([MP_PATH_MPCONFIGDIR])
685
686        AC_ARG_WITH(install-user, [AS_HELP_STRING([--with-install-user=USER],[Specify user ownership of installed files])], [ DSTUSR=$withval ] )
687       
688        AC_MSG_CHECKING([for install user])
689        if test "x$DSTUSR" = "x" ; then
690                DSTUSR=root
691        fi
692
693        AC_MSG_RESULT([$DSTUSR])
694        AC_SUBST(DSTUSR)
695])
696
697# MP_CHECK_INSTALLGROUP
698#-------------------------------------------------
699AC_DEFUN([MP_CHECK_INSTALLGROUP],[
700        dnl if with user specifies --with-install-group,
701        dnl use it. otherwise default to platform defaults
702        AC_REQUIRE([MP_CHECK_INSTALLUSER])
703
704        AC_ARG_WITH(install-group, [AS_HELP_STRING([--with-install-group=GROUP],[Specify group ownership of installed files])], [ DSTGRP=$withval ] )
705
706        AC_MSG_CHECKING([for install group])
707        if test "x$DSTGRP" = "x" ; then
708                case $host_os in
709                        darwin*)
710                                DSTGRP="admin"
711                        ;;
712                        freebsd*)
713                                DSTGRP="wheel"
714                        ;;
715                        linux*)
716                                DSTGRP="root"
717                        ;;
718                        *)
719                                DSTGRP="wheel"
720                        ;;
721                esac
722        fi
723
724        AC_MSG_RESULT([$DSTGRP])
725        AC_SUBST(DSTGRP)
726])
727
728# MP_DIRECTORY_MODE
729#-------------------------------------------------
730AC_DEFUN([MP_DIRECTORY_MODE],[
731        dnl if with user specifies --with-directory-mode,
732        dnl use the specified permissions for ${prefix} directories
733        dnl otherwise use 0755
734        AC_REQUIRE([MP_PATH_MPCONFIGDIR])
735
736        AC_ARG_WITH(directory-mode, [AS_HELP_STRING([--with-directory-mode=MODE],[Specify directory mode of installed directories])], [ DSTMODE=$withval ] )
737       
738        AC_MSG_CHECKING([what permissions to use for installation directories])
739        if test "x$DSTMODE" = "x" ; then
740                DSTMODE=0755
741        fi
742
743        AC_MSG_RESULT([$DSTMODE])
744        AC_SUBST(DSTMODE)
745])
746
747# MP_PATH_APPLICATIONS
748#---------------------------------------
749AC_DEFUN([MP_PATH_APPLICATIONS],[
750        AC_REQUIRE([MP_CHECK_INSTALLUSER])
751
752        AC_ARG_WITH(applications-dir,[AS_HELP_STRING([--with-applications-dir],[Applications installation directory.])], MPAPPLICATIONSDIR=${withval})
753
754        oldprefix=$prefix
755        if test "x$prefix" = "xNONE" ; then
756                prefix=$ac_default_prefix
757        fi
758        AC_MSG_CHECKING([for Applications installation directory])
759
760        if test "x$MPAPPLICATIONSDIR" = "x" ; then
761                if test "$DSTUSR" = "root" ; then
762                        MPAPPLICATIONSDIR="/Applications/MacPorts"
763                else
764                        MPAPPLICATIONSDIR="$(eval echo ~$DSTUSR)/Applications/MacPorts"
765                fi
766        fi
767
768        AC_MSG_RESULT([$MPAPPLICATIONSDIR])
769        AC_SUBST(MPAPPLICATIONSDIR)
770        prefix=$oldprefix
771])
772
773# MP_PATH_FRAMEWORKS
774#---------------------------------------
775AC_DEFUN([MP_PATH_FRAMEWORKS],[
776        AC_REQUIRE([MP_CHECK_INSTALLUSER])
777
778        AC_ARG_WITH(frameworks-dir,[AS_HELP_STRING([--with-frameworks-dir],[Frameworks installation directory.])], MPFRAMEWORKSDIR=${withval})
779
780        oldprefix=$prefix
781        if test "x$prefix" = "xNONE" ; then
782                prefix=$ac_default_prefix
783        fi
784        AC_MSG_CHECKING([for Frameworks installation directory])
785
786        if test "x$MPFRAMEWORKSDIR" = "x" ; then
787                MPFRAMEWORKSDIR="${prefix}/Library/Frameworks"
788        fi
789
790        AC_MSG_RESULT([$MPFRAMEWORKSDIR])
791        AC_SUBST(MPFRAMEWORKSDIR)
792        prefix=$oldprefix
793])
794
795# MP_UNIVERSAL_OPTIONS
796#---------------------------------------
797AC_DEFUN([MP_UNIVERSAL_OPTIONS],[
798        AC_ARG_WITH(universal-archs,[AS_HELP_STRING([--with-universal-archs="CPU"],[Universal CPU architectures (space separated)])], UNIVERSAL_ARCHS=${withval})
799
800        if test "x$UNIVERSAL_ARCHS" = "x"; then
801                case "$MACOSX_VERSION" in
802                        10.1[[0-9]]*)
803                                UNIVERSAL_ARCHS="x86_64 i386"
804                        ;;
805                        10.[[0-5]]*)
806                                UNIVERSAL_ARCHS="i386 ppc"
807                        ;;
808                        *)
809                                UNIVERSAL_ARCHS="x86_64 i386"
810                        ;;
811                esac
812        fi
813
814        UNIVERSAL_ARCHFLAGS=
815        for arch in $UNIVERSAL_ARCHS; do
816                UNIVERSAL_ARCHFLAGS="$UNIVERSAL_ARCHFLAGS -arch $arch"
817        done
818
819        AC_MSG_CHECKING([for Universal CPU architectures])
820        AC_MSG_RESULT([$UNIVERSAL_ARCHS])
821        AC_SUBST(UNIVERSAL_ARCHS)
822        AC_SUBST(UNIVERSAL_ARCHFLAGS)
823])
824
825# MP_LIB_MD5
826#---------------------------------------
827# Check for an md5 implementation
828AC_DEFUN([MP_LIB_MD5],[
829        # Check for libmd from FreeBSD, which is preferred
830        AC_CHECK_LIB([md], [MD5File],[
831                AC_CHECK_HEADERS([md5.h sha.h], ,[
832                        AC_MSG_ERROR([libmd was found, but md5.h or sha.h is missing.])
833                ])
834                ac_save_LIBS="$LIBS"
835                LIBS="-lmd $LIBS"
836                AC_CHECK_FUNCS([SHA1_File])
837                LIBS="$ac_save_LIBS"
838                AC_CHECK_HEADERS([ripemd.h sha256.h])
839                AC_DEFINE([HAVE_LIBMD], ,[Define if you have the `md' library (-lmd).])
840                MD5_LIBS="-lmd"]
841        )
842        if test "x$MD5_LIBS" = "x"; then
843                # If libmd is not found, check for libcrypto from OpenSSL
844                AC_CHECK_LIB([crypto], [MD5_Update],[
845                        AC_CHECK_HEADERS([openssl/md5.h openssl/sha.h], ,[
846                                AC_MSG_ERROR([libcrypto was found, but openssl/md5.h or openssl/sha.h is missing.])
847                        ])
848                        AC_CHECK_HEADERS([openssl/ripemd.h])
849                        ac_save_LIBS="$LIBS"
850                        LIBS="-lcrypto $LIBS"
851                        AC_CHECK_FUNCS([SHA256_Update])
852                        LIBS="$ac_save_LIBS"
853                        AC_DEFINE([HAVE_LIBCRYPTO], ,[Define if you have the `crypto' library (-lcrypto).])
854                        MD5_LIBS="-lcrypto"]
855                )
856        fi
857        if test "x$MD5_LIBS" = "x"; then
858                AC_MSG_ERROR([Neither CommonCrypto, libmd nor libcrypto were found. A working md5 implementation is required.])
859        fi
860        AC_SUBST([MD5_LIBS])
861])
862
863# MP_PROG_DAEMONDO
864#---------------------------------------
865AC_DEFUN([MP_PROG_DAEMONDO],[
866        AC_REQUIRE([MP_CHECK_FRAMEWORK_COREFOUNDATION])
867        AC_REQUIRE([MP_CHECK_FRAMEWORK_SYSTEMCONFIGURATION])
868        AC_REQUIRE([MP_CHECK_FRAMEWORK_IOKIT])
869        AC_REQUIRE([MP_CHECK_FUNCTION_CFNOTIFICATIONCENTERGETDARWINNOTIFYCENTER])
870       
871        AC_MSG_CHECKING(for whether we will build daemondo)
872        result=no
873        case $host_os in
874                darwin*)
875                        if test "x$mp_cv_have_framework_corefoundation" == "xyes" &&
876                           test "x$mp_cv_have_framework_systemconfiguration" == "xyes" &&
877                           test "x$mp_cv_have_framework_iokit" == "xyes" &&
878                           test "x$mp_cv_have_function_cfnotificationcentergetdarwinnotifycenter" == "xyes"; then
879                                result=yes
880                                EXTRA_PROGS="$EXTRA_PROGS daemondo"
881                                AC_CONFIG_FILES([src/programs/daemondo/Makefile])
882                        fi
883                ;;
884                *)
885        esac
886        AC_MSG_RESULT(${result})
887])
888
889# MP_LIBCURL_FLAGS
890#       Sets the flags to compile with libcurl.
891#
892# Arguments:
893#       None.
894#
895# Requires:
896#   curl-config or user parameters to define the flags.
897#
898# Results:
899#   defines some help strings.
900#   sets CFLAGS_LIBCURL and LDFLAGS_LIBCURL
901#---------------------------------------
902AC_DEFUN([MP_LIBCURL_FLAGS],[
903        AC_ARG_WITH(curlprefix,
904                   [  --with-curlprefix       base directory for the cURL install '/usr', '/usr/local',...],
905                   [  curlprefix=$withval ])
906
907        if test "x$curlprefix" = "x"; then
908                AC_PATH_PROG([CURL_CONFIG], [curl-config])
909        else
910                AC_PATH_PROG([CURL_CONFIG], [curl-config], , [$curlprefix/bin])
911        fi
912
913        if test "x$CURL_CONFIG" = "x"; then
914                AC_MSG_ERROR([cannot find curl-config. Is libcurl installed?])
915        fi
916
917        CFLAGS_LIBCURL=$($CURL_CONFIG --cflags)
918        if test "x$curlprefix" = "x"; then
919                # System curl-config emits absurd output for --libs
920                # See rdar://7244457
921                LDFLAGS_LIBCURL="-lcurl"
922        else
923                # Due to a bug in dist, --arch flags are improperly supplied by curl-config.
924                # Get rid of them.
925                LDFLAGS_LIBCURL=$($CURL_CONFIG --libs | [sed 's/-arch [A-Za-z0-9_]* //g'])
926        fi
927
928        AC_SUBST(CFLAGS_LIBCURL)
929        AC_SUBST(LDFLAGS_LIBCURL)
930])
931
932# MP_SQLITE3_FLAGS
933#       Sets the flags to compile with libsqlite3 and tclsqlite3.
934#
935# Arguments:
936#       None.
937#
938# Requires:
939#   pkgconfig, libsqlite3 in /usr/lib, or user parameters to define the flags.
940#
941# Results:
942#   defines some help strings.
943#   sets CFLAGS_SQLITE3 and LDFLAGS_SQLITE3
944#---------------------------------------
945AC_DEFUN([MP_SQLITE3_FLAGS],[
946    # first sqlite3 itself
947        AC_ARG_WITH(sqlite3prefix,
948                   [  --with-sqlite3prefix       base directory for the sqlite3 install '/usr', '/usr/local',...],
949                   [  sqlite3prefix=$withval ])
950
951        if test "x$sqlite3prefix" = "x"; then
952                # see if it's somewhere like /usr that needs no extra flags
953                LDFLAGS_SQLITE3="-lsqlite3"
954                AC_CHECK_HEADER(sqlite3.h, [],[
955                    # nope - try pkg-config
956                        AC_PATH_PROG([PKG_CONFIG], [pkg-config])
957                        if test "x$PKG_CONFIG" = "x" || ! $PKG_CONFIG --exists sqlite3; then
958                                AC_MSG_ERROR([cannot find sqlite3 header])
959                        else
960                                CFLAGS_SQLITE3=$($PKG_CONFIG --cflags sqlite3)
961                                LDFLAGS_SQLITE3=$($PKG_CONFIG --libs sqlite3)
962                                # for tclsqlite below
963                                mp_sqlite3_dir=$($PKG_CONFIG --variable=prefix sqlite3)
964                                if test "x$mp_sqlite3_dir" != "x"; then
965                                        mp_sqlite3_dir=${mp_sqlite3_dir}/lib/sqlite3
966                                fi
967                        fi
968                ])
969        else
970            CFLAGS_SQLITE3="-I${sqlite3prefix}/include"
971                LDFLAGS_SQLITE3="-L${sqlite3prefix}/lib -lsqlite3"
972        fi
973
974        # check if we have sqlite3ext.h, using the appropriate cppflags
975        CPPFLAGS_OLD="${CPPFLAGS}"
976        CPPFLAGS="${CPPFLAGS} ${CFLAGS_SQLITE3}"
977        AC_CHECK_HEADERS(sqlite3ext.h)
978        CPPFLAGS="${CPPFLAGS_OLD}"
979
980        AC_SUBST(CFLAGS_SQLITE3)
981        AC_SUBST(LDFLAGS_SQLITE3)
982])
983
984dnl This macro tests if the compiler supports GCC's
985dnl __attribute__ syntax for unused variables/parameters
986AC_DEFUN([MP_COMPILER_ATTRIBUTE_UNUSED], [
987        AC_MSG_CHECKING([how to mark unused variables])
988        AC_COMPILE_IFELSE(
989                [AC_LANG_SOURCE([[int a __attribute__ ((unused));]])],
990                [AC_DEFINE(UNUSED, [__attribute__((unused))], [Attribute to mark unused variables])],
991                [AC_DEFINE(UNUSED, [])])
992
993        AC_MSG_RESULT([])
994       
995])
996
997dnl This macro ensures MP installation prefix paths are NOT in CFLAGS,
998dnl CPPFLAGS, OBJCFLAGS, LDFLAGS for configure to prevent potential problems
999dnl when base/ code is updated and ports are installed that would match needed
1000dnl items.
1001AC_DEFUN([MP_FLAGS_SCAN],[
1002        AC_ARG_ENABLE(
1003                [flag-sanitization],
1004                AS_HELP_STRING([--disable-flag-sanitization], [Do not sanitize CPPFLAGS, CFLAGS, OBJCFLAGS and LDFLAGS]),
1005                [disable_mp_flags_scan=yes],
1006                [disable_mp_flags_scan=no])
1007
1008        if test x"$disable_mp_flags_scan" != "xyes"; then
1009                # Get a value for $prefix
1010                oldprefix=$prefix
1011                if test "x$prefix" = "xNONE" ; then
1012                        prefix=$ac_default_prefix
1013                fi
1014
1015                mp_flags_scan_found=
1016
1017                # Clean CFLAGS CPPFLAGS OBJCFLAGS and LDFLAGS
1018                for mp_flags_flagname in CFLAGS CPPFLAGS OBJCFLAGS LDFLAGS; do
1019                        mp_flags_scan_flag_cleaned=
1020                        eval "set x \$$mp_flags_flagname"
1021                        shift
1022                        for mp_flags_scan_val; do
1023                                case "$mp_flags_scan_val" in
1024                                        -I$prefix/* | -L$prefix/*)
1025                                                AC_MSG_NOTICE([Removing `$mp_flags_scan_val' from \$$mp_flags_flagname because it might cause a self-dependency])
1026                                                mp_flags_scan_found=1
1027                                                ;; #(
1028                                        *)
1029                                                if test -z "$mp_flags_scan_flag_cleaned"; then
1030                                                        mp_flags_scan_flag_cleaned=$mp_flags_scan_val
1031                                                else
1032                                                        AS_VAR_APPEND([mp_flags_scan_flag_cleaned], [" $mp_flags_scan_val"])
1033                                                fi
1034                                                ;;
1035                                esac
1036                        done
1037                        if test -z "$mp_flags_scan_flag_cleaned"; then
1038                                (unset $mp_flags_flagname) >/dev/null 2>&1 && unset $mp_flags_flagname
1039                                (export -n $mp_flags_flagname) >/dev/null 2>&1 && export -n $mp_flags_flagname
1040                        else
1041                                eval "$mp_flags_flagname=\"$mp_flags_scan_flag_cleaned\""
1042                                export $mp_flags_flagname
1043                        fi
1044                        eval "ac_env_${mp_flags_flagname}_set=\${${mp_flags_flagname}+set}"
1045                        eval "ac_env_${mp_flags_flagname}_value=\${${mp_flags_flagname}}"
1046                        eval "ac_cv_env_${mp_flags_flagname}_set=\${${mp_flags_flagname}+set}"
1047                        eval "ac_cv_env_${mp_flags_flagname}_value=\${${mp_flags_flagname}}"
1048                done
1049
1050                # Since those are all precious variables they have been saved into config.cache and put into $ac_configure_args
1051                # We need to remove them at least from $ac_configure_args, because that's being passed to sub-configures
1052                eval "set x $ac_configure_args"
1053                shift
1054                ac_configure_args=
1055                for mp_flags_configure_arg; do
1056                        case "$mp_flags_configure_arg" in
1057                                CFLAGS=* | CPPFLAGS=* | OBJCFLAGS=* | LDFLAGS=*)
1058                                        mp_flags_configure_arg_key=$(AS_ECHO(["$mp_flags_configure_arg"]) | sed -E 's/^([[^=]]+)=.*$/\1/')
1059                                        eval "mp_flags_configure_arg_newval=\$$mp_flags_configure_arg_key"
1060                                        if test -n "$mp_flags_configure_arg_newval"; then
1061                                                AS_VAR_APPEND([ac_configure_args], [" '$mp_flags_configure_arg_key=$mp_flags_configure_arg_newval'"])
1062                                        fi
1063                                        ;;
1064                                *)
1065                                        AS_VAR_APPEND([ac_configure_args], [" '$mp_flags_configure_arg'"])
1066                                        ;;
1067                        esac
1068                done
1069
1070                if ! test -z "$mp_flags_scan_found"; then
1071                        AC_MSG_NOTICE([See https://trac.macports.org/ticket/42756 for rationale on why this script is removing these values])
1072                        AC_MSG_NOTICE([Pass --disable-flag-sanitization if you're aware of the potential problems and want to risk them anyway])
1073                fi
1074
1075                # Restore $prefix
1076                prefix=$oldprefix
1077        fi
1078])
1079
1080
1081dnl This macro ensures MP installation prefix paths are NOT in PATH
1082dnl for configure to prevent potential problems when base/ code is updated
1083dnl and ports are installed that would match needed items.
1084AC_DEFUN([MP_PATH_SCAN],[
1085        oldprefix=$prefix
1086        if test "x$prefix" = "xNONE" ; then
1087                prefix=$ac_default_prefix
1088        fi
1089        oldPATH=$PATH
1090        newPATH=
1091        as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
1092        for as_dir in $oldPATH
1093        do
1094                IFS=$as_save_IFS
1095                case "$as_dir" in
1096                        $prefix/*)
1097                                ;;
1098                        *)
1099                                if test -z "$newPATH"; then
1100                                        newPATH=$as_dir
1101                                else
1102                                        newPATH=$newPATH$PATH_SEPARATOR$as_dir
1103                                fi
1104                                ;;
1105                esac
1106        done
1107        PATH=$newPATH; export PATH
1108        AC_SUBST(PATH_CLEANED,$newPATH)
1109        prefix=$oldprefix
1110])
1111
1112dnl This macro tests for sed support of -E (BSD) or -r (GNU)
1113AC_DEFUN([MP_SED_EXTENDED_REGEXP],[
1114        AC_PATH_PROG(SED, [sed])
1115
1116        if test "x$SED" = "x"; then
1117                AC_MSG_ERROR([cannot find sed. Is sed installed?])
1118        fi
1119
1120        AC_MSG_CHECKING([which sed flag to use for extended regexp])
1121        [any_sed_flag=`echo foo | $SED    -e s/foo+/OK/ 2>&1 | grep OK`]
1122        [bsd_sed_flag=`echo foo | $SED -E -e s/foo+/OK/ 2>&1 | grep OK`]
1123        [gnu_sed_flag=`echo foo | $SED -r -e s/foo+/OK/ 2>&1 | grep OK`]
1124        if test "x$any_sed_flag" = "xOK" ; then
1125                AC_MSG_RESULT([none])
1126                SED_EXT=
1127        elif test "x$bsd_sed_flag" = "xOK" ; then
1128                AC_MSG_RESULT([-E (BSD)])
1129                SED_EXT=-E
1130        elif test "x$gnu_sed_flag" = "xOK" ; then
1131                AC_MSG_RESULT([-r (GNU)])
1132                SED_EXT=-r
1133        else
1134                AC_MSG_RESULT([not available])
1135                SED_EXT='N/A'
1136        fi
1137        AC_SUBST(SED_EXT)
1138])
1139
1140dnl This macro tests for tar support of -q (BSD) or not (GNU)
1141AC_DEFUN([MP_TAR_FAST_READ],[
1142        AC_PATH_PROG(TAR, [tar])
1143       
1144        AC_MSG_CHECKING([whether tar supports -q])
1145        if $TAR -t -q -f - </dev/null 2>/dev/null ; then
1146                AC_MSG_RESULT([yes (bsdtar)])
1147                TAR_Q='q'
1148        else
1149                AC_MSG_RESULT([no (gnutar)])
1150                TAR_Q=
1151        fi
1152        AC_SUBST(TAR_Q)
1153])
1154
1155dnl This macro tests for tar support of --no-same-owner
1156AC_DEFUN([MP_TAR_NO_SAME_OWNER],[
1157        AC_PATH_PROG(TAR, [tar])
1158        AC_PATH_PROG(GNUTAR, [gnutar])
1159       
1160        AC_MSG_CHECKING([for which tar variant to use])
1161        AS_IF([test -n "$GNUTAR"], [TAR_CMD=$GNUTAR], [TAR_CMD=$TAR])
1162        AC_MSG_RESULT([$TAR_CMD])
1163        AC_SUBST(TAR_CMD)
1164
1165        AC_MSG_CHECKING([for $TAR_CMD --no-same-owner support])
1166        [no_same_owner_support=`$TAR_CMD --help 2>&1 | grep no-same-owner`]
1167        if test -z "$no_same_owner_support" ; then
1168                AC_MSG_RESULT([no])
1169        else
1170                AC_MSG_RESULT([yes])
1171                TAR_CMD="$TAR_CMD --no-same-owner"
1172        fi
1173])
1174
1175dnl This macro tests for GNU patch
1176AC_DEFUN([MP_PATCH_GNU_VERSION],[
1177        AC_PATH_PROG(PATCH, [patch])
1178        AC_PATH_PROG(GNUPATCH, [gpatch])
1179       
1180        AC_MSG_CHECKING([for GNU (FSF) patch])
1181        AS_IF([test -n "$GNUPATCH"], [PATCH_CMD=$GNUPATCH], [PATCH_CMD=$PATCH])
1182        [fsf_version=`$PATCH_CMD --version 2>&1 | grep "Free Software Foundation"`]
1183        if test -z "$fsf_version" ; then
1184                AC_MSG_RESULT([none])
1185        else
1186                AC_MSG_RESULT([$PATCH_CMD])
1187                GNUPATCH="$PATCH_CMD"
1188        fi
1189])
1190
1191#------------------------------------------------------------------------
1192# MP_CHECK_READLINK_IS_P1003_1A --
1193#
1194#       Check if readlink conforms to POSIX 1003.1a standard, define
1195#       READLINK_IS_NOT_P1003_1A if it doesn't.
1196#
1197# Arguments:
1198#       None.
1199#
1200# Requires:
1201#       None.
1202#
1203# Depends:
1204#               AC_LANG_PROGRAM
1205#
1206# Results:
1207#       Result is cached.
1208#
1209#       If readlink doesn't conform to POSIX 1003.1a, defines the following variables:
1210#               READLINK_IS_NOT_P1003_1A
1211#
1212#------------------------------------------------------------------------
1213AC_DEFUN(MP_CHECK_READLINK_IS_P1003_1A, [
1214        AC_MSG_CHECKING([if readlink conforms to POSIX 1003.1a])
1215
1216        AC_CACHE_VAL(mp_cv_readlink_is_posix_1003_1a, [
1217                AC_COMPILE_IFELSE([
1218                        AC_LANG_PROGRAM([
1219                                        #include <unistd.h>
1220                                        ssize_t readlink(const char *, char *, size_t);
1221                                ], [
1222                        ])
1223                        ], [
1224                                mp_cv_readlink_is_posix_1003_1a="yes"
1225                        ], [
1226                                mp_cv_readlink_is_posix_1003_1a="no"
1227                        ]
1228                )
1229        ])
1230
1231        AC_MSG_RESULT(${mp_cv_readlink_is_posix_1003_1a})
1232
1233        if test x"${mp_cv_readlink_is_posix_1003_1a}" = "xno"; then
1234                AC_DEFINE([READLINK_IS_NOT_P1003_1A], [], [Define to 1 if readlink does not conform with POSIX 1003.1a (where third argument is a size_t and return value is a ssize_t)])
1235        fi
1236
1237        AC_SUBST(READLINK_IS_NOT_P1003_1A)
1238])
1239
1240#------------------------------------------------------------------------
1241# MP_WERROR --
1242#
1243#       Enable -Werror
1244#
1245# Arguments:
1246#       None.
1247#
1248# Requires:
1249#       none
1250#
1251# Depends:
1252#       none
1253#
1254# Results:
1255#       Substitutes WERROR_CFLAGS variable
1256#------------------------------------------------------------------------
1257AC_DEFUN([MP_WERROR],[
1258        AC_REQUIRE([AC_PROG_CC])
1259        AC_ARG_ENABLE(werror, AS_HELP_STRING([--enable-werror],[Add -Werror to CFLAGS. Used for development.]), [enable_werror=${enableval}], [enable_werror=no])
1260        if test x"$enable_werror" != "xno"; then
1261                CFLAGS_WERROR="-Werror"
1262        else
1263                CFLAGS_WERROR=""
1264        fi
1265        AC_SUBST([CFLAGS_WERROR])
1266])
1267
1268#------------------------------------------------------------------------
1269# MP_CHECK_SQLITE_VERSION --
1270#
1271#       Check for a specific SQLite version and execute commands depending on availability
1272#
1273# Arguments:
1274#       Required SQLite version for the test to succeed in the form of SQLITE_VERSION_NUMBER
1275#
1276# Requires:
1277#       MP_SQLITE3_FLAGS
1278#
1279# Depends:
1280#               AC_LANG_SOURCE
1281#
1282# Results:
1283#               Result is cached.
1284#
1285#       sets mp_sqlite_version_ge_$1 to yes or no
1286#
1287#------------------------------------------------------------------------
1288AC_DEFUN(MP_CHECK_SQLITE_VERSION, [
1289        AC_REQUIRE([MP_SQLITE3_FLAGS])
1290
1291        AC_MSG_CHECKING([for SQLite >= $1])
1292
1293        mp_check_sqlite_version_cppflags_save=$CPPFLAGS
1294        CPPFLAGS="$CPPFLAGS $CFLAGS_SQLITE3"
1295
1296        AC_CACHE_VAL(mp_cv_sqlite_version_defined, [
1297                AC_PREPROC_IFELSE(
1298                        [AC_LANG_SOURCE(
1299                                [[
1300                                        #include <sqlite3.h>
1301                                        #ifndef SQLITE_VERSION_NUMBER
1302                                        #  error "SQLITE_VERSION_NUMBER undefined"
1303                                        #endif
1304                                ]]
1305                        )],
1306                        [mp_cv_sqlite_version_defined="yes"],
1307                        [AC_MSG_ERROR("SQLITE_VERSION_NUMBER undefined or sqlite3.h not found")]
1308                )
1309        ])
1310
1311        if test x"${mp_cv_sqlite_version_defined}" = "xno"; then
1312                AC_MSG_RESULT([SQLite version not found])
1313                mp_sqlite_version_ge_$1="no"
1314        else
1315                AC_CACHE_VAL(mp_cv_sqlite_version_ge_$1, [
1316                        AC_PREPROC_IFELSE(
1317                                [AC_LANG_SOURCE(
1318                                        [[
1319                                                #include <sqlite3.h>
1320                                                #if (SQLITE_VERSION_NUMBER >= $1)
1321                                                /* Everything is fine */
1322                                                #else
1323                                                #  error "SQLite version too old"
1324                                                #endif
1325                                        ]]
1326                                )],
1327                                [mp_cv_sqlite_version_ge_$1="yes"],
1328                                [mp_cv_sqlite_version_ge_$1="no"]
1329                        )
1330                ])
1331
1332                AC_MSG_RESULT(${mp_cv_sqlite_version_ge_$1})
1333                mp_sqlite_version_ge_$1=${mp_cv_sqlite_version_ge_$1}
1334        fi
1335
1336        CPPFLAGS=$mp_check_sqlite_version_cppflags_save
1337])
1338
1339#------------------------------------------------------------------------
1340# MP_PLATFORM --
1341#
1342#       Export target platform and major version
1343#
1344# Arguments:
1345#       none.
1346#
1347# Requires:
1348#       none.
1349#
1350# Depends:
1351#       none.
1352#
1353# Results:
1354#       Defines OS_PLATFORM and OS_MAJOR.
1355#
1356#------------------------------------------------------------------------
1357AC_DEFUN([MP_PLATFORM],[
1358        AC_MSG_CHECKING([for target platform])
1359        OS_PLATFORM=`uname -s | tr '[[:upper:]]' '[[:lower:]]'`
1360                OS_MAJOR=`uname -r | cut -d '.' -f 1`
1361        AC_MSG_RESULT($OS_PLATFORM $OS_MAJOR)
1362        AC_SUBST(OS_PLATFORM)
1363        AC_SUBST(OS_MAJOR)
1364])
1365
1366#------------------------------------------------------------------------
1367# MP_TRACEMODE_SUPPORT --
1368#
1369#       Check whether trace mode is supported on this platform
1370#
1371# Arguments:
1372#       none.
1373#
1374# Requires:
1375#       OS_PLATOFRM and OS_MAJOR from MP_PLATFORM.
1376#
1377# Depends:
1378#       none.
1379#
1380# Results:
1381#       Defines the TRACEMODE_SUPPORT substitution and the
1382#       HAVE_TRACEMODE_SUPPORT macro.
1383#
1384#------------------------------------------------------------------------
1385AC_DEFUN([MP_TRACEMODE_SUPPORT],[
1386                AC_REQUIRE([MP_PLATFORM])
1387
1388                AC_CHECK_FUNCS([kqueue kevent])
1389
1390                AC_MSG_CHECKING([whether trace mode is supported on this platform])
1391                if test x"${OS_PLATFORM}" != "xdarwin"; then
1392                        AC_MSG_RESULT([not darwin, no])
1393                        TRACEMODE_SUPPORT=0
1394                elif test x"${ac_cv_func_kqueue}" != "xyes"; then
1395                        AC_MSG_RESULT([kqueue() not available, no])
1396                        TRACEMODE_SUPPORT=0
1397                elif test x"${ac_cv_func_kevent}" != "xyes"; then
1398                        AC_MSG_RESULT([kevent() not available, no])
1399                        TRACEMODE_SUPPORT=0
1400                else
1401                        AC_EGREP_CPP(yes_have_ev_receipt, [
1402                                #include <sys/types.h>
1403                                #include <sys/event.h>
1404                                #include <sys/time.h>
1405                                #ifdef EV_RECEIPT
1406                                yes_have_ev_receipt
1407                                #endif
1408                        ],[
1409                                AC_MSG_RESULT([yes])
1410                                TRACEMODE_SUPPORT=1
1411                                AC_DEFINE([HAVE_TRACEMODE_SUPPORT], [1], [Platform supports tracemode.])
1412                        ],[
1413                                AC_MSG_RESULT([EV_RECEIPT not available, no])
1414                                TRACEMODE_SUPPORT=0
1415                        ])
1416                fi
1417        AC_SUBST(TRACEMODE_SUPPORT)
1418])
Note: See TracBrowser for help on using the repository browser.