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))
323 AC_CHECK_HEADER(IOKit/pwr_mgt/IOPMLibPrivate.h,AC_DEFINE(HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H))
325 dnl Check for dynamic store function...
326 AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
328 dnl Check for new ColorSync APIs...
330 LIBS="$LIBS -framework ApplicationServices"
331 AC_CHECK_FUNCS(ColorSyncRegisterDevice)
334 dnl Check for the new membership functions in MacOSX 10.4...
335 AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
336 AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
337 AC_CHECK_FUNCS(mbr_uid_to_uuid)
339 dnl Check for the vproc_transaction_begin/end stuff...
340 AC_CHECK_FUNCS(vproc_transaction_begin)
342 dnl Need <dlfcn.h> header...
343 AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
345 dnl Check for notify_post support
346 AC_CHECK_HEADER(notify.h,AC_DEFINE(HAVE_NOTIFY_H))
347 AC_CHECK_FUNCS(notify_post)
349 dnl Check for Authorization Services support
350 AC_ARG_WITH(adminkey, [ --with-adminkey set the default SystemAuthKey value],
351 default_adminkey="$withval",
352 default_adminkey="default")
353 AC_ARG_WITH(operkey, [ --with-operkey set the default operator @AUTHKEY value],
354 default_operkey="$withval",
355 default_operkey="default")
357 AC_CHECK_HEADER(Security/Authorization.h, [
358 AC_DEFINE(HAVE_AUTHORIZATION_H)
360 if test "x$default_adminkey" != xdefault; then
361 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
362 elif grep -q system.print.operator /etc/authorization; then
363 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
365 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
368 if test "x$default_operkey" != xdefault; then
369 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
370 elif grep -q system.print.operator /etc/authorization; then
371 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
373 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
375 AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
377 dnl Check for sandbox/Seatbelt support
378 if test $uversion -ge 100; then
379 AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
384 AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
385 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
386 AC_SUBST(CUPS_SYSTEM_AUTHKEY)
387 AC_SUBST(LEGACY_BACKENDS)
389 dnl Check for build components
392 AC_ARG_WITH(components, [ --with-components set components to build:
393 - "all" (default) builds everything
394 - "core" builds libcups and ipptool],
395 COMPONENTS="$withval")
397 case "$COMPONENTS" in
399 BUILDDIRS="filter backend berkeley cgi-bin driver monitor notifier ppdc scheduler systemv conf data locale man doc examples templates"
403 BUILDDIRS="data locale"
407 AC_MSG_ERROR([Bad build component "$COMPONENT" specified!])
414 dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".