1 dnl $Id: configure.in,v 1.167 2002-09-28 03:56:44 jmarcus Exp $
2 dnl configure.in for netatalk
4 AC_INIT(bin/adv1tov2/adv1tov2.c)
6 NETATALK_VERSION=`cat $srcdir/VERSION`
7 AC_SUBST(NETATALK_VERSION)
10 AM_INIT_AUTOMAKE(netatalk, ${NETATALK_VERSION})
11 AM_CONFIG_HEADER(config.h)
13 dnl Checks for programs.
25 dnl *********************************************************************
26 dnl FIXME! FIXME! These should be selectable properly, and should produce
27 dnl the proper flags and defines...
28 dnl *********************************************************************
30 dnl Checks for libraries.
31 dnl Replace `main' with a function in -labs:
32 AC_CHECK_LIB(abs, main)
33 dnl Replace `main' with a function in -laudit:
34 AC_CHECK_LIB(audit, main)
35 dnl Replace `main' with a function in -lauth:
36 AC_CHECK_LIB(auth, main)
37 dnl Replace `main' with a function in -lcmd:
38 AC_CHECK_LIB(cmd, main)
39 dnl Replace `main' with a function in -lcrypt:
40 AC_CHECK_LIB(crypt, main)
41 dnl Replace `main' with a function in -ld:
43 dnl Replace `main' with a function in -ldl:
44 AC_CHECK_LIB(dl, main)
45 dnl Replace `main' with a function in -lkauth:
46 AC_CHECK_LIB(kauth, main)
47 dnl Replace `main' with a function in -lkrb:
48 AC_CHECK_LIB(krb, main)
49 dnl Replace `main' with a function in -llwp:
50 AC_CHECK_LIB(lwp, main)
51 dnl Replace `main' with a function in -ln:
53 dnl Replace `main' with a function in -lnsl:
54 AC_CHECK_LIB(nsl, main)
55 dnl Replace `main' with a function in -lprot:
56 AC_CHECK_LIB(prot, main)
57 dnl Replace `main' with a function in -lrx:
58 AC_CHECK_LIB(rx, main)
59 dnl Replace `main' with a function in -lrxkad:
60 AC_CHECK_LIB(rxkad, main)
61 dnl Replace `main' with a function in -lsocket:
62 AC_CHECK_LIB(socket, main)
63 dnl Replace `main' with a function in -lsys:
64 AC_CHECK_LIB(sys, main)
65 dnl Replace `main' with a function in -lubik:
66 AC_CHECK_LIB(ubik, main)
69 # Check presence of some functions
71 # Check for XPG4 access() function
72 # Be sure to test before adding AFS libs in LIBS path as AFS lib
73 # has such a function that works only on AFS filesystems.
74 AC_CHECK_FUNCS(access)
76 dnl Checks for header files.
80 AC_CHECK_HEADERS(fcntl.h limits.h stdint.h strings.h sys/fcntl.h sys/file.h sys/ioctl.h sys/time.h sys/mnttab.h sys/statvfs.h sys/stat.h sys/vfs.h mntent.h syslog.h unistd.h termios.h sys/termios.h netdb.h sgtty.h ufs/quota.h mount.h sys/mount.h statfs.h sys/types.h dlfcn.h errno.h sys/errno.h)
81 AC_CHECK_HEADER(sys/cdefs.h,,
82 AC_MSG_RESULT([enabling generic cdefs.h from tree])
83 CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS"
86 dnl Checks for typedefs, structures, and compiler characteristics.
98 dnl Checks for library functions.
100 AC_PROG_GCC_TRADITIONAL
107 AC_CHECK_FUNCS(flock getcwd gethostname gettimeofday getusershell mkdir rmdir select socket strdup strstr strtoul setpgrp strchr memcpy)
110 dnl Checks for (v)snprintf
111 NETATALK_SNPRINTF_CHECK
113 dnl --------------------------------------------------------------------------
114 dnl specific configuration comes in here:
115 dnl --------------------------------------------------------------------------
117 AC_DEFINE(ADMIN_GRP, 1)
119 AC_ARG_WITH(admin-group,
120 [ --disable-admin-group disable admin group],
121 if test "$enableval" = "no"; then
122 AC_DEFINE(ADMIN_GRP, 0)
123 AC_MSG_RESULT([disabling administrative group support])
132 [ --with-logfile=PATH path for file used by logger [/var/log/netatalk.log]
133 use --without-logfile to disable logger],
134 if test "$withval" = "no"; then
135 AC_DEFINE(DISABLE_LOGGER, 1)
136 AC_MSG_RESULT([logger disabled])
137 elif test "$withval" != "yes"; then
138 AC_DEFINE_UNQUOTED(LOGFILEPATH, "$withval")
139 AC_MSG_RESULT([logfile set to $withval])
141 AC_DEFINE_UNQUOTED(LOGFILEPATH, "/var/log/netatalk.log")
142 AC_MSG_RESULT([logfile set to default])
144 AC_DEFINE_UNQUOTED(LOGFILEPATH, "/var/log/netatalk.log")
145 AC_MSG_RESULT([logfile set to default])
148 AC_ARG_WITH(cracklib,
149 [ --with-cracklib=DICT enable/set location of cracklib dictionary],
150 if test "x$withval" != "xno" ; then
152 AC_CHECK_LIB(crack, main,
153 AC_DEFINE(USE_CRACKLIB)
155 AC_MSG_RESULT([enabling cracklib support])
156 if test "$cracklib" = "yes"; then
157 cracklib="/usr/lib/cracklib_dict"
159 AC_DEFINE_UNQUOTED(_PATH_CRACKLIB, "$cracklib",
160 [path to cracklib dictionary])
161 AC_MSG_RESULT([setting cracklib dictionary to $cracklib]),
162 AC_MSG_ERROR([cracklib not found!])
168 [ --disable-ddp disable DDP],
169 if test "$enableval" = "no"; then
171 AC_MSG_RESULT([disabling DDP])
176 [ --enable-debug enable debug code],
177 if test "$enableval" != "no"; then
178 if test "$enableval" = "yes"; then
181 AC_DEFINE_UNQUOTED(DEBUG, $enableval)
183 AC_MSG_RESULT([enabling debugging code])
188 dnl ----------- A NOTE ABOUT DROPKLUDGE
189 dnl The trouble with this fix is that if you know what the file is called, it
190 dnl can be read from the Unix side. That's okay for most academic institutions
191 dnl since the students don't have telnet access to the Mac servers. There is
192 dnl currently no one working on further development/fixes of DROPKLUDGE.
195 AC_ARG_ENABLE(dropkludge,
196 [ --enable-dropkludge enable the experimental dropbox fix (INSECURE!) ],
197 if test "$enableval" = "yes"; then
198 AC_DEFINE(DROPKLUDGE, 1)
199 AC_MSG_RESULT([enabling experimental dropbox support])
203 AC_ARG_ENABLE(force-uidgid,
204 [ --enable-force-uidgid allow forcing of uid/gid per volume (BROKEN) ],
205 if test "$enableval" = "yes"; then
206 AC_DEFINE(FORCE_UIDGID, 1)
207 AC_MSG_RESULT([enabling forcing of uid/gid per volume])
211 dnl Don't use DB3 unless it's needed
214 dnl Determine DID scheme
215 AC_MSG_CHECKING([for DID scheme to use])
217 [ --with-did=SCHEME set DID scheme (last,hash,mtab,cnid)],
218 [ did_scheme="$withval" ],
219 [ did_scheme="last" ]
222 if test "x$did_scheme" = "xlast"; then
223 AC_DEFINE(USE_LASTDID, 1)
224 AC_MSG_RESULT([last])
225 elif test "x$did_scheme" = "xhash"; then
226 AC_MSG_RESULT([device/inode-based hashing])
227 elif test "x$did_scheme" = "xmtab"; then
228 AC_DEFINE(DID_MTAB, 1)
229 AC_MSG_RESULT([mtab-based DID creation support])
230 elif test "x$did_scheme" = "xcnid"; then
232 AC_DEFINE(CNID_DB, 1)
233 AC_MSG_RESULT([enabling build with CNID DB support])
235 AC_MSG_ERROR([unknown DID scheme])
237 AM_CONDITIONAL(COMPILE_CNID, test "x$did_scheme" = "xcnid")
239 dnl Determine whether or not to use filename mangling
240 AC_MSG_CHECKING([whether or not to use filename mangling])
241 AC_ARG_WITH(mangling,
242 [ --with-mangling enable filename mangling],
243 if test "$withval" = "yes"; then
244 if test "x$did_scheme" != "xcnid"; then
245 AC_MSG_ERROR([DID scheme must be CNID to use filename mangling])
247 AC_DEFINE(FILE_MANGLING, 1)
253 , AC_MSG_RESULT([no])
256 dnl Determine whether or not to use CDB or transactional DB store
257 AC_MSG_CHECKING([whether or not to use CNID with Concurrent Data Store])
259 [ --with-cdb enable CNID with Concurrent Data Store],
260 if test "$withval" = "yes"; then
261 if test "x$did_scheme" != "xcnid"; then
262 AC_MSG_ERROR([DID scheme must be CNID to use CDB])
264 AC_DEFINE(CNID_DB_CDB, 1)
270 , AC_MSG_RESULT([no])
273 dnl Check for Berkeley DB3 library
274 if test "x$db3_required" = "xyes"; then
275 AC_PATH_DB3(, [AC_MSG_ERROR([Berkeley DB3 library not found!])])
278 dnl Check for quota support
281 dnl Check for optional server location protocol support (used by MacOS X)
284 dnl Check for PAM libs
286 PAPD_LIBS="$PAPD_LIBS $PAM_LIBS"
287 AFPD_LIBS="$AFPD_LIBS $PAM_LIBS"
293 AC_MSG_CHECKING([whether shadow support should be enabled])
295 [ --with-shadow enable shadow password support],
296 [shadowpw="$withval"],
299 if test "x$shadowpw" = "xyes"; then
302 AC_MSG_RESULT([$shadowpw])
304 AC_ARG_ENABLE(shell-check,
305 [ --disable-shell-check disable checking for a valid shell],
306 if test "$enableval" = "no"; then
307 AC_DEFINE(DISABLE_SHELLCHECK, 1)
308 AC_MSG_RESULT([disabling valid shell check])
312 AC_MSG_CHECKING([whether flock locks should be enabled])
313 AC_ARG_WITH(flock-locks,
314 [ --with-flock-locks enable flock locks support],
315 [flock_locks="$withval"],
318 if test "x$flock_locks" = "xyes"; then
319 AC_DEFINE(USE_FLOCK_LOCKS)
321 AC_MSG_RESULT([$flock_locks])
323 AC_ARG_WITH(tcp-wrappers,
324 [ --with-tcp-wrappers enable TCP wrappers support],
325 AC_CHECK_LIB(wrap, tcpd_warn,
327 AFPD_LIBS="$AFPD_LIBS -lwrap"
328 AC_MSG_RESULT([enabling TCP wrappers support])
332 AC_ARG_ENABLE(redhat,
333 [ --enable-redhat use redhat-style sysv configuration ],
334 if test "$enableval" = "yes"; then
337 AC_MSG_RESULT([enabling redhat-style sysv support])
341 [ --enable-suse use suse-style sysv configuration ],
342 if test "$enableval" = "yes"; then
345 AC_MSG_RESULT([enabling suse-style sysv support])
348 AC_ARG_ENABLE(cobalt,
349 [ --enable-cobalt use cobalt-style sysv configuration ],
350 if test "$enableval" = "yes"; then
353 AC_MSG_RESULT([enabling cobalt-style sysv support])
356 AC_ARG_ENABLE(netbsd,
357 [ --enable-netbsd use NetBSD-style rc.d configuration ],
358 if test "x$enableval" = "xyes"; then
361 AC_MSG_RESULT([enabling NetBSD-style rc.d support])
364 dnl ----- timelord compilation (disabled by default)
365 AC_MSG_CHECKING([whether timelord should be compiled])
367 AC_ARG_ENABLE(timelord,
368 [ --enable-timelord enable compilation of timelord server],
369 [compile_timelord="$enableval"],
370 [compile_timelord="no"]
372 AC_MSG_RESULT([$compile_timelord])
374 AC_ARG_WITH(uams-path,
375 [ --with-uams-path=PATH path to UAMs [[PKGCONF/uams]]],
376 uams_path="$withval",
377 uams_path="${PKGCONFDIR}/uams"
380 AC_ARG_WITH(catsearch,
381 [ --with-catsearch enable fpCatSearch functionality (experimental)],
382 if test "$withval" = "yes"; then
383 AC_DEFINE(WITH_CATSEARCH, 1)
387 dnl --------------------------------------------------------------------------
388 dnl FHS stuff has to be done last because it overrides other defaults
389 dnl --------------------------------------------------------------------------
392 [ --enable-fhs use Filesystem Hierarchy Standard (FHS) compatibility],
393 if test "$enableval" = "yes"; then
394 uams_path="/usr/lib/netatalk"
396 PKGCONFDIR=${sysconfdir}/netatalk
398 mandir="/usr/share/man"
399 AC_DEFINE(FHS_COMPATIBILITY)
401 AC_MSG_RESULT([enabling Filesystem Hierarchy Standard (FHS) compatibility])
404 dnl --------------------------------------------------------------------------
405 dnl post-FHS substitutions, etc
406 dnl --------------------------------------------------------------------------
409 AC_DEFINE_UNQUOTED(UAMS_PATH, "${uams_path}",
410 [path to UAMs [default=PKGCONF/uams]])
411 UAMS_PATH="${uams_path}"
414 dnl --------------------------------------------------------------------------
415 dnl drop in includes for top level directory structures here...
416 dnl --------------------------------------------------------------------------
418 dnl Note: $(top_srcdir)/include should be added before all other includes
419 dnl so that includes from that directory a preferred to includes from
420 dnl /usr/include or similar places.
421 LIBS="$LIBS -L\$(top_srcdir)/libatalk"
422 CFLAGS="-I\$(top_srcdir)/include $CFLAGS -I\$(top_srcdir)/sys"
424 dnl --------------------------------------------------------------------------
425 dnl specific configuration comes in here:
426 dnl --------------------------------------------------------------------------
428 dnl ac_cv_target_os is now host_os, ac_cv_target_cpu is now host_cpu
430 dnl --------------------- determine operating system from "target"
432 *aix*) this_os=aix ;;
433 *freebsd*) this_os=freebsd ;;
434 *hpux11*) this_os=hpux11 ;;
435 *irix*) this_os=irix ;;
436 *linux*) this_os=linux ;;
437 *osx*) this_os=macosx ;;
438 *darwin*) this_os=macosx ;;
439 *netbsd*) this_os=netbsd ;;
440 *openbsd*) this_os=openbsd ;;
441 *osf*) this_os=tru64 ;;
442 *solaris*) this_os=solaris ;;
446 i386|i486|i586|i686|k7) this_cpu=x86 ;;
447 alpha) this_cpu=alpha ;;
448 mips) this_cpu=mips ;;
449 powerpc|ppc) this_cpu=ppc ;;
452 dnl --------------------- operating system specific flags (port from sys/*)
454 dnl ----- AIX specific -----
455 if test x"$this_os" = "xaix"; then
456 AC_MSG_RESULT([ * AIX specific configuration])
457 AC_DEFINE(NO_STRUCT_TM_GMTOFF)
459 dnl This is probably a lie; AIX 4.3 supports a 64-bit long
460 dnl compilation environment. It's enough to get things defined
461 dnl right in endian.h provided that long long is supported, though.
462 AC_DEFINE(HAVE_32BIT_LONGS)
465 dnl ----- FreeBSD specific -----
466 if test x"$this_os" = "xfreebsd"; then
467 AC_MSG_RESULT([ * FreeBSD specific configuration])
469 AC_DEFINE(SENDFILE_FLAVOR_BSD)
471 AC_DEFINE(NO_CRYPT_H, 1)
474 dnl ----- HP-UX 11 specific -----
475 if test x"$this_os" = "xhpux11"; then
476 AC_MSG_RESULT([ * HP-UX 11 specific configuration])
478 AC_DEFINE(_ISOC9X_SOURCE)
479 AC_DEFINE(NO_STRUCT_TM_GMTOFF)
482 dnl ----- IRIX specific -----
483 if test x"$this_os" = "xirix"; then
484 AC_MSG_RESULT([ * IRIX specific configuration])
486 AC_DEFINE(NO_STRUCT_TM_GMTOFF)
489 dnl ----- Linux specific -----
490 if test x"$this_os" = "xlinux"; then
491 AC_MSG_RESULT([ * Linux specific configuration])
493 dnl ----- check if we need the quotactl wrapper
494 AC_CHECK_HEADERS(sys/quota.h linux/quota.h)
495 AC_CHECK_FUNC(quotactl,,
496 AC_DEFINE(NEED_QUOTACTL_WRAPPER)
497 AC_MSG_RESULT([enabling quotactl wrapper])
500 dnl ----- as far as I can tell, dbtob always does the wrong thing
501 dnl ----- on every single version of linux I've ever played with.
502 dnl ----- see etc/afpd/quota.c
503 AC_DEFINE(HAVE_BROKEN_DBTOB)
505 dnl --- added by Yoshinobu Ishizaki (2001.03.13) ---
506 dnl ----- check if version is newer than 2.2.x
508 majorvers="`uname -r | sed 's/\([0-9]\)..*/\1/'`"
509 minorvers="`uname -r | sed 's/[0-9]\.\([0-9]\)\..*/\1/'`"
510 if [ $majorvers -ge 2 ]; then
511 if [ $minorvers -ge 2 ]; then
513 AC_MSG_RESULT([ * found Linux 2.2.x or higher])
514 AC_DEFINE(SENDFILE_FLAVOR_LINUX)
516 AC_MSG_RESULT([ * found Linux 2.0.x ])
520 dnl ----- Linux/alpha specific -----
521 if test x"$this_cpu" = "xalpha"; then
522 AC_MSG_RESULT([enabling gcc memcpy bug workaround])
523 AC_DEFINE(HAVE_GCC_MEMCPY_BUG)
528 dnl ----- Mac OSX specific -----
529 if test x"$this_os" = "xmacosx"; then
530 AC_MSG_RESULT([ * Mac OSX specific configuration])
532 AC_DEFINE(HAVE_BROKEN_CPP)
533 AC_DEFINE(HAVE_2ARG_DBTOB)
534 dnl AC_DEFINE(NO_DLFCN_H)
535 AC_DEFINE(MACOSX_SERVER)
538 dnl ----- NetBSD specific -----
539 if test x"$this_os" = "xnetbsd"; then
540 AC_MSG_RESULT([ * NetBSD specific configuration])
542 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
543 # NetBSD ELF machines don't have to have DLSYM_PREPEND_UNDERSCORE.
544 # If this test is true, it's not an ELF box.
545 # This REALLY should be a configure test.
546 AC_DEFINE(DLSYM_PREPEND_UNDERSCORE)
548 CFLAGS="-I\$(top_srcdir)/sys/netbsd -I/usr/include/kerberosIV $CFLAGS"
551 dnl ----- NetBSD does not have crypt.h, uses unistd.h -----
552 AC_DEFINE(UAM_DHX, 1)
553 AC_DEFINE(NO_CRYPT_H, 1)
556 dnl ----- OpenBSD specific -----
557 if test x"$this_os" = "xopenbsd"; then
558 AC_MSG_RESULT([ * OpenBSD specific configuration])
560 AC_DEFINE(DLSYM_PREPEND_UNDERSCORE)
562 dnl ----- OpenBSD does not have crypt.h, uses unistd.h -----
563 AC_DEFINE(UAM_DHX, 1)
564 AC_DEFINE(NO_CRYPT_H, 1)
567 dnl ----- Solaris specific -----
568 if test x"$this_os" = "xsolaris"; then
569 AC_MSG_RESULT([ * Solaris specific configuration])
571 AC_DEFINE(_ISOC9X_SOURCE)
572 AC_DEFINE(NO_STRUCT_TM_GMTOFF)
574 CFLAGS="-I\$(top_srcdir)/sys/generic $CFLAGS"
577 AC_MSG_RESULT([enabling Solaris kernel module build])
581 dnl ----- Tru64 specific -----
582 if test x"$this_os" = "xtru64"; then
583 AC_MSG_RESULT([ * Tru64 specific configuration])
585 AC_DEFINE(HAVE_64BIT_LONGS)
586 dnl AC_DEFINE(USE_MOUNT_H)
587 AC_DEFINE(USE_OLD_RQUOTA)
588 dnl AC_DEFINE(USE_UFS_QUOTA_H)
590 AC_CHECK_LIB(security,set_auth_parameters)
591 CFLAGS="-I\$(top_srcdir)/sys/tru64 $CFLAGS"
596 dnl -- look for openssl
599 dnl --------------------- check for building PGP UAM module
601 AC_ARG_ENABLE(pgp-uam,
602 [ --enable-pgp-uam enable build of PGP UAM module],
603 if test "$enableval" = "yes"; then
604 if test "$compile_ssl" = "yes"; then
605 AC_DEFINE(UAM_PGP, 1)
607 AC_MSG_RESULT([enabling build with PGP UAM module])
612 dnl --------------------- check for building Kerberos v4 UAM module
614 AC_ARG_ENABLE(krb4-uam,
615 [ --enable-krb4-uam enable build of Kerberos v4 UAM module],
616 if test "$enableval" = "yes"; then
617 AC_DEFINE(UAM_KRB4, 1)
619 AC_MSG_RESULT([enabling build with Kerberos v4 UAM module])
622 dnl --------------------- overwrite the config files . . . or not.
624 AC_MSG_CHECKING([whether configuration files should be overwritten])
625 AC_ARG_ENABLE(overwrite,
626 [ --enable-overwrite overwrite configuration files during installation],
627 [OVERWRITE_CONFIG="${enable_overwrite}"],
628 [OVERWRITE_CONFIG="no"]
630 AC_MSG_RESULT([$OVERWRITE_CONFIG])
632 dnl --------------------- last minute substitutions
638 AC_SUBST(OVERWRITE_CONFIG)
640 AM_CONDITIONAL(SOLARIS_MODULE, test x$solaris_module = xyes)
641 AM_CONDITIONAL(COMPILE_TIMELORD, test x$compile_timelord = xyes)
642 AM_CONDITIONAL(USE_DHX, test x$compile_ssl = xyes)
643 AM_CONDITIONAL(USE_KERBEROS, test x$compile_kerberos = xyes)
644 AM_CONDITIONAL(USE_PAM_SO, test x$use_pam_so = xyes)
645 AM_CONDITIONAL(USE_PAM, test x$compile_pam = xyes)
646 AM_CONDITIONAL(BUILD_PAM, test x$compile_pam = xyes)
647 AM_CONDITIONAL(USE_PGP, test x$compile_pgp = xyes)
648 AM_CONDITIONAL(USE_COBALT, test x$sysv_style = xcobalt)
649 AM_CONDITIONAL(USE_NETBSD, test x$sysv_style = xnetbsd)
650 AM_CONDITIONAL(USE_REDHAT, test x$sysv_style = xredhat)
651 AM_CONDITIONAL(USE_SUSE, test x$sysv_style = xsuse)
652 AM_CONDITIONAL(USE_SHADOWPW, test x$shadowpw = xyes)
653 AM_CONDITIONAL(USE_TRU64, test x$sysv_style = xtru64)
655 dnl --------------------- generate files
659 bin/adv1tov2/Makefile
662 bin/afppasswd/Makefile
665 bin/getzones/Makefile
666 bin/megatron/Makefile
672 contrib/macusers/Makefile
673 contrib/macusers/macusers
676 contrib/printing/Makefile
677 contrib/shell_utils/Makefile
678 contrib/shell_utils/afpd-mtab.pl
679 contrib/shell_utils/apple_cp
680 contrib/shell_utils/apple_mv
681 contrib/shell_utils/apple_rm
682 contrib/shell_utils/cleanappledouble.pl
683 contrib/shell_utils/netatalkshorternamelinks.pl
684 contrib/timelord/Makefile
686 distrib/config/Makefile
687 distrib/config/netatalk-config
688 distrib/initscripts/Makefile
693 etc/afpd/nls/Makefile
696 etc/uams/uams_krb4/Makefile
700 include/atalk/Makefile
702 libatalk/adouble/Makefile
703 libatalk/asp/Makefile
704 libatalk/atp/Makefile
705 libatalk/cnid/Makefile
706 libatalk/compat/Makefile
707 libatalk/dsi/Makefile
708 libatalk/nbp/Makefile
709 libatalk/netddp/Makefile
710 libatalk/util/Makefile
720 sys/generic/sys/Makefile
721 sys/netatalk/Makefile
723 sys/netbsd/netatalk/Makefile
725 sys/solaris/Makefile.kernel
729 [chmod a+x distrib/config/netatalk-config contrib/shell_utils/apple_*]