2 dnl "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $"
4 dnl Common configuration stuff for CUPS.
6 dnl Copyright 2007-2011 by Apple Inc.
7 dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
9 dnl These coded instructions, statements, and computer programs are the
10 dnl property of Apple Inc. and are protected by Federal copyright
11 dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
12 dnl which should have been included with this file. If this file is
13 dnl file is missing or damaged, see the license at "http://www.cups.org/".
16 dnl We need at least autoconf 2.60...
19 dnl Set the name of the config header file...
20 AC_CONFIG_HEADER(config.h)
22 dnl Version number information...
25 #if test -z "$CUPS_REVISION" -a -d .svn; then
26 # CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
28 CUPS_BUILD="cups-$CUPS_VERSION"
30 AC_ARG_WITH(cups_build, [ --with-cups-build set "cups-config --build" string ],
31 CUPS_BUILD="$withval")
33 AC_SUBST(CUPS_VERSION)
34 AC_SUBST(CUPS_REVISION)
36 AC_DEFINE_UNQUOTED(CUPS_SVERSION, "CUPS v$CUPS_VERSION$CUPS_REVISION")
37 AC_DEFINE_UNQUOTED(CUPS_MINIMAL, "CUPS/$CUPS_VERSION$CUPS_REVISION")
39 dnl Default compiler flags...
41 CPPFLAGS="${CPPFLAGS:=}"
42 CXXFLAGS="${CXXFLAGS:=}"
43 LDFLAGS="${LDFLAGS:=}"
45 dnl Checks for programs...
52 AC_PATH_PROG(CHMOD,chmod)
53 AC_PATH_PROG(HTMLDOC,htmldoc)
58 AC_PATH_PROG(RMDIR,rmdir)
60 AC_PATH_PROG(XDGOPEN,xdg-open)
61 if test "x$XDGOPEN" = x; then
62 CUPS_HTMLVIEW="htmlview"
64 CUPS_HTMLVIEW="$XDGOPEN"
66 AC_SUBST(CUPS_HTMLVIEW)
68 AC_MSG_CHECKING(for install-sh script)
69 INSTALL="`pwd`/install-sh"
71 AC_MSG_RESULT(using $INSTALL)
73 if test "x$AR" = x; then
74 AC_MSG_ERROR([Unable to find required library archive command.])
76 if test "x$CC" = x; then
77 AC_MSG_ERROR([Unable to find required C compiler command.])
80 dnl Static library option...
82 AC_ARG_ENABLE(static, [ --enable-static install static libraries])
84 if test x$enable_static = xyes; then
85 echo Installing static libraries...
86 INSTALLSTATIC="installstatic"
89 AC_SUBST(INSTALLSTATIC)
91 dnl Check for pkg-config, which is used for some other tests later on...
92 AC_PATH_PROG(PKGCONFIG, pkg-config)
94 dnl Check for libraries...
95 AC_SEARCH_LIBS(crypt, crypt)
96 AC_SEARCH_LIBS(getspent, sec gen)
99 AC_ARG_ENABLE(mallinfo, [ --enable-mallinfo build with malloc debug logging])
101 if test x$enable_mallinfo = xyes; then
104 AC_SEARCH_LIBS(mallinfo, malloc, AC_DEFINE(HAVE_MALLINFO))
111 dnl Check for libpaper support...
112 AC_ARG_ENABLE(libpaper, [ --enable-libpaper build with libpaper support])
114 if test x$enable_libpaper = xyes; then
115 AC_CHECK_LIB(paper,systempapername,
116 AC_DEFINE(HAVE_LIBPAPER)
124 dnl Checks for header files.
126 AC_CHECK_HEADER(crypt.h,AC_DEFINE(HAVE_CRYPT_H))
127 AC_CHECK_HEADER(langinfo.h,AC_DEFINE(HAVE_LANGINFO_H))
128 AC_CHECK_HEADER(malloc.h,AC_DEFINE(HAVE_MALLOC_H))
129 AC_CHECK_HEADER(shadow.h,AC_DEFINE(HAVE_SHADOW_H))
130 AC_CHECK_HEADER(string.h,AC_DEFINE(HAVE_STRING_H))
131 AC_CHECK_HEADER(strings.h,AC_DEFINE(HAVE_STRINGS_H))
132 AC_CHECK_HEADER(bstring.h,AC_DEFINE(HAVE_BSTRING_H))
133 AC_CHECK_HEADER(usersec.h,AC_DEFINE(HAVE_USERSEC_H))
134 AC_CHECK_HEADER(sys/ioctl.h,AC_DEFINE(HAVE_SYS_IOCTL_H))
135 AC_CHECK_HEADER(sys/param.h,AC_DEFINE(HAVE_SYS_PARAM_H))
136 AC_CHECK_HEADER(sys/ucred.h,AC_DEFINE(HAVE_SYS_UCRED_H))
137 AC_CHECK_HEADER(scsi/sg.h,AC_DEFINE(HAVE_SCSI_SG_H))
139 dnl Checks for iconv.h and iconv_open
140 AC_CHECK_HEADER(iconv.h,
143 AC_SEARCH_LIBS(iconv_open,iconv,
144 AC_DEFINE(HAVE_ICONV_H)
145 SAVELIBS="$SAVELIBS $LIBS")
148 dnl Checks for statfs and its many headers...
149 AC_CHECK_HEADER(sys/mount.h,AC_DEFINE(HAVE_SYS_MOUNT_H))
150 AC_CHECK_HEADER(sys/statfs.h,AC_DEFINE(HAVE_SYS_STATFS_H))
151 AC_CHECK_HEADER(sys/statvfs.h,AC_DEFINE(HAVE_SYS_STATVFS_H))
152 AC_CHECK_HEADER(sys/vfs.h,AC_DEFINE(HAVE_SYS_VFS_H))
153 AC_CHECK_FUNCS(statfs statvfs)
155 dnl Checks for string functions.
156 AC_CHECK_FUNCS(strdup strlcat strlcpy)
157 if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then
158 echo Forcing snprintf emulation for HP-UX.
160 AC_CHECK_FUNCS(snprintf vsnprintf)
163 dnl Check for random number functions...
164 AC_CHECK_FUNCS(random lrand48 arc4random)
166 dnl Check for geteuid function.
167 AC_CHECK_FUNCS(geteuid)
169 dnl Check for setpgid function.
170 AC_CHECK_FUNCS(setpgid)
172 dnl Check for vsyslog function.
173 AC_CHECK_FUNCS(vsyslog)
175 dnl Checks for signal functions.
178 # Do not use sigset on Linux or GNU HURD
181 # Use sigset on other platforms, if available
182 AC_CHECK_FUNCS(sigset)
186 AC_CHECK_FUNCS(sigaction)
188 dnl Checks for wait functions.
189 AC_CHECK_FUNCS(waitpid wait3)
191 dnl See if the tm structure has the tm_gmtoff member...
192 AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
193 AC_TRY_COMPILE([#include <time.h>],[struct tm t;
194 int o = t.tm_gmtoff;],
196 AC_DEFINE(HAVE_TM_GMTOFF),
199 dnl See if the stat structure has the st_gen member...
200 AC_MSG_CHECKING(for st_gen member in stat structure)
201 AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat t;
204 AC_DEFINE(HAVE_ST_GEN),
207 dnl See if we have the removefile(3) function for securely removing files
208 AC_CHECK_FUNCS(removefile)
210 dnl See if we have libusb...
211 AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
216 if test x$enable_libusb = xyes; then
218 elif test x$enable_libusb != xno -a $uname != Darwin; then
224 if test $check_libusb = yes; then
225 AC_CHECK_LIB(usb, usb_get_string_simple,[
226 AC_CHECK_HEADER(usb.h,
227 AC_DEFINE(HAVE_USB_H)
231 dnl See if we have libwrap for TCP wrappers support...
232 AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support])
237 if test x$enable_tcp_wrappers = xyes; then
238 AC_CHECK_LIB(wrap, hosts_access,[
239 AC_CHECK_HEADER(tcpd.h,
240 AC_DEFINE(HAVE_TCPD_H)
244 dnl Flags for "ar" command...
256 dnl Prep libraries specifically for cupsd and backends...
262 dnl See if we have POSIX ACL support...
265 AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
266 if test "x$enable_acl" != xno; then
267 AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
268 SERVERLIBS="$SERVERLIBS $LIBS"
272 dnl Check for DBUS support
273 if test -d /etc/dbus-1; then
274 DBUSDIR="/etc/dbus-1"
279 AC_ARG_ENABLE(dbus, [ --enable-dbus build with DBUS support])
280 AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
286 if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
287 AC_MSG_CHECKING(for DBUS)
288 if $PKGCONFIG --exists dbus-1; then
291 CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
292 SERVERLIBS="$SERVERLIBS `$PKGCONFIG --libs dbus-1`"
294 DBUS_NOTIFIERLIBS="`$PKGCONFIG --libs dbus-1`"
296 LIBS="$LIBS $DBUS_NOTIFIERLIBS"
297 AC_CHECK_FUNC(dbus_message_iter_init_append,
298 AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND))
306 AC_SUBST(DBUS_NOTIFIER)
307 AC_SUBST(DBUS_NOTIFIERLIBS)
309 dnl Extra platform-specific libraries...
310 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
311 CUPS_SYSTEM_AUTHKEY=""
313 LEGACY_BACKENDS="parallel"
318 BACKLIBS="$BACKLIBS -framework IOKit"
319 SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
320 LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
322 dnl Check for framework headers...
323 AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
324 AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
325 AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
326 AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
327 AC_CHECK_HEADER(IOKit/pwr_mgt/IOPMLibPrivate.h,AC_DEFINE(HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H))
329 dnl Check for dynamic store function...
330 AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
332 dnl Check for new ColorSync APIs...
334 LIBS="$LIBS -framework ApplicationServices"
335 AC_CHECK_FUNCS(ColorSyncRegisterDevice)
338 dnl Check for the new membership functions in MacOSX 10.4...
339 AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
340 AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
341 AC_CHECK_FUNCS(mbr_uid_to_uuid)
343 dnl Check for the vproc_transaction_begin/end stuff...
344 AC_CHECK_FUNCS(vproc_transaction_begin)
346 dnl Need <dlfcn.h> header...
347 AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
349 dnl Check for notify_post support
350 AC_CHECK_HEADER(notify.h,AC_DEFINE(HAVE_NOTIFY_H))
351 AC_CHECK_FUNCS(notify_post)
353 dnl Check for Authorization Services support
354 AC_ARG_WITH(adminkey, [ --with-adminkey set the default SystemAuthKey value],
355 default_adminkey="$withval",
356 default_adminkey="default")
357 AC_ARG_WITH(operkey, [ --with-operkey set the default operator @AUTHKEY value],
358 default_operkey="$withval",
359 default_operkey="default")
361 AC_CHECK_HEADER(Security/Authorization.h, [
362 AC_DEFINE(HAVE_AUTHORIZATION_H)
364 if test "x$default_adminkey" != xdefault; then
365 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
366 elif grep -q system.print.operator /etc/authorization; then
367 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
369 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
372 if test "x$default_operkey" != xdefault; then
373 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
374 elif grep -q system.print.operator /etc/authorization; then
375 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
377 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
379 AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
381 dnl Check for sandbox/Seatbelt support
382 if test $uversion -ge 100; then
383 AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
386 dnl Check for XPC support
387 AC_CHECK_HEADER(xpc/xpc.h,
389 INSTALLXPC="install-xpc")
393 AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
394 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
395 AC_SUBST(CUPS_SYSTEM_AUTHKEY)
397 AC_SUBST(LEGACY_BACKENDS)
399 dnl Check for build components
402 AC_ARG_WITH(components, [ --with-components set components to build:
403 - "all" (default) builds everything
404 - "core" builds libcups and ipptool],
405 COMPONENTS="$withval")
407 case "$COMPONENTS" in
409 BUILDDIRS="filter backend berkeley cgi-bin driver monitor notifier ppdc scheduler systemv conf data desktop locale man doc examples templates"
413 BUILDDIRS="data locale"
417 AC_MSG_ERROR([Bad build component "$COMPONENT" specified!])
424 dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".