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(fmod, m)
96 AC_SEARCH_LIBS(crypt, crypt)
97 AC_SEARCH_LIBS(getspent, sec gen)
100 AC_ARG_ENABLE(mallinfo, [ --enable-mallinfo build with malloc debug logging])
102 if test x$enable_mallinfo = xyes; then
105 AC_SEARCH_LIBS(mallinfo, malloc, AC_DEFINE(HAVE_MALLINFO))
112 dnl Check for libpaper support...
113 AC_ARG_ENABLE(libpaper, [ --enable-libpaper build with libpaper support])
115 if test x$enable_libpaper = xyes; then
116 AC_CHECK_LIB(paper,systempapername,
117 AC_DEFINE(HAVE_LIBPAPER)
125 dnl Checks for header files.
127 AC_CHECK_HEADER(stdlib.h,AC_DEFINE(HAVE_STDLIB_H))
128 AC_CHECK_HEADER(crypt.h,AC_DEFINE(HAVE_CRYPT_H))
129 AC_CHECK_HEADER(langinfo.h,AC_DEFINE(HAVE_LANGINFO_H))
130 AC_CHECK_HEADER(malloc.h,AC_DEFINE(HAVE_MALLOC_H))
131 AC_CHECK_HEADER(shadow.h,AC_DEFINE(HAVE_SHADOW_H))
132 AC_CHECK_HEADER(string.h,AC_DEFINE(HAVE_STRING_H))
133 AC_CHECK_HEADER(strings.h,AC_DEFINE(HAVE_STRINGS_H))
134 AC_CHECK_HEADER(bstring.h,AC_DEFINE(HAVE_BSTRING_H))
135 AC_CHECK_HEADER(usersec.h,AC_DEFINE(HAVE_USERSEC_H))
136 AC_CHECK_HEADER(sys/ioctl.h,AC_DEFINE(HAVE_SYS_IOCTL_H))
137 AC_CHECK_HEADER(sys/param.h,AC_DEFINE(HAVE_SYS_PARAM_H))
138 AC_CHECK_HEADER(sys/ucred.h,AC_DEFINE(HAVE_SYS_UCRED_H))
139 AC_CHECK_HEADER(scsi/sg.h,AC_DEFINE(HAVE_SCSI_SG_H))
141 dnl Checks for iconv.h and iconv_open
142 AC_CHECK_HEADER(iconv.h,
145 AC_SEARCH_LIBS(iconv_open,iconv,
146 AC_DEFINE(HAVE_ICONV_H)
147 SAVELIBS="$SAVELIBS $LIBS")
150 dnl Checks for statfs and its many headers...
151 AC_CHECK_HEADER(sys/mount.h,AC_DEFINE(HAVE_SYS_MOUNT_H))
152 AC_CHECK_HEADER(sys/statfs.h,AC_DEFINE(HAVE_SYS_STATFS_H))
153 AC_CHECK_HEADER(sys/statvfs.h,AC_DEFINE(HAVE_SYS_STATVFS_H))
154 AC_CHECK_HEADER(sys/vfs.h,AC_DEFINE(HAVE_SYS_VFS_H))
155 AC_CHECK_FUNCS(statfs statvfs)
157 dnl Checks for string functions.
158 AC_CHECK_FUNCS(strdup strlcat strlcpy)
159 if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then
160 echo Forcing snprintf emulation for HP-UX.
162 AC_CHECK_FUNCS(snprintf vsnprintf)
165 dnl Check for random number functions...
166 AC_CHECK_FUNCS(random lrand48 arc4random)
168 dnl Check for geteuid function.
169 AC_CHECK_FUNCS(geteuid)
171 dnl Check for setpgid function.
172 AC_CHECK_FUNCS(setpgid)
174 dnl Check for vsyslog function.
175 AC_CHECK_FUNCS(vsyslog)
177 dnl Checks for signal functions.
180 # Do not use sigset on Linux or GNU HURD
183 # Use sigset on other platforms, if available
184 AC_CHECK_FUNCS(sigset)
188 AC_CHECK_FUNCS(sigaction)
190 dnl Checks for wait functions.
191 AC_CHECK_FUNCS(waitpid wait3)
193 dnl See if the tm structure has the tm_gmtoff member...
194 AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
195 AC_TRY_COMPILE([#include <time.h>],[struct tm t;
196 int o = t.tm_gmtoff;],
198 AC_DEFINE(HAVE_TM_GMTOFF),
201 dnl See if the stat structure has the st_gen member...
202 AC_MSG_CHECKING(for st_gen member in stat structure)
203 AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat t;
206 AC_DEFINE(HAVE_ST_GEN),
209 dnl See if we have the removefile(3) function for securely removing files
210 AC_CHECK_FUNCS(removefile)
212 dnl See if we have libusb...
213 AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
218 if test x$enable_libusb = xyes; then
220 elif test x$enable_libusb != xno -a $uname != Darwin; then
226 if test $check_libusb = yes; then
227 AC_CHECK_LIB(usb, usb_get_string_simple,[
228 AC_CHECK_HEADER(usb.h,
229 AC_DEFINE(HAVE_USB_H)
233 dnl See if we have libwrap for TCP wrappers support...
234 AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support])
239 if test x$enable_tcp_wrappers = xyes; then
240 AC_CHECK_LIB(wrap, hosts_access,[
241 AC_CHECK_HEADER(tcpd.h,
242 AC_DEFINE(HAVE_TCPD_H)
248 AC_CHECK_HEADER(zlib.h,
249 AC_CHECK_LIB(z, gzgets,
255 dnl Flags for "ar" command...
267 dnl Prep libraries specifically for cupsd and backends...
273 dnl See if we have POSIX ACL support...
276 AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
277 if test "x$enable_acl" != xno; then
278 AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
279 SERVERLIBS="$SERVERLIBS $LIBS"
283 dnl Check for DBUS support
284 if test -d /etc/dbus-1; then
285 DBUSDIR="/etc/dbus-1"
290 AC_ARG_ENABLE(dbus, [ --enable-dbus build with DBUS support])
291 AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
297 if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
298 AC_MSG_CHECKING(for DBUS)
299 if $PKGCONFIG --exists dbus-1; then
302 CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
303 SERVERLIBS="$SERVERLIBS `$PKGCONFIG --libs dbus-1`"
305 DBUS_NOTIFIERLIBS="`$PKGCONFIG --libs dbus-1`"
307 LIBS="$LIBS $DBUS_NOTIFIERLIBS"
308 AC_CHECK_FUNC(dbus_message_iter_init_append,
309 AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND))
317 AC_SUBST(DBUS_NOTIFIER)
318 AC_SUBST(DBUS_NOTIFIERLIBS)
320 dnl Extra platform-specific libraries...
321 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
322 CUPS_SYSTEM_AUTHKEY=""
327 BACKLIBS="$BACKLIBS -framework IOKit"
328 SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
329 LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
331 dnl Check for framework headers...
332 AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
333 AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
334 AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
335 AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
336 AC_CHECK_HEADER(IOKit/pwr_mgt/IOPMLibPrivate.h,AC_DEFINE(HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H))
338 dnl Check for dynamic store function...
339 AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
341 dnl Check for new ColorSync APIs...
343 LIBS="$LIBS -framework ApplicationServices"
344 AC_CHECK_FUNCS(ColorSyncRegisterDevice)
347 dnl Check for the new membership functions in MacOSX 10.4...
348 AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
349 AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
350 AC_CHECK_FUNCS(mbr_uid_to_uuid)
352 dnl Check for the vproc_transaction_begin/end stuff...
353 AC_CHECK_FUNCS(vproc_transaction_begin)
355 dnl Need <dlfcn.h> header...
356 AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
358 dnl Check for notify_post support
359 AC_CHECK_HEADER(notify.h,AC_DEFINE(HAVE_NOTIFY_H))
360 AC_CHECK_FUNCS(notify_post)
362 dnl Check for Authorization Services support
363 AC_ARG_WITH(adminkey, [ --with-adminkey set the default SystemAuthKey value],
364 default_adminkey="$withval",
365 default_adminkey="default")
366 AC_ARG_WITH(operkey, [ --with-operkey set the default operator @AUTHKEY value],
367 default_operkey="$withval",
368 default_operkey="default")
370 AC_CHECK_HEADER(Security/Authorization.h, [
371 AC_DEFINE(HAVE_AUTHORIZATION_H)
373 if test "x$default_adminkey" != xdefault; then
374 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
375 elif grep -q system.print.operator /etc/authorization; then
376 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
378 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
381 if test "x$default_operkey" != xdefault; then
382 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
383 elif grep -q system.print.operator /etc/authorization; then
384 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
386 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
388 AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
390 dnl Check for sandbox/Seatbelt support
391 if test $uversion -ge 100; then
392 AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
395 dnl Check for XPC support
396 AC_CHECK_HEADER(xpc/xpc.h,
398 INSTALLXPC="install-xpc")
402 AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
403 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
404 AC_SUBST(CUPS_SYSTEM_AUTHKEY)
407 dnl Check for build components
410 AC_ARG_WITH(components, [ --with-components set components to build:
411 - "all" (default) builds everything
412 - "core" builds libcups and ipptool],
413 COMPONENTS="$withval")
415 case "$COMPONENTS" in
417 BUILDDIRS="filter backend berkeley cgi-bin monitor notifier ppdc scheduler systemv conf data desktop locale man doc examples templates"
421 BUILDDIRS="data locale"
425 AC_MSG_ERROR([Bad build component "$COMPONENT" specified!])
432 dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".