source: trunk/base/aclocal.m4 @ 29188

Last change on this file since 29188 was 29127, checked in by afb@…, 12 years ago

autoconf sed extended regexp flag

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 23.1 KB
Line 
1builtin(include,tcl.m4)
2builtin(include,objc.m4)
3builtin(include,pthread.m4)
4builtin(include,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, [AC_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_INSTALLUSER
291#-------------------------------------------------
292AC_DEFUN([MP_CHECK_INSTALLUSER],[
293        dnl if with user specifies --with-install-user,
294        dnl use it. otherwise default to platform defaults
295        AC_REQUIRE([MP_PATH_MPCONFIGDIR])
296
297        AC_ARG_WITH(install-user, [AC_HELP_STRING([--with-install-user=USER], [Specify user ownership of installed files])], [ DSTUSR=$withval ] )
298       
299        AC_MSG_CHECKING([for install user])
300        if test "x$DSTUSR" = "x" ; then
301           DSTUSR=root
302        fi
303
304        AC_MSG_RESULT([$DSTUSR])
305        AC_SUBST(DSTUSR)
306])
307
308# MP_CHECK_INSTALLGROUP
309#-------------------------------------------------
310AC_DEFUN([MP_CHECK_INSTALLGROUP],[
311        dnl if with user specifies --with-install-group,
312        dnl use it. otherwise default to platform defaults
313        AC_REQUIRE([MP_CHECK_INSTALLUSER])
314
315        AC_ARG_WITH(install-group, [AC_HELP_STRING([--with-install-group=GROUP], [Specify group ownership of installed files])], [ DSTGRP=$withval ] )
316
317        AC_MSG_CHECKING([for install group])
318        if test "x$DSTGRP" = "x" ; then
319           
320           case $host_os in
321           darwin*)
322                DSTGRP="admin"
323                ;;
324           *)
325                DSTGRP="wheel"
326                ;;
327           esac
328        fi
329
330        AC_MSG_RESULT([$DSTGRP])
331        AC_SUBST(DSTGRP)
332])
333
334# MP_DIRECTORY_MODE
335#-------------------------------------------------
336AC_DEFUN([MP_DIRECTORY_MODE],[
337        dnl if with user specifies --with-directory-mode,
338        dnl use the specified permissions for ${prefix} directories
339        dnl otherwise use 0775
340        AC_REQUIRE([MP_PATH_MPCONFIGDIR])
341
342        AC_ARG_WITH(directory-mode, [AC_HELP_STRING([--with-directory-mode=MODE], [Specify directory mode of installed directories])], [ DSTMODE=$withval ] )
343       
344        AC_MSG_CHECKING([what permissions to use for installation directories])
345        if test "x$DSTMODE" = "x" ; then
346           DSTMODE=0775
347        fi
348
349        AC_MSG_RESULT([$DSTMODE])
350        AC_SUBST(DSTMODE)
351])
352
353# MP_LIB_MD5
354#---------------------------------------
355# Check for an md5 implementation
356AC_DEFUN([MP_LIB_MD5],[
357
358        # Check for libmd, which is prefered
359        AC_CHECK_LIB([md], [MD5Update],[
360                AC_CHECK_HEADERS([md5.h], ,[
361                        case $host_os in
362                                darwin*)       
363                                        AC_MSG_NOTICE([Please install the BSD SDK package from the Xcode Developer Tools CD.])
364                                        ;;
365                                *)     
366                                        AC_MSG_NOTICE([Please install the libmd developer headers for your platform.])
367                                        ;;
368                        esac
369                        AC_MSG_ERROR([libmd was found, but md5.h is missing.])
370                ])
371                AC_DEFINE([HAVE_LIBMD], ,[Define if you have the `md' library (-lmd).])
372                MD5_LIBS="-lmd"]
373        )
374        if test "x$MD5_LIBS" = "x" ; then
375                # If libmd is not found, check for libcrypto from OpenSSL
376                AC_CHECK_LIB([crypto], [MD5_Update],[
377                        AC_CHECK_HEADERS([openssl/md5.h],,[
378                                case $host_os in
379                                        darwin*)       
380                                        AC_MSG_NOTICE([Please install the BSD SDK package from the Xcode Developer Tools CD.])
381                                                ;;
382                                        *)     
383                                        AC_MSG_NOTICE([Please install the libmd developer headers for your platform.])
384                                                ;;
385                                esac
386                                AC_MSG_ERROR([libcrypt was found, but header file openssl/md5.h is missing.])
387                        ])
388                        AC_DEFINE([HAVE_LIBCRYPTO],,[Define if you have the `crypto' library (-lcrypto).])
389                        MD5_LIBS="-lcrypto"
390                ], [
391                        AC_MSG_ERROR([Neither OpenSSL or libmd were found. A working md5 implementation is required.])
392                ])
393        fi
394        if test "x$MD5_LIBS" = "x"; then
395                AC_MSG_ERROR([Neither OpenSSL or libmd were found. A working md5 implementation is required.])
396        fi
397        AC_SUBST([MD5_LIBS])
398])
399
400dnl This macro checks for X11 presence. If the libraries are
401dnl present, so must the headers be. If nothing is present,
402dnl print a warning
403
404# MP_CHECK_X11
405# ---------------------
406AC_DEFUN([MP_CHECK_X11], [
407
408        AC_PATH_XTRA
409
410        # Check for libX11
411        AC_CHECK_LIB([X11], [XOpenDisplay],[
412                has_x_runtime=yes
413                ], [ has_x_runtime=no ], [-L/usr/X11R6/lib $X_LIBS])
414
415#       echo "------done---------"
416#       echo "x_includes=${x_includes}"
417#       echo "x_libraries=${x_libraries}"
418#       echo "no_x=${no_x}"
419#       echo "X_CFLAGS=${X_CFLAGS}"
420#       echo "X_LIBS=${X_LIBS}"
421#       echo "X_DISPLAY_MISSING=${X_DISPLAY_MISSING}"
422#       echo "has_x_runtime=${has_x_runtime}"
423#       echo "host_os=${host_os}"
424#       echo "------done---------"
425
426        state=
427
428        case "__${has_x_runtime}__${no_x}__" in
429                "__no__yes__")
430                # either the user said --without-x, or it was not found
431                # at all (runtime or headers)
432                        AC_MSG_WARN([X11 not available. You will not be able to use ports that use X11])
433                        state=0
434                        ;;
435                "__yes__yes__")
436                        state=1
437                        ;;
438                "__yes____")
439                        state=2
440                        ;;
441                *)
442                        state=3
443                        ;;
444        esac
445
446        case $host_os in
447                darwin*)       
448                        case $state in
449                                1)
450                                        cat <<EOF;
451Please install the X11 SDK packages from the
452Xcode Developer Tools CD
453EOF
454                                        AC_MSG_ERROR([Broken X11 install. No X11 headers])
455
456                                        ;;
457                                3)
458                                        cat <<EOF;
459Unknown configuration problem. Please install the X11 runtime
460and/or X11 SDK  packages from the Xcode Developer Tools CD
461EOF
462                                        AC_MSG_ERROR([Broken X11 install])
463                                        ;;
464                        esac
465                        ;;
466                *)     
467                        case $state in
468                                1)
469                                        cat <<EOF;
470Please install the X11 developer headers for your platform
471EOF
472                                        AC_MSG_ERROR([Broken X11 install. No X11 headers])
473
474                                        ;;
475                                3)
476                                        cat <<EOF;
477Unknown configuration problem. Please install the X11
478implementation for your platform
479EOF
480                                        AC_MSG_ERROR([Broken X11 install])
481                                        ;;
482                        esac
483                        ;;
484        esac
485
486])
487
488# MP_PROG_XAR
489#---------------------------------------
490AC_DEFUN([MP_PROG_XAR],[
491
492        AC_PATH_PROG([XAR], [xar], ,  [/usr/bin:/usr/sbin:/bin:/sbin])
493
494        if test "x$XAR" = "x" ; then
495                AC_CONFIG_SUBDIRS([src/programs/xar])
496                XAR='$(TOPSRCDIR)/src/programs/xar/xar'
497                REPLACEMENT_PROGS="$REPLACEMENT_PROGS xar"
498        fi
499
500        AC_SUBST(XAR)
501])
502
503# MP_PROG_DAEMONDO
504#---------------------------------------
505AC_DEFUN([MP_PROG_DAEMONDO],[
506        AC_REQUIRE([MP_CHECK_FRAMEWORK_COREFOUNDATION])
507        AC_REQUIRE([MP_CHECK_FRAMEWORK_SYSTEMCONFIGURATION])
508        AC_REQUIRE([MP_CHECK_FRAMEWORK_IOKIT])
509        AC_REQUIRE([MP_CHECK_FUNCTION_CFNOTIFICATIONCENTERGETDARWINNOTIFYCENTER])
510       
511    AC_MSG_CHECKING(for whether we will build daemondo)
512    result=no
513        case $host_os in
514        darwin*)
515                if test "x$mp_cv_have_framework_corefoundation" == "xyes" &&
516                   test "x$mp_cv_have_framework_systemconfiguration" == "xyes" &&
517                   test "x$mp_cv_have_framework_iokit" == "xyes" &&
518                   test "x$mp_cv_have_function_cfnotificationcentergetdarwinnotifycenter" == "xyes"; then
519                        result=yes
520                        EXTRA_PROGS="$EXTRA_PROGS daemondo"
521                        AC_CONFIG_FILES([src/programs/daemondo/Makefile])
522                fi
523                ;;
524        *)
525        esac
526        AC_MSG_RESULT(${result})
527])
528
529#------------------------------------------------------------------------
530# MP_TCL_PACKAGE_DIR --
531#
532#       Locate the correct directory for Tcl package installation
533#
534# Arguments:
535#       None.
536#
537# Requires:
538#       TCLVERSION must be set
539#       CYGPATH must be set
540#       TCLSH must be set
541#
542# Results:
543#
544#       Adds a --with-tclpackage switch to configure.
545#       Result is cached.
546#
547#       Substs the following vars:
548#               TCL_PACKAGE_DIR
549#------------------------------------------------------------------------
550
551AC_DEFUN(MP_TCL_PACKAGE_DIR, [
552    AC_MSG_CHECKING(for Tcl package directory)
553
554    AC_ARG_WITH(tclpackage, [  --with-tclpackage       Tcl package installation directory.], with_tclpackagedir=${withval})
555
556    if test x"${with_tclpackagedir}" != x ; then
557        ac_cv_c_tclpkgd=${with_tclpackagedir}
558    else
559        AC_CACHE_VAL(ac_cv_c_tclpkgd, [
560            # Use the value from --with-tclpackage, if it was given
561
562            if test x"${with_tclpackagedir}" != x ; then
563                echo "tclpackagedir"
564                ac_cv_c_tclpkgd=${with_tclpackagedir}
565            else
566                # On darwin we can do some intelligent guessing
567                case $host_os in
568                    darwin*)
569                        tcl_autopath=`echo 'puts -nonewline \$auto_path' | $TCLSH`
570                        for path in $tcl_autopath; do
571                            if test "$path" = "/Library/Tcl"; then
572                                ac_cv_c_tclpkgd="$path"
573                                break
574                            fi
575                            if test "$path" = "/System/Library/Tcl"; then
576                                if test -d "$path"; then
577                                    ac_cv_c_tclpkgd="$path"
578                                    break
579                                fi
580                            fi
581                        done
582                    ;;
583                esac
584                if test x"${ac_cv_c_tclpkgd}" = x ; then
585                    # Fudge a path from the first entry in the auto_path
586                    tcl_pkgpath=`echo 'puts -nonewline [[lindex \$auto_path 0]]' | $TCLSH`
587                    if test -d "$tcl_pkgpath"; then
588                        ac_cv_c_tclpkgd="$tcl_pkgpath"
589                    fi
590                    # If the first entry does not exist, do nothing
591                fi
592            fi
593        ])
594    fi
595
596    if test x"${ac_cv_c_tclpkgd}" = x ; then
597        AC_MSG_ERROR(Tcl package directory not found.  Please specify its location with --with-tclpackage)
598    else
599        AC_MSG_RESULT(${ac_cv_c_tclpkgd})
600    fi
601
602    # Convert to a native path and substitute into the output files.
603
604    PACKAGE_DIR_NATIVE=`${CYGPATH} ${ac_cv_c_tclpkgd}`
605
606    TCL_PACKAGE_DIR=${PACKAGE_DIR_NATIVE}
607
608    AC_SUBST(TCL_PACKAGE_DIR)
609])
610
611# MP_PROG_TCLSH
612#---------------------------------------
613AC_DEFUN([MP_PROG_TCLSH],[
614
615
616        case $host_os in
617                freebsd*)
618                        # FreeBSD installs a dummy tclsh (annoying)
619                        # Look for a real versioned tclsh with threads first
620                        # Look for a real versioned tclsh without threads second
621                        AC_PATH_PROG([TCLSH], [tclsh${TCL_VERSION}-threads tclsh${TCL_VERSION} tclsh])
622                        ;;
623                *)
624                        # Otherwise, look for a non-versioned tclsh
625                        AC_PATH_PROG([TCLSH], [tclsh tclsh${TCL_VERSION}])
626                        ;;
627        esac
628        if test "x$TCLSH" = "x" ; then
629                AC_MSG_ERROR([Could not find tclsh])
630        fi
631
632        AC_SUBST(TCLSH)
633])
634
635# MP_TCL_PACKAGE
636#       Determine if a Tcl package is present.
637#
638# Arguments:
639#       Package name (may include the version)
640#
641# Syntax:
642#   MP_TCL_PACKAGE (package, [action-if-found], [action-if-not-found])
643#
644# Requires:
645#       TCLSH must be set
646#
647# Results:
648#       Execute action-if-found or action-if-not-found
649#---------------------------------------
650AC_DEFUN([MP_TCL_PACKAGE],[
651        AC_MSG_CHECKING([for Tcl $1 package])
652        package_present=`echo 'if {[[catch {package require $1}]]} {puts -nonewline 0} else {puts -nonewline 1}' | $TCLSH`
653        AS_IF([test "$package_present" = "1"], [$2], [$3])[]
654])
655
656# MP_TCL_THREAD_SUPPORT
657#       Determine if thread support is available in tclsh.
658#
659# Arguments:
660#       None.
661#
662# Requires:
663#       TCLSH must be set
664#
665# Results:
666#   Fails if thread support isn't available.
667#---------------------------------------
668AC_DEFUN([MP_TCL_THREAD_SUPPORT],[
669        AC_MSG_CHECKING([whether tclsh was compiled with threads])
670        tcl_threadenabled=`echo 'puts -nonewline [[info exists tcl_platform(threaded)]]' | $TCLSH`
671        if test "$tcl_threadenabled" = "1" ; then
672                AC_MSG_RESULT([yes])
673        else
674                AC_MSG_RESULT([no])
675                AC_MSG_ERROR([tcl wasn't compiled with threads enabled])
676        fi
677])
678
679# MP_LIBCURL_FLAGS
680#       Sets the flags to compile with libcurl.
681#
682# Arguments:
683#       None.
684#
685# Requires:
686#   curl-config or user parameters to define the flags.
687#
688# Results:
689#   defines some help strings.
690#   sets CFLAGS_LIBCURL and LDFLAGS_LIBCURL
691#---------------------------------------
692AC_DEFUN([MP_LIBCURL_FLAGS],[
693        AC_ARG_WITH(curlprefix,
694                   [  --with-curlprefix       base directory for the cURL install '/usr', '/usr/local',...],
695                   [  curlprefix=$withval ])
696
697        if test "x$curlprefix" = "x"; then
698                AC_PATH_PROG([CURL_CONFIG], [curl-config])
699        else
700                AC_PATH_PROG([CURL_CONFIG], [curl-config], , [$curlprefix/bin])
701        fi
702
703        if test "x$CURL_CONFIG" = "x"; then
704                AC_MSG_ERROR([cannot find curl-config. Is libcurl installed?])
705        fi
706
707        CFLAGS_LIBCURL=$($CURL_CONFIG --cflags)
708        # Due to a bug in dist, --arch flags are improperly supplied by curl-config.
709        # Get rid of them.
710        LDFLAGS_LIBCURL=$($CURL_CONFIG --libs | [sed 's/-arch [A-Za-z0-9]* //g'])
711
712        AC_SUBST(CFLAGS_LIBCURL)
713        AC_SUBST(LDFLAGS_LIBCURL)
714])
715
716# MP_LIBCURL_VERSION
717#       Determine the version of libcurl.
718#
719# Arguments:
720#       None.
721#
722# Requires:
723#       CURL must be set (AC_PATH_PROG(CURL, [curl], []))
724#
725# Results:
726#   sets libcurl_version to "0" or some number
727#---------------------------------------
728AC_DEFUN([MP_LIBCURL_VERSION],[
729        if test "x$CURL" = "x"; then
730                libcurl_version="0"
731        else
732                AC_MSG_CHECKING([libcurl version])
733                libcurl_version=`$CURL -V | sed '2,$d' | awk '{print $ 2}' | sed -e 's/\.//g' -e 's/-.*//g'`
734                AC_MSG_RESULT([$libcurl_version])
735        fi
736])
737
738
739dnl This macro tests if the compiler supports GCC's
740dnl __attribute__ syntax for unused variables/parameters
741AC_DEFUN([MP_COMPILER_ATTRIBUTE_UNUSED], [
742        AC_MSG_CHECKING([how to mark unused variables])
743        AC_COMPILE_IFELSE(
744                [AC_LANG_SOURCE([[int a __attribute__ ((unused));]])],
745                [AC_DEFINE(UNUSED, [__attribute__((unused))], [Attribute to mark unused variables])],
746                [AC_DEFINE(UNUSED, [])])
747
748        AC_MSG_RESULT([])
749       
750])
751
752dnl This macro ensures MP installation prefix bin/sbin paths are NOT in PATH
753dnl for configure to prevent potential problems when base/ code is updated
754dnl and ports are installed that would match needed items.
755AC_DEFUN([MP_PATH_SCAN],[
756        oldprefix=$prefix
757        if test "x$prefix" = "xNONE" ; then
758                prefix=$ac_default_prefix
759        fi
760        oldPATH=$PATH
761        newPATH=
762        as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
763        for as_dir in $oldPATH
764        do
765                IFS=$as_save_IFS
766                if test "x$as_dir" != "x$prefix/bin" &&
767                        test "x$as_dir" != "x$prefix/sbin"; then
768                        if test -z "$newPATH"; then
769                                newPATH=$as_dir
770                        else
771                                newPATH=$newPATH$PATH_SEPARATOR$as_dir
772                        fi
773                fi
774        done
775        PATH=$newPATH; export PATH
776        prefix=$oldprefix
777])
778
779dnl This macro tests for sed support of -E (BSD) or -r (GNU)
780AC_DEFUN([MP_SED_EXTENDED_REGEXP],[
781        AC_PATH_PROG(SED, [sed])
782
783        if test "x$SED" = "x"; then
784                AC_MSG_ERROR([cannot find sed. Is sed installed?])
785        fi
786
787        AC_MSG_CHECKING([for which sed flag to use for extended regexp])
788        [bsd_sed_flag=`echo foo | $SED -E -e s/foo+/OK/ 2>&1 | grep OK`]
789        [gnu_sed_flag=`echo foo | $SED -r -e s/foo+/OK/ 2>&1 | grep OK`]
790        [any_sed_flag=`echo foo | $SED    -e s/foo+/OK/ 2>&1 | grep OK`]
791        if test "x$bsd_sed_flag" = "xOK" ; then
792                AC_MSG_RESULT([-E (BSD)])
793                SED_EXT=-E
794        elif test "x$gnu_sed_flag" = "xOK" ; then
795                AC_MSG_RESULT([-r (GNU)])
796                SED_EXT=-r
797        elif test "x$any_sed_flag" = "xOK" ; then
798                AC_MSG_RESULT([none])
799                SED_EXT=
800        else
801                AC_MSG_RESULT([no idea])
802                AC_MSG_ERROR([cannot determine flag to use for $SED])
803        fi
804        AC_SUBST(SED_EXT)
805])
806
807dnl This macro tests for tar support of --no-same-owner
808AC_DEFUN([MP_TAR_NO_SAME_OWNER],[
809        AC_PATH_PROG(TAR, [tar])
810        AC_PATH_PROG(GNUTAR, [gnutar])
811       
812        AC_MSG_CHECKING([for which tar variant to use])
813        AS_IF([test -n "$GNUTAR"], [TAR_CMD=$GNUTAR], [TAR_CMD=$TAR])
814        AC_MSG_RESULT([$TAR_CMD])
815        AC_SUBST(TAR_CMD)
816
817        AC_MSG_CHECKING([for $TAR_CMD --no-same-owner support])
818        [no_same_owner_support=`$TAR_CMD --help 2>&1 | grep no-same-owner`]
819        if test -z "$no_same_owner_support" ; then
820                AC_MSG_RESULT([no])
821        else
822                AC_MSG_RESULT([yes])
823                TAR_CMD="$TAR_CMD --no-same-owner"
824        fi
825])
826
827#------------------------------------------------------------------------
828# MP_CHECK_READLINK_IS_P1003_1A --
829#
830#       Check if readlink conforms to POSIX 1003.1a standard, define
831#       READLINK_IS_NOT_P1003_1A if it doesn't.
832#
833# Arguments:
834#       None.
835#
836# Requires:
837#       None.
838#
839# Depends:
840#               AC_LANG_PROGRAM
841#
842# Results:
843#       Result is cached.
844#
845#       If readlink doesn't conform to POSIX 1003.1a, defines the following variables:
846#               READLINK_IS_NOT_P1003_1A
847#
848#------------------------------------------------------------------------
849AC_DEFUN(MP_CHECK_READLINK_IS_P1003_1A, [
850        AC_MSG_CHECKING([if readlink conforms to POSIX 1003.1a])
851
852        AC_CACHE_VAL(mp_cv_readlink_is_posix_1003_1a, [
853                AC_COMPILE_IFELSE([
854                        AC_LANG_PROGRAM([
855                                        #include <unistd.h>
856                                        ssize_t readlink(const char *, char *, size_t);
857                                ], [
858                        ])
859                        ], [
860                                mp_cv_readlink_is_posix_1003_1a="yes"
861                        ], [
862                                mp_cv_readlink_is_posix_1003_1a="no"
863                        ]
864                )
865        ])
866
867        AC_MSG_RESULT(${mp_cv_readlink_is_posix_1003_1a})
868
869        if test x"${mp_cv_readlink_is_posix_1003_1a}" = "xno"; then
870                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)])
871        fi
872
873        AC_SUBST(READLINK_IS_NOT_P1003_1A)
874])
875
876#------------------------------------------------------------------------
877# MP_WERROR --
878#
879#       Enable -Werror
880#
881# Arguments:
882#       None.
883#
884# Requires:
885#       none
886#
887# Depends:
888#       none
889#
890# Results:
891#       Substitutes WERROR_CFLAGS variable
892#------------------------------------------------------------------------
893AC_DEFUN([MP_WERROR],[
894        AC_REQUIRE([AC_PROG_CC])
895        AC_ARG_ENABLE(werror, AC_HELP_STRING([--enable-werror], [Add -Werror to CFLAGS. Used for development.]), [enable_werror=${enableval}], [enable_werror=no])
896        if test x"$enable_werror" != "xno"; then
897                CFLAGS_WERROR="-Werror"
898        else
899                CFLAGS_WERROR=""
900        fi
901        AC_SUBST([CFLAGS_WERROR])
902])
Note: See TracBrowser for help on using the repository browser.