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 strcasecmp strncasecmp 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 vsyslog function.
170 AC_CHECK_FUNCS(vsyslog)
172 dnl Checks for signal functions.
175 # Do not use sigset on Linux or GNU HURD
178 # Use sigset on other platforms, if available
179 AC_CHECK_FUNCS(sigset)
183 AC_CHECK_FUNCS(sigaction)
185 dnl Checks for wait functions.
186 AC_CHECK_FUNCS(waitpid wait3)
188 dnl See if the tm structure has the tm_gmtoff member...
189 AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
190 AC_TRY_COMPILE([#include <time.h>],[struct tm t;
191 int o = t.tm_gmtoff;],
193 AC_DEFINE(HAVE_TM_GMTOFF),
196 dnl See if the stat structure has the st_gen member...
197 AC_MSG_CHECKING(for st_gen member in stat structure)
198 AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat t;
201 AC_DEFINE(HAVE_ST_GEN),
204 dnl See if we have the removefile(3) function for securely removing files
205 AC_CHECK_FUNCS(removefile)
207 dnl See if we have libusb...
208 AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
213 if test x$enable_libusb = xyes; then
215 elif test x$enable_libusb != xno -a $uname != Darwin; then
221 if test $check_libusb = yes; then
222 AC_CHECK_LIB(usb, usb_get_string_simple,[
223 AC_CHECK_HEADER(usb.h,
224 AC_DEFINE(HAVE_USB_H)
228 dnl See if we have libwrap for TCP wrappers support...
229 AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support])
234 if test x$enable_tcp_wrappers = xyes; then
235 AC_CHECK_LIB(wrap, hosts_access,[
236 AC_CHECK_HEADER(tcpd.h,
237 AC_DEFINE(HAVE_TCPD_H)
241 dnl Flags for "ar" command...
253 dnl Prep libraries specifically for cupsd and backends...
259 dnl See if we have POSIX ACL support...
262 AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
263 if test "x$enable_acl" != xno; then
264 AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
265 SERVERLIBS="$SERVERLIBS $LIBS"
269 dnl Check for DBUS support
270 if test -d /etc/dbus-1; then
271 DBUSDIR="/etc/dbus-1"
276 AC_ARG_ENABLE(dbus, [ --enable-dbus build with DBUS support])
277 AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
283 if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
284 AC_MSG_CHECKING(for DBUS)
285 if $PKGCONFIG --exists dbus-1; then
288 CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
289 SERVERLIBS="$SERVERLIBS `$PKGCONFIG --libs dbus-1`"
291 DBUS_NOTIFIERLIBS="`$PKGCONFIG --libs dbus-1`"
293 LIBS="$LIBS $DBUS_NOTIFIERLIBS"
294 AC_CHECK_FUNC(dbus_message_iter_init_append,
295 AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND))
303 AC_SUBST(DBUS_NOTIFIER)
304 AC_SUBST(DBUS_NOTIFIERLIBS)
306 dnl Extra platform-specific libraries...
307 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
308 CUPS_SYSTEM_AUTHKEY=""
309 LEGACY_BACKENDS="parallel"
314 BACKLIBS="$BACKLIBS -framework IOKit"
315 SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
316 LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
318 dnl Check for framework headers...
319 AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
320 AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
321 AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
322 AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
324 dnl Check for dynamic store function...
325 AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
327 dnl Check for new ColorSync APIs...
329 LIBS="$LIBS -framework ApplicationServices"
330 AC_CHECK_FUNCS(ColorSyncRegisterDevice)
333 dnl Check for the new membership functions in MacOSX 10.4...
334 AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
335 AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
336 AC_CHECK_FUNCS(mbr_uid_to_uuid)
338 dnl Check for the vproc_transaction_begin/end stuff...
339 AC_CHECK_FUNCS(vproc_transaction_begin)
341 dnl Need <dlfcn.h> header...
342 AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
344 dnl Check for notify_post support
345 AC_CHECK_HEADER(notify.h,AC_DEFINE(HAVE_NOTIFY_H))
346 AC_CHECK_FUNCS(notify_post)
348 dnl Check for Authorization Services support
349 AC_ARG_WITH(adminkey, [ --with-adminkey set the default SystemAuthKey value],
350 default_adminkey="$withval",
351 default_adminkey="default")
352 AC_ARG_WITH(operkey, [ --with-operkey set the default operator @AUTHKEY value],
353 default_operkey="$withval",
354 default_operkey="default")
356 AC_CHECK_HEADER(Security/Authorization.h, [
357 AC_DEFINE(HAVE_AUTHORIZATION_H)
359 if test "x$default_adminkey" != xdefault; then
360 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
361 elif grep -q system.print.operator /etc/authorization; then
362 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
364 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
367 if test "x$default_operkey" != xdefault; then
368 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
369 elif grep -q system.print.operator /etc/authorization; then
370 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
372 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
374 AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
376 dnl Check for sandbox/Seatbelt support
377 if test $uversion -ge 100; then
378 AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
383 AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
384 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
385 AC_SUBST(CUPS_SYSTEM_AUTHKEY)
386 AC_SUBST(LEGACY_BACKENDS)
388 dnl Check for build components
391 AC_ARG_WITH(components, [ --with-components set components to build:
392 - "all" (default) builds everything
393 - "core" builds libcups and ipptool],
394 COMPONENTS="$withval")
396 case "$COMPONENTS" in
398 BUILDDIRS="filter backend berkeley cgi-bin driver monitor notifier ppdc scheduler systemv conf data locale man doc examples templates"
402 BUILDDIRS="data locale"
406 AC_MSG_ERROR([Bad build component "$COMPONENT" specified!])
413 dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".