]> git.ipfire.org Git - thirdparty/cups.git/blame - config-scripts/cups-common.m4
Merge changes from CUPS 1.7svn-r10814.
[thirdparty/cups.git] / config-scripts / cups-common.m4
CommitLineData
ef416fc2 1dnl
18ecb428 2dnl "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $"
ef416fc2 3dnl
6d2f911b 4dnl Common configuration stuff for CUPS.
ef416fc2 5dnl
82cc1f9a 6dnl Copyright 2007-2012 by Apple Inc.
f7deaa1a 7dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
ef416fc2 8dnl
9dnl These coded instructions, statements, and computer programs are the
bc44d920 10dnl property of Apple Inc. and are protected by Federal copyright
11dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
12dnl which should have been included with this file. If this file is
13dnl file is missing or damaged, see the license at "http://www.cups.org/".
ef416fc2 14dnl
15
c277e2f8
MS
16dnl We need at least autoconf 2.60...
17AC_PREREQ(2.60)
ef416fc2 18
19dnl Set the name of the config header file...
20AC_CONFIG_HEADER(config.h)
21
ac884b6a 22dnl Version number information...
37e7e6e0 23CUPS_VERSION="1.7svn"
ecdc0628 24CUPS_REVISION=""
a4845881
MS
25if 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'`"
27fi
e4572d57
MS
28CUPS_BUILD="cups-$CUPS_VERSION"
29
30AC_ARG_WITH(cups_build, [ --with-cups-build set "cups-config --build" string ],
31 CUPS_BUILD="$withval")
ecdc0628 32
ef416fc2 33AC_SUBST(CUPS_VERSION)
ecdc0628 34AC_SUBST(CUPS_REVISION)
e4572d57 35AC_SUBST(CUPS_BUILD)
ecdc0628 36AC_DEFINE_UNQUOTED(CUPS_SVERSION, "CUPS v$CUPS_VERSION$CUPS_REVISION")
37AC_DEFINE_UNQUOTED(CUPS_MINIMAL, "CUPS/$CUPS_VERSION$CUPS_REVISION")
ef416fc2 38
39dnl Default compiler flags...
40CFLAGS="${CFLAGS:=}"
41CPPFLAGS="${CPPFLAGS:=}"
ac884b6a 42CXXFLAGS="${CXXFLAGS:=}"
ef416fc2 43LDFLAGS="${LDFLAGS:=}"
44
45dnl Checks for programs...
46AC_PROG_AWK
47AC_PROG_CC
ef416fc2 48AC_PROG_CPP
ac884b6a 49AC_PROG_CXX
ef416fc2 50AC_PROG_RANLIB
51AC_PATH_PROG(AR,ar)
97c9a8d7 52AC_PATH_PROG(CHMOD,chmod)
82cc1f9a 53AC_PATH_PROG(GZIP,gzip)
bd7854cb 54AC_PATH_PROG(LD,ld)
ef416fc2 55AC_PATH_PROG(LN,ln)
56AC_PATH_PROG(MV,mv)
57AC_PATH_PROG(RM,rm)
e1d6a774 58AC_PATH_PROG(RMDIR,rmdir)
ef416fc2 59AC_PATH_PROG(SED,sed)
ee571f26
MS
60AC_PATH_PROG(XDGOPEN,xdg-open)
61if test "x$XDGOPEN" = x; then
62 CUPS_HTMLVIEW="htmlview"
63else
64 CUPS_HTMLVIEW="$XDGOPEN"
65fi
66AC_SUBST(CUPS_HTMLVIEW)
839a51c8
MS
67
68AC_MSG_CHECKING(for install-sh script)
e07d4801 69INSTALL="`pwd`/install-sh"
839a51c8
MS
70AC_SUBST(INSTALL)
71AC_MSG_RESULT(using $INSTALL)
ef416fc2 72
73if test "x$AR" = x; then
74 AC_MSG_ERROR([Unable to find required library archive command.])
75fi
76if test "x$CC" = x; then
77 AC_MSG_ERROR([Unable to find required C compiler command.])
78fi
ef416fc2 79
923edb68 80dnl Static library option...
81INSTALLSTATIC=""
bf3816c7 82AC_ARG_ENABLE(static, [ --enable-static install static libraries])
923edb68 83
d6ae789d 84if test x$enable_static = xyes; then
85 echo Installing static libraries...
923edb68 86 INSTALLSTATIC="installstatic"
87fi
88
89AC_SUBST(INSTALLSTATIC)
ef416fc2 90
0268488e
MS
91dnl Check for pkg-config, which is used for some other tests later on...
92AC_PATH_PROG(PKGCONFIG, pkg-config)
93
ef416fc2 94dnl Check for libraries...
f3c17241 95AC_SEARCH_LIBS(abs, m, AC_DEFINE(HAVE_ABS))
ef416fc2 96AC_SEARCH_LIBS(crypt, crypt)
f3c17241 97AC_SEARCH_LIBS(fmod, m)
ef416fc2 98AC_SEARCH_LIBS(getspent, sec gen)
99
100LIBMALLOC=""
bf3816c7 101AC_ARG_ENABLE(mallinfo, [ --enable-mallinfo build with malloc debug logging])
ef416fc2 102
103if test x$enable_mallinfo = xyes; then
75bd9771
MS
104 SAVELIBS="$LIBS"
105 LIBS=""
106 AC_SEARCH_LIBS(mallinfo, malloc, AC_DEFINE(HAVE_MALLINFO))
107 LIBMALLOC="$LIBS"
108 LIBS="$SAVELIBS"
ef416fc2 109fi
110
111AC_SUBST(LIBMALLOC)
112
113dnl Check for libpaper support...
bf3816c7 114AC_ARG_ENABLE(libpaper, [ --enable-libpaper build with libpaper support])
ef416fc2 115
116if test x$enable_libpaper = xyes; then
117 AC_CHECK_LIB(paper,systempapername,
118 AC_DEFINE(HAVE_LIBPAPER)
119 LIBPAPER="-lpaper",
120 LIBPAPER="")
121else
122 LIBPAPER=""
123fi
124AC_SUBST(LIBPAPER)
125
126dnl Checks for header files.
127AC_HEADER_STDC
a4845881 128AC_CHECK_HEADER(stdlib.h,AC_DEFINE(HAVE_STDLIB_H))
ef416fc2 129AC_CHECK_HEADER(crypt.h,AC_DEFINE(HAVE_CRYPT_H))
130AC_CHECK_HEADER(langinfo.h,AC_DEFINE(HAVE_LANGINFO_H))
131AC_CHECK_HEADER(malloc.h,AC_DEFINE(HAVE_MALLOC_H))
132AC_CHECK_HEADER(shadow.h,AC_DEFINE(HAVE_SHADOW_H))
5a9febac 133AC_CHECK_HEADER(stdint.h,AC_DEFINE(HAVE_STDINT_H))
ef416fc2 134AC_CHECK_HEADER(string.h,AC_DEFINE(HAVE_STRING_H))
135AC_CHECK_HEADER(strings.h,AC_DEFINE(HAVE_STRINGS_H))
136AC_CHECK_HEADER(bstring.h,AC_DEFINE(HAVE_BSTRING_H))
137AC_CHECK_HEADER(usersec.h,AC_DEFINE(HAVE_USERSEC_H))
138AC_CHECK_HEADER(sys/ioctl.h,AC_DEFINE(HAVE_SYS_IOCTL_H))
db1f069b 139AC_CHECK_HEADER(sys/param.h,AC_DEFINE(HAVE_SYS_PARAM_H))
bc44d920 140AC_CHECK_HEADER(sys/ucred.h,AC_DEFINE(HAVE_SYS_UCRED_H))
2abf387c 141AC_CHECK_HEADER(scsi/sg.h,AC_DEFINE(HAVE_SCSI_SG_H))
ef416fc2 142
cc754834
MS
143dnl Checks for iconv.h and iconv_open
144AC_CHECK_HEADER(iconv.h,
145 SAVELIBS="$LIBS"
146 LIBS=""
147 AC_SEARCH_LIBS(iconv_open,iconv,
148 AC_DEFINE(HAVE_ICONV_H)
149 SAVELIBS="$SAVELIBS $LIBS")
150 LIBS="$SAVELIBS")
151
12f89d24
MS
152dnl Checks for Mini-XML (www.minixml.org)...
153LIBMXML=""
154AC_CHECK_HEADER(mxml.h,
155 SAVELIBS="$LIBS"
156 AC_SEARCH_LIBS(mmxlNewElement,mxml,
157 AC_DEFINE(HAVE_MXML_H)
158 LIBMXML="-lmxml")
159 LIBS="$SAVELIBS")
160AC_SUBST(LIBMXML)
161
7cf5915e
MS
162dnl Checks for statfs and its many headers...
163AC_CHECK_HEADER(sys/mount.h,AC_DEFINE(HAVE_SYS_MOUNT_H))
164AC_CHECK_HEADER(sys/statfs.h,AC_DEFINE(HAVE_SYS_STATFS_H))
165AC_CHECK_HEADER(sys/statvfs.h,AC_DEFINE(HAVE_SYS_STATVFS_H))
166AC_CHECK_HEADER(sys/vfs.h,AC_DEFINE(HAVE_SYS_VFS_H))
167AC_CHECK_FUNCS(statfs statvfs)
168
ef416fc2 169dnl Checks for string functions.
88f9aafc 170AC_CHECK_FUNCS(strdup strlcat strlcpy)
ef416fc2 171if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then
172 echo Forcing snprintf emulation for HP-UX.
173else
174 AC_CHECK_FUNCS(snprintf vsnprintf)
175fi
176
ac884b6a 177dnl Check for random number functions...
41681883 178AC_CHECK_FUNCS(random lrand48 arc4random)
ac884b6a 179
ef416fc2 180dnl Check for geteuid function.
181AC_CHECK_FUNCS(geteuid)
182
88f9aafc
MS
183dnl Check for setpgid function.
184AC_CHECK_FUNCS(setpgid)
185
ef416fc2 186dnl Check for vsyslog function.
187AC_CHECK_FUNCS(vsyslog)
188
189dnl Checks for signal functions.
190case "$uname" in
191 Linux | GNU)
192 # Do not use sigset on Linux or GNU HURD
193 ;;
194 *)
195 # Use sigset on other platforms, if available
196 AC_CHECK_FUNCS(sigset)
197 ;;
198esac
199
200AC_CHECK_FUNCS(sigaction)
201
202dnl Checks for wait functions.
cc0d019f 203AC_CHECK_FUNCS(waitpid wait3)
ef416fc2 204
205dnl See if the tm structure has the tm_gmtoff member...
206AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
207AC_TRY_COMPILE([#include <time.h>],[struct tm t;
208 int o = t.tm_gmtoff;],
209 AC_MSG_RESULT(yes)
210 AC_DEFINE(HAVE_TM_GMTOFF),
211 AC_MSG_RESULT(no))
212
c7017ecc
MS
213dnl See if the stat structure has the st_gen member...
214AC_MSG_CHECKING(for st_gen member in stat structure)
215AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat t;
216 int o = t.st_gen;],
217 AC_MSG_RESULT(yes)
218 AC_DEFINE(HAVE_ST_GEN),
219 AC_MSG_RESULT(no))
220
cc0d019f
MS
221dnl See if we have the removefile(3) function for securely removing files
222AC_CHECK_FUNCS(removefile)
223
75bd9771 224dnl See if we have libusb...
bf3816c7 225AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
75bd9771
MS
226
227LIBUSB=""
228AC_SUBST(LIBUSB)
229
3e7fe0ca
MS
230if test "x$PKGCONFIG" != x; then
231 if test x$enable_libusb = xyes -o $uname != Darwin; then
232 AC_MSG_CHECKING(for libusb-1.0)
233 if $PKGCONFIG --exists libusb-1.0; then
234 AC_MSG_RESULT(yes)
235 AC_DEFINE(HAVE_LIBUSB)
236 CFLAGS="$CFLAGS `$PKGCONFIG --cflags libusb-1.0`"
237 LIBUSB="`$PKGCONFIG --libs libusb-1.0`"
238 else
239 AC_MSG_RESULT(no)
240 fi
12f89d24 241 fi
82cc1f9a 242elif test x$enable_libusb = xyes; then
3e7fe0ca 243 AC_MSG_ERROR(Need pkg-config to enable libusb support.)
75bd9771
MS
244fi
245
749b1e90 246dnl See if we have libwrap for TCP wrappers support...
bf3816c7 247AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support])
749b1e90
MS
248
249LIBWRAP=""
250AC_SUBST(LIBWRAP)
251
252if test x$enable_tcp_wrappers = xyes; then
253 AC_CHECK_LIB(wrap, hosts_access,[
254 AC_CHECK_HEADER(tcpd.h,
255 AC_DEFINE(HAVE_TCPD_H)
256 LIBWRAP="-lwrap")])
257fi
258
a4845881 259dnl ZLIB
82cc1f9a 260INSTALL_GZIP=""
a4845881
MS
261LIBZ=""
262AC_CHECK_HEADER(zlib.h,
263 AC_CHECK_LIB(z, gzgets,
264 AC_DEFINE(HAVE_LIBZ)
265 LIBZ="-lz"
82cc1f9a
MS
266 LIBS="$LIBS -lz"
267 if test "x$GZIP" != z; then
268 INSTALL_GZIP="-z"
269 fi))
270AC_SUBST(INSTALL_GZIP)
a4845881
MS
271AC_SUBST(LIBZ)
272
ef416fc2 273dnl Flags for "ar" command...
274case $uname in
275 Darwin* | *BSD*)
276 ARFLAGS="-rcv"
277 ;;
278 *)
279 ARFLAGS="crvs"
280 ;;
281esac
282
283AC_SUBST(ARFLAGS)
284
ac884b6a 285dnl Prep libraries specifically for cupsd and backends...
bd7854cb 286BACKLIBS=""
cc754834 287SERVERLIBS=""
ac884b6a 288AC_SUBST(BACKLIBS)
cc754834 289AC_SUBST(SERVERLIBS)
ac884b6a
MS
290
291dnl See if we have POSIX ACL support...
292SAVELIBS="$LIBS"
293LIBS=""
bf3816c7 294AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
ee571f26
MS
295if test "x$enable_acl" != xno; then
296 AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
cc754834 297 SERVERLIBS="$SERVERLIBS $LIBS"
ee571f26 298fi
ac884b6a
MS
299LIBS="$SAVELIBS"
300
301dnl Check for DBUS support
302if test -d /etc/dbus-1; then
303 DBUSDIR="/etc/dbus-1"
304else
305 DBUSDIR=""
306fi
bd7854cb 307
bf3816c7 308AC_ARG_ENABLE(dbus, [ --enable-dbus build with DBUS support])
ac884b6a
MS
309AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
310 DBUSDIR="$withval")
311
c5571a1d
MS
312DBUS_NOTIFIER=""
313DBUS_NOTIFIERLIBS=""
314
0268488e
MS
315if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
316 AC_MSG_CHECKING(for DBUS)
317 if $PKGCONFIG --exists dbus-1; then
318 AC_MSG_RESULT(yes)
319 AC_DEFINE(HAVE_DBUS)
320 CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
321 SERVERLIBS="$SERVERLIBS `$PKGCONFIG --libs dbus-1`"
322 DBUS_NOTIFIER="dbus"
323 DBUS_NOTIFIERLIBS="`$PKGCONFIG --libs dbus-1`"
324 SAVELIBS="$LIBS"
325 LIBS="$LIBS $DBUS_NOTIFIERLIBS"
326 AC_CHECK_FUNC(dbus_message_iter_init_append,
327 AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND))
328 LIBS="$SAVELIBS"
329 else
330 AC_MSG_RESULT(no)
ac884b6a
MS
331 fi
332fi
ecdc0628 333
ac884b6a 334AC_SUBST(DBUSDIR)
c5571a1d
MS
335AC_SUBST(DBUS_NOTIFIER)
336AC_SUBST(DBUS_NOTIFIERLIBS)
ac884b6a
MS
337
338dnl Extra platform-specific libraries...
b9faaae1 339CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
ac884b6a 340CUPS_SYSTEM_AUTHKEY=""
eac3a0a0 341INSTALLXPC=""
09a101d6 342
ef416fc2 343case $uname in
344 Darwin*)
ac884b6a 345 BACKLIBS="$BACKLIBS -framework IOKit"
cc754834 346 SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
f8b3a85b 347 LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
fa73b229 348
349 dnl Check for framework headers...
6d2f911b 350 AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
fa73b229 351 AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
352 AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
353 AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
84315f46 354 AC_CHECK_HEADER(IOKit/pwr_mgt/IOPMLibPrivate.h,AC_DEFINE(HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H))
fa73b229 355
6d2f911b
MS
356 dnl Check for dynamic store function...
357 AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
358
7594b224 359 dnl Check for the new membership functions in MacOSX 10.4...
fa73b229 360 AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
7594b224 361 AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
fa73b229 362 AC_CHECK_FUNCS(mbr_uid_to_uuid)
363
178cb736
MS
364 dnl Check for the vproc_transaction_begin/end stuff...
365 AC_CHECK_FUNCS(vproc_transaction_begin)
366
7594b224 367 dnl Need <dlfcn.h> header...
368 AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
369
fa73b229 370 dnl Check for notify_post support
371 AC_CHECK_HEADER(notify.h,AC_DEFINE(HAVE_NOTIFY_H))
372 AC_CHECK_FUNCS(notify_post)
f7deaa1a 373
374 dnl Check for Authorization Services support
1f0275e3
MS
375 AC_ARG_WITH(adminkey, [ --with-adminkey set the default SystemAuthKey value],
376 default_adminkey="$withval",
377 default_adminkey="default")
378 AC_ARG_WITH(operkey, [ --with-operkey set the default operator @AUTHKEY value],
379 default_operkey="$withval",
380 default_operkey="default")
eac3a0a0 381
f7deaa1a 382 AC_CHECK_HEADER(Security/Authorization.h, [
383 AC_DEFINE(HAVE_AUTHORIZATION_H)
1f0275e3
MS
384
385 if test "x$default_adminkey" != xdefault; then
386 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
387 elif grep -q system.print.operator /etc/authorization; then
388 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
01ce6322 389 else
1f0275e3
MS
390 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
391 fi
392
393 if test "x$default_operkey" != xdefault; then
b9faaae1 394 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
1f0275e3 395 elif grep -q system.print.operator /etc/authorization; then
b9faaae1 396 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
1f0275e3 397 else
b9faaae1 398 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
01ce6322 399 fi])
f7deaa1a 400 AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
a4924f6c
MS
401
402 dnl Check for sandbox/Seatbelt support
82f97232 403 if test $uversion -ge 100; then
a2326b5b
MS
404 AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
405 fi
0fa6c7fa
MS
406 if test $uversion -ge 110 -a $uversion -lt 120; then
407 # Broken public headers in 10.7.x...
a2326b5b
MS
408 AC_MSG_CHECKING(for sandbox/private.h presence)
409 if test -f /usr/local/include/sandbox/private.h; then
410 AC_MSG_RESULT(yes)
411 else
412 AC_MSG_RESULT(no)
413 AC_MSG_ERROR(Run 'sudo mkdir -p /usr/local/include/sandbox' and 'sudo touch /usr/local/include/sandbox/private.h' to build CUPS.)
414 fi
82f97232 415 fi
eac3a0a0
MS
416
417 dnl Check for XPC support
418 AC_CHECK_HEADER(xpc/xpc.h,
419 AC_DEFINE(HAVE_XPC)
420 INSTALLXPC="install-xpc")
82cc1f9a
MS
421 AC_CHECK_HEADER(xpc/private.h,
422 AC_DEFINE(HAVE_XPC_PRIVATE_H))
ef416fc2 423 ;;
ef416fc2 424esac
425
b9faaae1
MS
426AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
427AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
f7deaa1a 428AC_SUBST(CUPS_SYSTEM_AUTHKEY)
eac3a0a0 429AC_SUBST(INSTALLXPC)
ef416fc2 430
6d2f911b
MS
431dnl Check for build components
432COMPONENTS="all"
433
434AC_ARG_WITH(components, [ --with-components set components to build:
435 - "all" (default) builds everything
436 - "core" builds libcups and ipptool],
437 COMPONENTS="$withval")
438
439case "$COMPONENTS" in
440 all)
a4845881 441 BUILDDIRS="filter backend berkeley cgi-bin monitor notifier ppdc scheduler systemv conf data desktop locale man doc examples templates"
6d2f911b
MS
442 ;;
443
444 core)
445 BUILDDIRS="data locale"
446 ;;
447
448 *)
449 AC_MSG_ERROR([Bad build component "$COMPONENT" specified!])
450 ;;
451esac
452
453AC_SUBST(BUILDDIRS)
454
ef416fc2 455dnl
18ecb428 456dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".
ef416fc2 457dnl