source: trunk/base/aclocal.m4 @ 117670

Last change on this file since 117670 was 117670, checked in by cal@…, 6 years ago

aclocal.m4: ignore --no-recursion if the subpackages are missing or unconfigured

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