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-2010 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 libraries...
92 AC_SEARCH_LIBS(crypt, crypt)
93 AC_SEARCH_LIBS(getspent, sec gen)
96 AC_ARG_ENABLE(mallinfo, [ --enable-mallinfo build with malloc debug logging])
98 if test x$enable_mallinfo = xyes; then
101 AC_SEARCH_LIBS(mallinfo, malloc, AC_DEFINE(HAVE_MALLINFO))
108 dnl Check for libpaper support...
109 AC_ARG_ENABLE(libpaper, [ --enable-libpaper build with libpaper support])
111 if test x$enable_libpaper = xyes; then
112 AC_CHECK_LIB(paper,systempapername,
113 AC_DEFINE(HAVE_LIBPAPER)
121 dnl Checks for header files.
123 AC_CHECK_HEADER(crypt.h,AC_DEFINE(HAVE_CRYPT_H))
124 AC_CHECK_HEADER(langinfo.h,AC_DEFINE(HAVE_LANGINFO_H))
125 AC_CHECK_HEADER(malloc.h,AC_DEFINE(HAVE_MALLOC_H))
126 AC_CHECK_HEADER(shadow.h,AC_DEFINE(HAVE_SHADOW_H))
127 AC_CHECK_HEADER(string.h,AC_DEFINE(HAVE_STRING_H))
128 AC_CHECK_HEADER(strings.h,AC_DEFINE(HAVE_STRINGS_H))
129 AC_CHECK_HEADER(bstring.h,AC_DEFINE(HAVE_BSTRING_H))
130 AC_CHECK_HEADER(usersec.h,AC_DEFINE(HAVE_USERSEC_H))
131 AC_CHECK_HEADER(sys/ioctl.h,AC_DEFINE(HAVE_SYS_IOCTL_H))
132 AC_CHECK_HEADER(sys/param.h,AC_DEFINE(HAVE_SYS_PARAM_H))
133 AC_CHECK_HEADER(sys/ucred.h,AC_DEFINE(HAVE_SYS_UCRED_H))
134 AC_CHECK_HEADER(scsi/sg.h,AC_DEFINE(HAVE_SCSI_SG_H))
136 dnl Checks for iconv.h and iconv_open
137 AC_CHECK_HEADER(iconv.h,
140 AC_SEARCH_LIBS(iconv_open,iconv,
141 AC_DEFINE(HAVE_ICONV_H)
142 SAVELIBS="$SAVELIBS $LIBS")
145 dnl Checks for string functions.
146 AC_CHECK_FUNCS(strdup strcasecmp strncasecmp strlcat strlcpy)
147 if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then
148 echo Forcing snprintf emulation for HP-UX.
150 AC_CHECK_FUNCS(snprintf vsnprintf)
153 dnl Check for random number functions...
154 AC_CHECK_FUNCS(random lrand48 arc4random)
156 dnl Check for geteuid function.
157 AC_CHECK_FUNCS(geteuid)
159 dnl Check for vsyslog function.
160 AC_CHECK_FUNCS(vsyslog)
162 dnl Checks for signal functions.
165 # Do not use sigset on Linux or GNU HURD
168 # Use sigset on other platforms, if available
169 AC_CHECK_FUNCS(sigset)
173 AC_CHECK_FUNCS(sigaction)
175 dnl Checks for wait functions.
176 AC_CHECK_FUNCS(waitpid wait3)
178 dnl See if the tm structure has the tm_gmtoff member...
179 AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
180 AC_TRY_COMPILE([#include <time.h>],[struct tm t;
181 int o = t.tm_gmtoff;],
183 AC_DEFINE(HAVE_TM_GMTOFF),
186 dnl See if the stat structure has the st_gen member...
187 AC_MSG_CHECKING(for st_gen member in stat structure)
188 AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat t;
191 AC_DEFINE(HAVE_ST_GEN),
194 dnl See if we have the removefile(3) function for securely removing files
195 AC_CHECK_FUNCS(removefile)
197 dnl See if we have libusb...
198 AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
203 if test x$enable_libusb = xyes; then
205 elif test x$enable_libusb != xno -a $uname != Darwin; then
211 if test $check_libusb = yes; then
212 AC_CHECK_LIB(usb, usb_init,[
213 AC_CHECK_HEADER(usb.h,
214 AC_DEFINE(HAVE_USB_H)
218 dnl See if we have libwrap for TCP wrappers support...
219 AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support])
224 if test x$enable_tcp_wrappers = xyes; then
225 AC_CHECK_LIB(wrap, hosts_access,[
226 AC_CHECK_HEADER(tcpd.h,
227 AC_DEFINE(HAVE_TCPD_H)
231 dnl Flags for "ar" command...
243 dnl Prep libraries specifically for cupsd and backends...
249 dnl See if we have POSIX ACL support...
252 AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
253 if test "x$enable_acl" != xno; then
254 AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
255 SERVERLIBS="$SERVERLIBS $LIBS"
259 dnl Check for DBUS support
260 if test -d /etc/dbus-1; then
261 DBUSDIR="/etc/dbus-1"
266 AC_ARG_ENABLE(dbus, [ --enable-dbus build with DBUS support])
267 AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
273 if test "x$enable_dbus" != xno; then
274 AC_PATH_PROG(PKGCONFIG, pkg-config)
275 if test "x$PKGCONFIG" != x; then
276 AC_MSG_CHECKING(for DBUS)
277 if $PKGCONFIG --exists dbus-1; then
280 CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
281 SERVERLIBS="$SERVERLIBS `$PKGCONFIG --libs dbus-1`"
283 DBUS_NOTIFIERLIBS="`$PKGCONFIG --libs dbus-1`"
285 dbus_message_iter_init_append,
286 AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND),,
287 `$PKGCONFIG --libs dbus-1`)
295 AC_SUBST(DBUS_NOTIFIER)
296 AC_SUBST(DBUS_NOTIFIERLIBS)
298 dnl Extra platform-specific libraries...
299 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
300 CUPS_SYSTEM_AUTHKEY=""
301 LEGACY_BACKENDS="parallel"
306 BACKLIBS="$BACKLIBS -framework IOKit"
307 SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
308 LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
310 dnl Check for framework headers...
311 AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
312 AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
313 AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
314 AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
316 dnl Check for dynamic store function...
317 AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
319 dnl Check for the new membership functions in MacOSX 10.4...
320 AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
321 AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
322 AC_CHECK_FUNCS(mbr_uid_to_uuid)
324 dnl Check for the vproc_transaction_begin/end stuff...
325 AC_CHECK_FUNCS(vproc_transaction_begin)
327 dnl Need <dlfcn.h> header...
328 AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
330 dnl Check for notify_post support
331 AC_CHECK_HEADER(notify.h,AC_DEFINE(HAVE_NOTIFY_H))
332 AC_CHECK_FUNCS(notify_post)
334 dnl Check for Authorization Services support
335 AC_ARG_WITH(adminkey, [ --with-adminkey set the default SystemAuthKey value],
336 default_adminkey="$withval",
337 default_adminkey="default")
338 AC_ARG_WITH(operkey, [ --with-operkey set the default operator @AUTHKEY value],
339 default_operkey="$withval",
340 default_operkey="default")
342 AC_CHECK_HEADER(Security/Authorization.h, [
343 AC_DEFINE(HAVE_AUTHORIZATION_H)
345 if test "x$default_adminkey" != xdefault; then
346 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
347 elif grep -q system.print.operator /etc/authorization; then
348 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
350 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
353 if test "x$default_operkey" != xdefault; then
354 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
355 elif grep -q system.print.operator /etc/authorization; then
356 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
358 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
360 AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
362 dnl Check for sandbox/Seatbelt support
363 AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
367 AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
368 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
369 AC_SUBST(CUPS_SYSTEM_AUTHKEY)
370 AC_SUBST(LEGACY_BACKENDS)
372 dnl Check for build components
375 AC_ARG_WITH(components, [ --with-components set components to build:
376 - "all" (default) builds everything
377 - "core" builds libcups and ipptool],
378 COMPONENTS="$withval")
380 case "$COMPONENTS" in
382 BUILDDIRS="filter backend berkeley cgi-bin driver monitor notifier ppdc scheduler systemv conf data locale man doc examples templates"
386 BUILDDIRS="data locale"
390 AC_MSG_ERROR([Bad build component "$COMPONENT" specified!])
397 dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".