source: trunk/base/aclocal.m4 @ 113475

Last change on this file since 113475 was 113475, checked in by raimue@…, 7 years ago

Strip all prefix paths from PATH

Not only $prefix/bin and $prefix/sbin could lead to linking base to the
existing MacPorts installation. Paths such as $prefix/libexec/gnubin also could
provide some of the tools we look for during building. Therefore, remove all
paths pointing to the prefix from PATH.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 30.6 KB
Line 
1dnl $Id: aclocal.m4 113475 2013-11-17 11:48:00Z raimue@macports.org $
2builtin(include,m4/tcl.m4)
3builtin(include,m4/pthread.m4)
4builtin(include,m4/foundation.m4)
5
6#------------------------------------------------------------------------
7# MP_CHECK_FRAMEWORK_COREFOUNDATION --
8#
9#       Check if CoreFoundation framework is available, define HAVE_FRAMEWORK_COREFOUNDATION if so.
10#
11# Arguments:
12#       None.
13#
14# Requires:
15#       None.
16#
17# Depends:
18#               AC_LANG_PROGRAM
19#
20# Results:
21#       Result is cached.
22#
23#       If CoreFoundation framework is available, defines the following variables:
24#               HAVE_FRAMEWORK_COREFOUNDATION
25#
26#------------------------------------------------------------------------
27AC_DEFUN(MP_CHECK_FRAMEWORK_COREFOUNDATION, [
28        FRAMEWORK_LIBS="-framework CoreFoundation"
29
30        AC_MSG_CHECKING([for CoreFoundation framework])
31
32        AC_CACHE_VAL(mp_cv_have_framework_corefoundation, [
33                ac_save_LIBS="$LIBS"
34                LIBS="$FRAMEWORK_LIBS $LIBS"
35               
36                AC_LINK_IFELSE([
37                        AC_LANG_PROGRAM([
38                                        #include <CoreFoundation/CoreFoundation.h>
39                                ], [
40                                        CFURLRef url = CFURLCreateWithFileSystemPath(NULL, CFSTR("/testing"), kCFURLPOSIXPathStyle, 1);
41                                        CFArrayRef bundles = CFBundleCreateBundlesFromDirectory(NULL, url, CFSTR("pkg"));
42                        ])
43                        ], [
44                                mp_cv_have_framework_corefoundation="yes"
45                        ], [
46                                mp_cv_have_framework_corefoundation="no"
47                        ]
48                )
49
50                LIBS="$ac_save_LIBS"
51        ])
52
53        AC_MSG_RESULT(${mp_cv_have_framework_corefoundation})
54
55        if test x"${mp_cv_have_framework_corefoundation}" = "xyes"; then
56                AC_DEFINE([HAVE_FRAMEWORK_COREFOUNDATION], [], [Define if CoreFoundation framework is available])
57        fi
58
59        AC_SUBST(HAVE_FRAMEWORK_COREFOUNDATION)
60])
61
62
63#------------------------------------------------------------------------
64# MP_CHECK_FUNCTION_CFNOTIFICATIONCENTERGETDARWINNOTIFYCENTER --
65#
66#       Check if if the routine CFNOTIFICATIONCENTERGETDARWINNOTIFYCENTER
67#       is available in CoreFoundation.
68#
69# Arguments:
70#       None.
71#
72# Requires:
73#       None.
74#
75# Depends:
76#               AC_LANG_PROGRAM
77#
78# Results:
79#       Result is cached.
80#
81#       If function CFNotificationCenterGetDarwinNotifyCenter is in the CoreFoundation framework, defines the following variables:
82#               HAVE_FUNCTION_CFNOTIFICATIONCENTERGETDARWINNOTIFYCENTER
83#
84#------------------------------------------------------------------------
85AC_DEFUN(MP_CHECK_FUNCTION_CFNOTIFICATIONCENTERGETDARWINNOTIFYCENTER, [
86        FRAMEWORK_LIBS="-framework CoreFoundation"
87
88        AC_MSG_CHECKING([for CFNotificationCenterGetDarwinNotifyCenter])
89
90        AC_CACHE_VAL(mp_cv_have_function_cfnotificationcentergetdarwinnotifycenter, [
91                ac_save_LIBS="$LIBS"
92                LIBS="$FRAMEWORK_LIBS $LIBS"
93               
94                AC_LINK_IFELSE([
95                        AC_LANG_PROGRAM([
96                                        #include <CoreFoundation/CoreFoundation.h>
97                                ], [
98                                        CFNotificationCenterRef ref = CFNotificationCenterGetDarwinNotifyCenter();
99                        ])
100                        ], [
101                                mp_cv_have_function_cfnotificationcentergetdarwinnotifycenter="yes"
102                        ], [
103                                mp_cv_have_function_cfnotificationcentergetdarwinnotifycenter="no"
104                        ]
105                )
106
107                LIBS="$ac_save_LIBS"
108        ])
109
110        AC_MSG_RESULT(${mp_cv_have_function_cfnotificationcentergetdarwinnotifycenter})
111
112        if test x"${mp_cv_have_function_cfnotificationcentergetdarwinnotifycenter}" = "xyes"; then
113                AC_DEFINE([HAVE_FUNCTION_CFNOTIFICATIONCENTERGETDARWINNOTIFYCENTER], [], [Define if function CFNotificationCenterGetDarwinNotifyCenter in CoreFoundation framework])
114        fi
115
116        AC_SUBST(HAVE_FUNCTION_CFNOTIFICATIONCENTERGETDARWINNOTIFYCENTER)
117])
118
119
120#------------------------------------------------------------------------
121# MP_CHECK_FRAMEWORK_SYSTEMCONFIGURATION --
122#
123#       Check if SystemConfiguration framework is available, define HAVE_FRAMEWORK_SYSTEMCONFIGURATION if so.
124#
125# Arguments:
126#       None.
127#
128# Requires:
129#       None.
130#
131# Depends:
132#               AC_LANG_PROGRAM
133#
134# Results:
135#       Result is cached.
136#
137#       If SystemConfiguration framework is available, defines the following variables:
138#               HAVE_FRAMEWORK_SYSTEMCONFIGURATION
139#
140#------------------------------------------------------------------------
141AC_DEFUN(MP_CHECK_FRAMEWORK_SYSTEMCONFIGURATION, [
142        FRAMEWORK_LIBS="-framework SystemConfiguration"
143
144        AC_MSG_CHECKING([for SystemConfiguration framework])
145
146        AC_CACHE_VAL(mp_cv_have_framework_systemconfiguration, [
147                ac_save_LIBS="$LIBS"
148                LIBS="$FRAMEWORK_LIBS $LIBS"
149               
150                AC_LINK_IFELSE([
151                        AC_LANG_PROGRAM([
152                                        #include <SystemConfiguration/SystemConfiguration.h>
153                                ], [
154                                        int err = SCError();
155                                        SCDynamicStoreRef dsRef = SCDynamicStoreCreate(NULL, NULL, NULL, NULL);
156                        ])
157                        ], [
158                                mp_cv_have_framework_systemconfiguration="yes"
159                        ], [
160                                mp_cv_have_framework_systemconfiguration="no"
161                        ]
162                )
163
164                LIBS="$ac_save_LIBS"
165        ])
166
167        AC_MSG_RESULT(${mp_cv_have_framework_systemconfiguration})
168
169        if test x"${mp_cv_have_framework_systemconfiguration}" = "xyes"; then
170                AC_DEFINE([HAVE_FRAMEWORK_SYSTEMCONFIGURATION], [], [Define if SystemConfiguration framework is available])
171        fi
172
173        AC_SUBST(HAVE_FRAMEWORK_SYSTEMCONFIGURATION)
174])
175
176
177#------------------------------------------------------------------------
178# MP_CHECK_FRAMEWORK_IOKIT --
179#
180#       Check if IOKit framework is available, define HAVE_FRAMEWORK_IOKIT if so.
181#
182# Arguments:
183#       None.
184#
185# Requires:
186#       None.
187#
188# Depends:
189#               AC_LANG_PROGRAM
190#
191# Results:
192#       Result is cached.
193#
194#       If IOKit framework is available, defines the following variables:
195#               HAVE_FRAMEWORK_IOKIT
196#
197#------------------------------------------------------------------------
198AC_DEFUN(MP_CHECK_FRAMEWORK_IOKIT, [
199        FRAMEWORK_LIBS="-framework IOKit"
200
201        AC_MSG_CHECKING([for IOKit framework])
202
203        AC_CACHE_VAL(mp_cv_have_framework_iokit, [
204                ac_save_LIBS="$LIBS"
205                LIBS="$FRAMEWORK_LIBS $LIBS"
206               
207                AC_LINK_IFELSE([
208                        AC_LANG_PROGRAM([
209                                        #include <IOKit/IOKitLib.h>
210                                ], [
211                                        IOCreateReceivePort(0, NULL);
212                                        IORegisterForSystemPower(0, NULL, NULL, NULL);
213                        ])
214                        ], [
215                                mp_cv_have_framework_iokit="yes"
216                        ], [
217                                mp_cv_have_framework_iokit="no"
218                        ]
219                )
220
221                LIBS="$ac_save_LIBS"
222        ])
223
224        AC_MSG_RESULT(${mp_cv_have_framework_iokit})
225
226        if test x"${mp_cv_have_framework_iokit}" = "xyes"; then
227                AC_DEFINE([HAVE_FRAMEWORK_IOKIT], [], [Define if IOKit framework is available])
228        fi
229
230        AC_SUBST(HAVE_FRAMEWORK_IOKIT)
231])
232
233
234dnl This macro checks if the user specified a ports tree
235dnl explicitly. If not, search for it
236
237# MP_PATH_PORTSDIR(DEFAULT_PORTSDIR)
238#---------------------------------------
239 AC_DEFUN([MP_PATH_PORTSDIR],[
240        dnl For ease of reading, run after gcc has been found/configured
241        AC_REQUIRE([AC_PROG_CC])
242
243        AC_ARG_WITH(ports-dir, [AS_HELP_STRING([--with-ports-dir=DIR],[Specify alternate ports directory])], [ portsdir="$withval" ] )
244
245
246        AC_MSG_CHECKING([for ports tree])
247        if test "x$portsdir" != "x" ; then
248          if test -d "$portsdir" -a -e "$portsdir/PortIndex" ; then
249                :
250          else
251                AC_MSG_ERROR([$portsdir not a valid ports tree])
252          fi
253        else
254                dnl If the user didn't give a path, look for default
255                if test "x$1" != "x" ; then
256                  if test -d "$1" -a -e "$1/PortIndex" ; then
257                        portsdir=$1
258                  fi
259                fi
260        fi
261
262        if test "x$portsdir" != "x" ; then
263                AC_MSG_RESULT($portsdir)
264                PORTSDIR="$portsdir"
265                AC_SUBST(PORTSDIR)
266        else
267                AC_MSG_WARN([No ports tree found])
268        fi
269
270         ])
271
272
273# MP_PATH_MPCONFIGDIR
274#---------------------------------------
275AC_DEFUN([MP_PATH_MPCONFIGDIR],[
276        dnl if the user actually specified --prefix, shift
277        dnl mpconfigdir to $prefix/etc/macports
278        dnl     AC_REQUIRE([MP_PATH_PORTSDIR])
279       
280        AC_MSG_CHECKING([for MacPorts config directory])
281
282        mpconfigdir='${sysconfdir}/macports'
283
284        AC_MSG_RESULT([$mpconfigdir])
285        MPCONFIGDIR="$mpconfigdir"
286        AC_SUBST(MPCONFIGDIR)
287
288        ])
289
290# MP_CHECK_OLDLAYOUT
291#---------------------------------------
292AC_DEFUN([MP_CHECK_OLDLAYOUT],[
293        dnl Bail if there is an existing install of DP/MP older than 1.5
294
295        AC_MSG_CHECKING([that any existing MacPorts install can be upgraded])
296
297        eval dpversionfile="${sysconfdir}/ports/dp_version"
298        if test -f "$dpversionfile"; then
299                AC_MSG_ERROR([Existing MacPorts or DarwinPorts install is too old to be upgraded. Install MacPorts 1.7.1 first.])
300        else
301                AC_MSG_RESULT([yes])
302        fi
303
304        ])
305
306# MP_CHECK_NOROOTPRIVILEGES
307#-------------------------------------------------
308AC_DEFUN([MP_CHECK_NOROOTPRIVILEGES],[
309        dnl if with user specifies --with-no-root-privileges,
310        dnl use current user and group.
311        dnl use ~/Library/Tcl as Tcl package directory
312                AC_REQUIRE([MP_PATH_MPCONFIGDIR])
313
314        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] )
315
316        if test "${ROOTPRIVS+set}" = set; then
317
318                # Set install-user to current user
319                AC_MSG_CHECKING([for install user])
320                DSTUSR=`id -un`
321                AC_MSG_RESULT([$DSTUSR])
322                AC_SUBST(DSTUSR)
323               
324                # Set install-group to current user
325                AC_MSG_CHECKING([for install group])
326                DSTGRP=`id -gn`
327                AC_MSG_RESULT([$DSTGRP])
328                AC_SUBST(DSTGRP)
329
330                # Set run-user to current user
331                AC_MSG_CHECKING([for macports user])
332                RUNUSR=`id -un`
333                AC_MSG_RESULT([$RUNUSR])
334                AC_SUBST(RUNUSR)
335
336                # Set Tcl package directory to ~/Library/Tcl
337            AC_MSG_CHECKING(for Tcl package directory)
338                ac_cv_c_tclpkgd=`eval echo ~$DSTUSR/Library/Tcl`
339            # Convert to a native path and substitute into the output files.
340            PACKAGE_DIR_NATIVE=`${CYGPATH} ${ac_cv_c_tclpkgd}`
341            TCL_PACKAGE_DIR=${PACKAGE_DIR_NATIVE}
342            AC_SUBST(TCL_PACKAGE_DIR)
343                if test x"${ac_cv_c_tclpkgd}" = x ; then
344                        AC_MSG_ERROR(Tcl package directory not found.  Please specify its location with --with-tclpackage)
345            else
346                        AC_MSG_RESULT(${ac_cv_c_tclpkgd})
347            fi
348        fi
349
350])
351
352# MP_CHECK_RUNUSER
353#-------------------------------------------------
354AC_DEFUN([MP_CHECK_RUNUSER],[
355        dnl if with user specifies --with-macports-user,
356        dnl use it. otherwise default to platform defaults
357       AC_REQUIRE([MP_PATH_MPCONFIGDIR])
358
359        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 ] )
360       
361        AC_MSG_CHECKING([for macports user])
362        if test "x$RUNUSR" = "x" ; then
363           RUNUSR=macports
364        fi
365
366        AC_MSG_RESULT([$RUNUSR])
367        AC_SUBST(RUNUSR)
368])
369
370
371# MP_SHARED_DIRECTORY
372#-------------------------------------------------
373AC_DEFUN([MP_SHARED_DIRECTORY],[
374        dnl if with user specifies --with-shared-directory,
375        dnl use 0775 permissions for ${prefix} directories
376        AC_REQUIRE([MP_PATH_MPCONFIGDIR])
377
378        AC_ARG_WITH(shared-directory, [AS_HELP_STRING([--with-shared-directory],[Use 0775 permissions for installed directories])], [ SHAREDIR=$withval ] )
379
380        if test "${SHAREDIR+set}" = set; then   
381                AC_MSG_CHECKING([whether to share the install directory with all members of the install group])
382            DSTMODE=0775
383
384                AC_MSG_RESULT([$DSTMODE])
385                AC_SUBST(DSTMODE)
386        fi
387])
388
389# MP_CHECK_INSTALLUSER
390#-------------------------------------------------
391AC_DEFUN([MP_CHECK_INSTALLUSER],[
392        dnl if with user specifies --with-install-user,
393        dnl use it. otherwise default to platform defaults
394        AC_REQUIRE([MP_PATH_MPCONFIGDIR])
395
396        AC_ARG_WITH(install-user, [AS_HELP_STRING([--with-install-user=USER],[Specify user ownership of installed files])], [ DSTUSR=$withval ] )
397       
398        AC_MSG_CHECKING([for install user])
399        if test "x$DSTUSR" = "x" ; then
400           DSTUSR=root
401        fi
402
403        AC_MSG_RESULT([$DSTUSR])
404        AC_SUBST(DSTUSR)
405])
406
407# MP_CHECK_INSTALLGROUP
408#-------------------------------------------------
409AC_DEFUN([MP_CHECK_INSTALLGROUP],[
410        dnl if with user specifies --with-install-group,
411        dnl use it. otherwise default to platform defaults
412        AC_REQUIRE([MP_CHECK_INSTALLUSER])
413
414        AC_ARG_WITH(install-group, [AS_HELP_STRING([--with-install-group=GROUP],[Specify group ownership of installed files])], [ DSTGRP=$withval ] )
415
416        AC_MSG_CHECKING([for install group])
417        if test "x$DSTGRP" = "x" ; then
418           
419           case $host_os in
420           darwin*)
421                DSTGRP="admin"
422                ;;
423           freebsd*)
424                DSTGRP="wheel"
425                ;;
426           linux*)
427                DSTGRP="root"
428                ;;
429           *)
430                DSTGRP="wheel"
431                ;;
432           esac
433        fi
434
435        AC_MSG_RESULT([$DSTGRP])
436        AC_SUBST(DSTGRP)
437])
438
439# MP_DIRECTORY_MODE
440#-------------------------------------------------
441AC_DEFUN([MP_DIRECTORY_MODE],[
442        dnl if with user specifies --with-directory-mode,
443        dnl use the specified permissions for ${prefix} directories
444        dnl otherwise use 0755
445        AC_REQUIRE([MP_PATH_MPCONFIGDIR])
446
447        AC_ARG_WITH(directory-mode, [AS_HELP_STRING([--with-directory-mode=MODE],[Specify directory mode of installed directories])], [ DSTMODE=$withval ] )
448       
449        AC_MSG_CHECKING([what permissions to use for installation directories])
450        if test "x$DSTMODE" = "x" ; then
451           DSTMODE=0755
452        fi
453
454        AC_MSG_RESULT([$DSTMODE])
455        AC_SUBST(DSTMODE)
456])
457
458# MP_PATH_APPLICATIONS
459#---------------------------------------
460AC_DEFUN([MP_PATH_APPLICATIONS],[
461        AC_REQUIRE([MP_CHECK_INSTALLUSER])
462
463    AC_ARG_WITH(applications-dir,[AS_HELP_STRING([--with-applications-dir],[Applications installation directory.])], MPAPPLICATIONSDIR=${withval})
464
465    oldprefix=$prefix
466    if test "x$prefix" = "xNONE" ; then
467        prefix=$ac_default_prefix
468    fi
469    AC_MSG_CHECKING([for Applications installation directory])
470
471        if test "x$MPAPPLICATIONSDIR" = "x" ; then
472            if test "$DSTUSR" = "root" ; then
473                MPAPPLICATIONSDIR="/Applications/MacPorts"
474            else
475                MPAPPLICATIONSDIR="$(eval echo ~$DSTUSR)/Applications/MacPorts"
476            fi
477        fi
478
479        AC_MSG_RESULT([$MPAPPLICATIONSDIR])
480    AC_SUBST(MPAPPLICATIONSDIR)
481    prefix=$oldprefix
482])
483
484# MP_PATH_FRAMEWORKS
485#---------------------------------------
486AC_DEFUN([MP_PATH_FRAMEWORKS],[
487        AC_REQUIRE([MP_CHECK_INSTALLUSER])
488
489    AC_ARG_WITH(frameworks-dir,[AS_HELP_STRING([--with-frameworks-dir],[Frameworks installation directory.])], MPFRAMEWORKSDIR=${withval})
490
491    oldprefix=$prefix
492    if test "x$prefix" = "xNONE" ; then
493        prefix=$ac_default_prefix
494    fi
495    AC_MSG_CHECKING([for Frameworks installation directory])
496
497        if test "x$MPFRAMEWORKSDIR" = "x" ; then
498                MPFRAMEWORKSDIR="${prefix}/Library/Frameworks"
499        fi
500
501        AC_MSG_RESULT([$MPFRAMEWORKSDIR])
502    AC_SUBST(MPFRAMEWORKSDIR)
503    prefix=$oldprefix
504])
505
506
507# MP_UNIVERSAL_OPTIONS
508#---------------------------------------
509AC_DEFUN([MP_UNIVERSAL_OPTIONS],[
510  AC_ARG_WITH(universal-archs,[AS_HELP_STRING([--with-universal-archs="CPU"],[Universal CPU architectures (space separated)])], UNIVERSAL_ARCHS=${withval})
511
512  if test "x$UNIVERSAL_ARCHS" = "x"; then
513    case "$MACOSX_VERSION" in
514      10.1[[0-9]]*)
515        UNIVERSAL_ARCHS="x86_64 i386"
516        ;;
517      10.[[0-5]]*)
518        UNIVERSAL_ARCHS="i386 ppc"
519        ;;
520      *)
521        UNIVERSAL_ARCHS="x86_64 i386"
522        ;;
523    esac
524  fi
525
526  UNIVERSAL_ARCHFLAGS=
527  for arch in $UNIVERSAL_ARCHS; do
528    UNIVERSAL_ARCHFLAGS="$UNIVERSAL_ARCHFLAGS -arch $arch"
529  done
530
531  AC_MSG_CHECKING([for Universal CPU architectures])
532  AC_MSG_RESULT([$UNIVERSAL_ARCHS])
533  AC_SUBST(UNIVERSAL_ARCHS)
534  AC_SUBST(UNIVERSAL_ARCHFLAGS)
535])
536
537# MP_LIB_MD5
538#---------------------------------------
539# Check for an md5 implementation
540AC_DEFUN([MP_LIB_MD5],[
541
542        # Check for libmd from FreeBSD, which is preferred
543        AC_CHECK_LIB([md], [MD5File],[
544                AC_CHECK_HEADERS([md5.h sha.h], ,[
545                        AC_MSG_ERROR([libmd was found, but md5.h or sha.h is missing.])
546                ])
547                ac_save_LIBS="$LIBS"
548                LIBS="-lmd $LIBS"
549                AC_CHECK_FUNCS([SHA1_File])
550                LIBS="$ac_save_LIBS"
551                AC_CHECK_HEADERS([ripemd.h sha256.h])
552                AC_DEFINE([HAVE_LIBMD], ,[Define if you have the `md' library (-lmd).])
553                MD5_LIBS="-lmd"]
554        )
555        if test "x$MD5_LIBS" = "x"; then
556                # If libmd is not found, check for libcrypto from OpenSSL
557                AC_CHECK_LIB([crypto], [MD5_Update],[
558                        AC_CHECK_HEADERS([openssl/md5.h openssl/sha.h], ,[
559                                AC_MSG_ERROR([libcrypto was found, but openssl/md5.h or openssl/sha.h is missing.])
560                        ])
561                        AC_CHECK_HEADERS([openssl/ripemd.h])
562                        ac_save_LIBS="$LIBS"
563                        LIBS="-lcrypto $LIBS"
564                        AC_CHECK_FUNCS([SHA256_Update])
565                        LIBS="$ac_save_LIBS"
566                        AC_DEFINE([HAVE_LIBCRYPTO], ,[Define if you have the `crypto' library (-lcrypto).])
567                        MD5_LIBS="-lcrypto"]
568                )
569        fi
570        if test "x$MD5_LIBS" = "x"; then
571                AC_MSG_ERROR([Neither CommonCrypto, libmd nor libcrypto were found. A working md5 implementation is required.])
572        fi
573        AC_SUBST([MD5_LIBS])
574])
575
576# MP_PROG_DAEMONDO
577#---------------------------------------
578AC_DEFUN([MP_PROG_DAEMONDO],[
579        AC_REQUIRE([MP_CHECK_FRAMEWORK_COREFOUNDATION])
580        AC_REQUIRE([MP_CHECK_FRAMEWORK_SYSTEMCONFIGURATION])
581        AC_REQUIRE([MP_CHECK_FRAMEWORK_IOKIT])
582        AC_REQUIRE([MP_CHECK_FUNCTION_CFNOTIFICATIONCENTERGETDARWINNOTIFYCENTER])
583       
584    AC_MSG_CHECKING(for whether we will build daemondo)
585    result=no
586        case $host_os in
587        darwin*)
588                if test "x$mp_cv_have_framework_corefoundation" == "xyes" &&
589                   test "x$mp_cv_have_framework_systemconfiguration" == "xyes" &&
590                   test "x$mp_cv_have_framework_iokit" == "xyes" &&
591                   test "x$mp_cv_have_function_cfnotificationcentergetdarwinnotifycenter" == "xyes"; then
592                        result=yes
593                        EXTRA_PROGS="$EXTRA_PROGS daemondo"
594                        AC_CONFIG_FILES([src/programs/daemondo/Makefile])
595                fi
596                ;;
597        *)
598        esac
599        AC_MSG_RESULT(${result})
600])
601
602#------------------------------------------------------------------------
603# MP_TCL_PACKAGE_DIR --
604#
605#       Locate the correct directory for Tcl package installation
606#
607# Arguments:
608#       None.
609#
610# Requires:
611#       TCLVERSION must be set
612#       CYGPATH must be set
613#       TCLSH must be set
614#
615# Results:
616#
617#       Adds a --with-tclpackage switch to configure.
618#       Result is cached.
619#
620#       Substs the following vars:
621#               TCL_PACKAGE_DIR
622#------------------------------------------------------------------------
623
624AC_DEFUN(MP_TCL_PACKAGE_DIR, [
625        AC_REQUIRE([MP_CHECK_INSTALLUSER])
626
627    AC_MSG_CHECKING(for Tcl package directory)
628
629    AC_ARG_WITH(tclpackage, [  --with-tclpackage       Tcl package installation directory.], with_tclpackagedir=${withval})
630
631    if test x"${with_tclpackagedir}" != x ; then
632        ac_cv_c_tclpkgd=${with_tclpackagedir}
633    else
634        AC_CACHE_VAL(ac_cv_c_tclpkgd, [
635            # Use the value from --with-tclpackage, if it was given
636
637            if test x"${with_tclpackagedir}" != x ; then
638                echo "tclpackagedir"
639                ac_cv_c_tclpkgd=${with_tclpackagedir}
640            else
641                # On darwin we can do some intelligent guessing
642                case $host_os in
643                    darwin*)
644                        tcl_autopath=`echo 'puts -nonewline \$auto_path' | $TCLSH`
645                        for path in $tcl_autopath; do
646                        if test "$DSTUSR" = "root" ; then
647                            if test "$path" = "/Library/Tcl"; then
648                                ac_cv_c_tclpkgd="$path"
649                                break
650                            fi
651                            if test "$path" = "/System/Library/Tcl"; then
652                                if test -d "$path"; then
653                                    ac_cv_c_tclpkgd="$path"
654                                    break
655                                fi
656                            fi
657                        elif test "$path" = "~/Library/Tcl"; then
658                            ac_cv_c_tclpkgd=`eval echo ~$DSTUSR/Library/Tcl`
659                            break
660                        fi
661                        done
662                    ;;
663                esac
664                if test x"${ac_cv_c_tclpkgd}" = x ; then
665                    # Fudge a path from the first entry in the auto_path
666                    tcl_pkgpath=`echo 'puts -nonewline [[lindex \$auto_path 0]]' | $TCLSH`
667                    if test -d "$tcl_pkgpath"; then
668                        ac_cv_c_tclpkgd="$tcl_pkgpath"
669                    fi
670                    # If the first entry does not exist, do nothing
671                fi
672            fi
673        ])
674    fi
675
676    if test x"${ac_cv_c_tclpkgd}" = x ; then
677        AC_MSG_ERROR(Tcl package directory not found.  Please specify its location with --with-tclpackage)
678    else
679        AC_MSG_RESULT(${ac_cv_c_tclpkgd})
680    fi
681
682    # Convert to a native path and substitute into the output files.
683
684    PACKAGE_DIR_NATIVE=`${CYGPATH} ${ac_cv_c_tclpkgd}`
685
686    TCL_PACKAGE_DIR=${PACKAGE_DIR_NATIVE}
687
688    AC_SUBST(TCL_PACKAGE_DIR)
689])
690
691# MP_PROG_TCLSH
692#---------------------------------------
693AC_DEFUN([MP_PROG_TCLSH],[
694
695
696        case $host_os in
697                freebsd*)
698                        # FreeBSD installs a dummy tclsh (annoying)
699                        # Look for a real versioned tclsh with threads first
700                        # Look for a real versioned tclsh without threads second
701                        AC_PATH_PROG([TCLSH], [tclsh${TCL_VERSION}-threads tclsh${TCL_VERSION} tclsh])
702                        ;;
703                *)
704                        # Otherwise, look for a non-versioned tclsh
705                        AC_PATH_PROG([TCLSH], [tclsh tclsh${TCL_VERSION}])
706                        ;;
707        esac
708        if test "x$TCLSH" = "x" ; then
709                AC_MSG_ERROR([Could not find tclsh])
710        fi
711
712        AC_SUBST(TCLSH)
713])
714
715# MP_TCL_PACKAGE
716#       Determine if a Tcl package is present.
717#
718# Arguments:
719#       Package name (may include the version)
720#
721# Syntax:
722#   MP_TCL_PACKAGE (package, [action-if-found], [action-if-not-found])
723#
724# Requires:
725#       TCLSH must be set
726#
727# Results:
728#       Execute action-if-found or action-if-not-found
729#---------------------------------------
730AC_DEFUN([MP_TCL_PACKAGE],[
731        AC_MSG_CHECKING([for Tcl $1 package])
732        package_present=`echo 'if {[[catch {package require $1}]]} {puts -nonewline 0} else {puts -nonewline 1}' | $TCLSH`
733        AS_IF([test "$package_present" = "1"], [$2], [$3])[]
734])
735
736# MP_TCL_THREAD_SUPPORT
737#       Determine if thread support is available in tclsh.
738#
739# Arguments:
740#       None.
741#
742# Requires:
743#       TCLSH must be set
744#
745# Results:
746#   Fails if thread support isn't available.
747#---------------------------------------
748AC_DEFUN([MP_TCL_THREAD_SUPPORT],[
749        AC_MSG_CHECKING([whether tclsh was compiled with threads])
750        tcl_threadenabled=`echo 'puts -nonewline [[info exists tcl_platform(threaded)]]' | $TCLSH`
751        if test "$tcl_threadenabled" = "1" ; then
752                AC_MSG_RESULT([yes])
753        else
754                AC_MSG_RESULT([no])
755                AC_MSG_ERROR([tcl wasn't compiled with threads enabled])
756        fi
757])
758
759# MP_LIBCURL_FLAGS
760#       Sets the flags to compile with libcurl.
761#
762# Arguments:
763#       None.
764#
765# Requires:
766#   curl-config or user parameters to define the flags.
767#
768# Results:
769#   defines some help strings.
770#   sets CFLAGS_LIBCURL and LDFLAGS_LIBCURL
771#---------------------------------------
772AC_DEFUN([MP_LIBCURL_FLAGS],[
773        AC_ARG_WITH(curlprefix,
774                   [  --with-curlprefix       base directory for the cURL install '/usr', '/usr/local',...],
775                   [  curlprefix=$withval ])
776
777        if test "x$curlprefix" = "x"; then
778                AC_PATH_PROG([CURL_CONFIG], [curl-config])
779        else
780                AC_PATH_PROG([CURL_CONFIG], [curl-config], , [$curlprefix/bin])
781        fi
782
783        if test "x$CURL_CONFIG" = "x"; then
784                AC_MSG_ERROR([cannot find curl-config. Is libcurl installed?])
785        fi
786
787        CFLAGS_LIBCURL=$($CURL_CONFIG --cflags)
788        if test "x$curlprefix" = "x"; then
789                # System curl-config emits absurd output for --libs
790                # See rdar://7244457
791                LDFLAGS_LIBCURL="-lcurl"
792        else
793                # Due to a bug in dist, --arch flags are improperly supplied by curl-config.
794                # Get rid of them.
795                LDFLAGS_LIBCURL=$($CURL_CONFIG --libs | [sed 's/-arch [A-Za-z0-9_]* //g'])
796        fi
797
798        AC_SUBST(CFLAGS_LIBCURL)
799        AC_SUBST(LDFLAGS_LIBCURL)
800])
801
802# MP_SQLITE3_FLAGS
803#       Sets the flags to compile with libsqlite3 and tclsqlite3.
804#
805# Arguments:
806#       None.
807#
808# Requires:
809#   pkgconfig, libsqlite3 in /usr/lib, or user parameters to define the flags.
810#
811# Results:
812#   defines some help strings.
813#   sets CFLAGS_SQLITE3 and LDFLAGS_SQLITE3
814#---------------------------------------
815AC_DEFUN([MP_SQLITE3_FLAGS],[
816    # first sqlite3 itself
817        AC_ARG_WITH(sqlite3prefix,
818                   [  --with-sqlite3prefix       base directory for the sqlite3 install '/usr', '/usr/local',...],
819                   [  sqlite3prefix=$withval ])
820
821        if test "x$sqlite3prefix" = "x"; then
822                # see if it's somewhere like /usr that needs no extra flags
823                LDFLAGS_SQLITE3="-lsqlite3"
824                AC_CHECK_HEADER(sqlite3.h, [],[
825                    # nope - try pkg-config
826                        AC_PATH_PROG([PKG_CONFIG], [pkg-config])
827                        if test "x$PKG_CONFIG" = "x" || ! $PKG_CONFIG --exists sqlite3; then
828                                AC_MSG_ERROR([cannot find sqlite3 header])
829                        else
830                                CFLAGS_SQLITE3=$($PKG_CONFIG --cflags sqlite3)
831                                LDFLAGS_SQLITE3=$($PKG_CONFIG --libs sqlite3)
832                                # for tclsqlite below
833                                mp_sqlite3_dir=$($PKG_CONFIG --variable=prefix sqlite3)
834                                if test "x$mp_sqlite3_dir" != "x"; then
835                                        mp_sqlite3_dir=${mp_sqlite3_dir}/lib/sqlite3
836                                fi
837                        fi
838                ])
839        else
840            CFLAGS_SQLITE3="-I${sqlite3prefix}/include"
841                LDFLAGS_SQLITE3="-L${sqlite3prefix}/lib -lsqlite3"
842        fi
843
844    # check if we have sqlite3ext.h, using the appropriate cppflags
845    CPPFLAGS_OLD="${CPPFLAGS}"
846    CPPFLAGS="${CPPFLAGS} ${CFLAGS_SQLITE3}"
847    AC_CHECK_HEADERS(sqlite3ext.h)
848    CPPFLAGS="${CPPFLAGS_OLD}"
849
850        AC_SUBST(CFLAGS_SQLITE3)
851        AC_SUBST(LDFLAGS_SQLITE3)
852
853        # now the sqlite Tcl bindings
854        AC_ARG_WITH(tcl-sqlite3,
855                AS_HELP_STRING([--with-tcl-sqlite3=DIR],
856                        [directory for Tcl sqlite3 (default /usr/lib/sqlite3)]),
857                [mp_sqlite3_dir=$withval])
858
859    if test "x$mp_sqlite3_dir" = "x"; then
860        case $host_os in
861            darwin*)
862                mp_sqlite3_dir="/usr/lib/sqlite3"
863                ;;
864            freebsd*)
865                mp_sqlite3_dir="/usr/local/lib/sqlite"
866                ;;
867            *)
868                mp_sqlite3_dir="/usr/share/tcl${TCL_VERSION}/sqlite3"
869                ;;
870        esac
871    fi
872
873        AC_CACHE_CHECK([for Tcl sqlite3 location], [mp_cv_sqlite3_dir],
874                [mp_cv_sqlite3_dir=
875                test -r "${mp_sqlite3_dir}/pkgIndex.tcl" && mp_cv_sqlite3_dir=$mp_sqlite3_dir
876                ])
877
878        SQLITE3_TCL_DIR=$mp_cv_sqlite3_dir
879        AC_SUBST(SQLITE3_TCL_DIR)
880])
881
882dnl This macro tests if the compiler supports GCC's
883dnl __attribute__ syntax for unused variables/parameters
884AC_DEFUN([MP_COMPILER_ATTRIBUTE_UNUSED], [
885        AC_MSG_CHECKING([how to mark unused variables])
886        AC_COMPILE_IFELSE(
887                [AC_LANG_SOURCE([[int a __attribute__ ((unused));]])],
888                [AC_DEFINE(UNUSED, [__attribute__((unused))], [Attribute to mark unused variables])],
889                [AC_DEFINE(UNUSED, [])])
890
891        AC_MSG_RESULT([])
892       
893])
894
895dnl This macro ensures MP installation prefix paths are NOT in PATH
896dnl for configure to prevent potential problems when base/ code is updated
897dnl and ports are installed that would match needed items.
898AC_DEFUN([MP_PATH_SCAN],[
899        oldprefix=$prefix
900        if test "x$prefix" = "xNONE" ; then
901                prefix=$ac_default_prefix
902        fi
903        oldPATH=$PATH
904        newPATH=
905        as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
906        for as_dir in $oldPATH
907        do
908                IFS=$as_save_IFS
909                case "$as_dir" in
910                        $prefix/*)
911                                ;;
912                        *)
913                                if test -z "$newPATH"; then
914                                        newPATH=$as_dir
915                                else
916                                        newPATH=$newPATH$PATH_SEPARATOR$as_dir
917                                fi
918                                ;;
919                esac
920        done
921        PATH=$newPATH; export PATH
922        AC_SUBST(PATH_CLEANED,$newPATH)
923        prefix=$oldprefix
924])
925
926dnl This macro tests for sed support of -E (BSD) or -r (GNU)
927AC_DEFUN([MP_SED_EXTENDED_REGEXP],[
928        AC_PATH_PROG(SED, [sed])
929
930        if test "x$SED" = "x"; then
931                AC_MSG_ERROR([cannot find sed. Is sed installed?])
932        fi
933
934        AC_MSG_CHECKING([which sed flag to use for extended regexp])
935        [any_sed_flag=`echo foo | $SED    -e s/foo+/OK/ 2>&1 | grep OK`]
936        [bsd_sed_flag=`echo foo | $SED -E -e s/foo+/OK/ 2>&1 | grep OK`]
937        [gnu_sed_flag=`echo foo | $SED -r -e s/foo+/OK/ 2>&1 | grep OK`]
938        if test "x$any_sed_flag" = "xOK" ; then
939                AC_MSG_RESULT([none])
940                SED_EXT=
941        elif test "x$bsd_sed_flag" = "xOK" ; then
942                AC_MSG_RESULT([-E (BSD)])
943                SED_EXT=-E
944        elif test "x$gnu_sed_flag" = "xOK" ; then
945                AC_MSG_RESULT([-r (GNU)])
946                SED_EXT=-r
947        else
948                AC_MSG_RESULT([not available])
949                SED_EXT='N/A'
950        fi
951        AC_SUBST(SED_EXT)
952])
953
954dnl This macro tests for tar support of -q (BSD) or not (GNU)
955AC_DEFUN([MP_TAR_FAST_READ],[
956        AC_PATH_PROG(TAR, [tar])
957       
958        AC_MSG_CHECKING([whether tar supports -q])
959        if $TAR -t -q -f - </dev/null 2>/dev/null ; then
960                AC_MSG_RESULT([yes (bsdtar)])
961                TAR_Q='q'
962        else
963                AC_MSG_RESULT([no (gnutar)])
964                TAR_Q=
965        fi
966        AC_SUBST(TAR_Q)
967])
968
969dnl This macro tests for tar support of --no-same-owner
970AC_DEFUN([MP_TAR_NO_SAME_OWNER],[
971        AC_PATH_PROG(TAR, [tar])
972        AC_PATH_PROG(GNUTAR, [gnutar])
973       
974        AC_MSG_CHECKING([for which tar variant to use])
975        AS_IF([test -n "$GNUTAR"], [TAR_CMD=$GNUTAR], [TAR_CMD=$TAR])
976        AC_MSG_RESULT([$TAR_CMD])
977        AC_SUBST(TAR_CMD)
978
979        AC_MSG_CHECKING([for $TAR_CMD --no-same-owner support])
980        [no_same_owner_support=`$TAR_CMD --help 2>&1 | grep no-same-owner`]
981        if test -z "$no_same_owner_support" ; then
982                AC_MSG_RESULT([no])
983        else
984                AC_MSG_RESULT([yes])
985                TAR_CMD="$TAR_CMD --no-same-owner"
986        fi
987])
988
989dnl This macro tests for GNU patch
990AC_DEFUN([MP_PATCH_GNU_VERSION],[
991        AC_PATH_PROG(PATCH, [patch])
992        AC_PATH_PROG(GNUPATCH, [gpatch])
993       
994        AC_MSG_CHECKING([for GNU (FSF) patch])
995        AS_IF([test -n "$GNUPATCH"], [PATCH_CMD=$GNUPATCH], [PATCH_CMD=$PATCH])
996        [fsf_version=`$PATCH_CMD --version 2>&1 | grep "Free Software Foundation"`]
997        if test -z "$fsf_version" ; then
998                AC_MSG_RESULT([none])
999        else
1000                AC_MSG_RESULT([$PATCH_CMD])
1001                GNUPATCH="$PATCH_CMD"
1002        fi
1003])
1004
1005#------------------------------------------------------------------------
1006# MP_CHECK_READLINK_IS_P1003_1A --
1007#
1008#       Check if readlink conforms to POSIX 1003.1a standard, define
1009#       READLINK_IS_NOT_P1003_1A if it doesn't.
1010#
1011# Arguments:
1012#       None.
1013#
1014# Requires:
1015#       None.
1016#
1017# Depends:
1018#               AC_LANG_PROGRAM
1019#
1020# Results:
1021#       Result is cached.
1022#
1023#       If readlink doesn't conform to POSIX 1003.1a, defines the following variables:
1024#               READLINK_IS_NOT_P1003_1A
1025#
1026#------------------------------------------------------------------------
1027AC_DEFUN(MP_CHECK_READLINK_IS_P1003_1A, [
1028        AC_MSG_CHECKING([if readlink conforms to POSIX 1003.1a])
1029
1030        AC_CACHE_VAL(mp_cv_readlink_is_posix_1003_1a, [
1031                AC_COMPILE_IFELSE([
1032                        AC_LANG_PROGRAM([
1033                                        #include <unistd.h>
1034                                        ssize_t readlink(const char *, char *, size_t);
1035                                ], [
1036                        ])
1037                        ], [
1038                                mp_cv_readlink_is_posix_1003_1a="yes"
1039                        ], [
1040                                mp_cv_readlink_is_posix_1003_1a="no"
1041                        ]
1042                )
1043        ])
1044
1045        AC_MSG_RESULT(${mp_cv_readlink_is_posix_1003_1a})
1046
1047        if test x"${mp_cv_readlink_is_posix_1003_1a}" = "xno"; then
1048                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)])
1049        fi
1050
1051        AC_SUBST(READLINK_IS_NOT_P1003_1A)
1052])
1053
1054#------------------------------------------------------------------------
1055# MP_WERROR --
1056#
1057#       Enable -Werror
1058#
1059# Arguments:
1060#       None.
1061#
1062# Requires:
1063#       none
1064#
1065# Depends:
1066#       none
1067#
1068# Results:
1069#       Substitutes WERROR_CFLAGS variable
1070#------------------------------------------------------------------------
1071AC_DEFUN([MP_WERROR],[
1072        AC_REQUIRE([AC_PROG_CC])
1073        AC_ARG_ENABLE(werror, AS_HELP_STRING([--enable-werror],[Add -Werror to CFLAGS. Used for development.]), [enable_werror=${enableval}], [enable_werror=no])
1074        if test x"$enable_werror" != "xno"; then
1075                CFLAGS_WERROR="-Werror"
1076        else
1077                CFLAGS_WERROR=""
1078        fi
1079        AC_SUBST([CFLAGS_WERROR])
1080])
1081
1082#------------------------------------------------------------------------
1083# MP_CHECK_SQLITE_VERSION --
1084#
1085#       Check for a specific SQLite version and execute commands depending on availability
1086#
1087# Arguments:
1088#       Required SQLite version for the test to succeed in the form of SQLITE_VERSION_NUMBER
1089#
1090# Requires:
1091#       MP_SQLITE3_FLAGS
1092#
1093# Depends:
1094#               AC_LANG_SOURCE
1095#
1096# Results:
1097#               Result is cached.
1098#
1099#       sets mp_sqlite_version_ge_$1 to yes or no
1100#
1101#------------------------------------------------------------------------
1102AC_DEFUN(MP_CHECK_SQLITE_VERSION, [
1103        AC_REQUIRE([MP_SQLITE3_FLAGS])
1104
1105        AC_MSG_CHECKING([for SQLite >= $1])
1106
1107        mp_check_sqlite_version_cppflags_save=$CPPFLAGS
1108        CPPFLAGS="$CPPFLAGS $CFLAGS_SQLITE3"
1109
1110        AC_CACHE_VAL(mp_cv_sqlite_version_defined, [
1111                AC_PREPROC_IFELSE(
1112                        [AC_LANG_SOURCE(
1113                                [[
1114                                        #include <sqlite3.h>
1115                                        #ifndef SQLITE_VERSION_NUMBER
1116                                        #  error "SQLITE_VERSION_NUMBER undefined"
1117                                        #endif
1118                                ]]
1119                        )],
1120                        [mp_cv_sqlite_version_defined="yes"],
1121                        [AC_MSG_ERROR("SQLITE_VERSION_NUMBER undefined or sqlite3.h not found")]
1122                )
1123        ])
1124
1125        if test x"${mp_cv_sqlite_version_defined}" = "xno"; then
1126                AC_MSG_RESULT([SQLite version not found])
1127                mp_sqlite_version_ge_$1="no"
1128        else
1129                AC_CACHE_VAL(mp_cv_sqlite_version_ge_$1, [
1130                        AC_PREPROC_IFELSE(
1131                                [AC_LANG_SOURCE(
1132                                        [[
1133                                                #include <sqlite3.h>
1134                                                #if (SQLITE_VERSION_NUMBER >= $1)
1135                                                /* Everything is fine */
1136                                                #else
1137                                                #  error "SQLite version too old"
1138                                                #endif
1139                                        ]]
1140                                )],
1141                                [mp_cv_sqlite_version_ge_$1="yes"],
1142                                [mp_cv_sqlite_version_ge_$1="no"]
1143                        )
1144                ])
1145
1146                AC_MSG_RESULT(${mp_cv_sqlite_version_ge_$1})
1147                mp_sqlite_version_ge_$1=${mp_cv_sqlite_version_ge_$1}
1148        fi
1149
1150        CPPFLAGS=$mp_check_sqlite_version_cppflags_save
1151])
1152
Note: See TracBrowser for help on using the repository browser.