source: trunk/base/aclocal.m4 @ 50734

Last change on this file since 50734 was 50734, checked in by toby@…, 11 years ago

more autoupdate; update regen.sh to enable all autoconf warnings

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