]> git.ipfire.org Git - thirdparty/cups.git/blame - config-scripts/cups-common.m4
Sync up with CUPS 1.7svn-r10893
[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
db8b865d 6dnl Copyright 2007-2013 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 266 LIBS="$LIBS -lz"
db8b865d 267 AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_INFLATECOPY))
82cc1f9a
MS
268 if test "x$GZIP" != z; then
269 INSTALL_GZIP="-z"
270 fi))
271AC_SUBST(INSTALL_GZIP)
a4845881
MS
272AC_SUBST(LIBZ)
273
ef416fc2 274dnl Flags for "ar" command...
275case $uname in
276 Darwin* | *BSD*)
277 ARFLAGS="-rcv"
278 ;;
279 *)
280 ARFLAGS="crvs"
281 ;;
282esac
283
284AC_SUBST(ARFLAGS)
285
ac884b6a 286dnl Prep libraries specifically for cupsd and backends...
bd7854cb 287BACKLIBS=""
cc754834 288SERVERLIBS=""
ac884b6a 289AC_SUBST(BACKLIBS)
cc754834 290AC_SUBST(SERVERLIBS)
ac884b6a
MS
291
292dnl See if we have POSIX ACL support...
293SAVELIBS="$LIBS"
294LIBS=""
bf3816c7 295AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
ee571f26
MS
296if test "x$enable_acl" != xno; then
297 AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
cc754834 298 SERVERLIBS="$SERVERLIBS $LIBS"
ee571f26 299fi
ac884b6a
MS
300LIBS="$SAVELIBS"
301
302dnl Check for DBUS support
303if test -d /etc/dbus-1; then
304 DBUSDIR="/etc/dbus-1"
305else
306 DBUSDIR=""
307fi
bd7854cb 308
db8b865d 309AC_ARG_ENABLE(dbus, [ --disable-dbus build without DBUS support])
ac884b6a
MS
310AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
311 DBUSDIR="$withval")
312
c5571a1d
MS
313DBUS_NOTIFIER=""
314DBUS_NOTIFIERLIBS=""
315
0268488e
MS
316if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
317 AC_MSG_CHECKING(for DBUS)
318 if $PKGCONFIG --exists dbus-1; then
319 AC_MSG_RESULT(yes)
320 AC_DEFINE(HAVE_DBUS)
321 CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
322 SERVERLIBS="$SERVERLIBS `$PKGCONFIG --libs dbus-1`"
323 DBUS_NOTIFIER="dbus"
324 DBUS_NOTIFIERLIBS="`$PKGCONFIG --libs dbus-1`"
325 SAVELIBS="$LIBS"
326 LIBS="$LIBS $DBUS_NOTIFIERLIBS"
327 AC_CHECK_FUNC(dbus_message_iter_init_append,
328 AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND))
329 LIBS="$SAVELIBS"
330 else
331 AC_MSG_RESULT(no)
ac884b6a
MS
332 fi
333fi
ecdc0628 334
ac884b6a 335AC_SUBST(DBUSDIR)
c5571a1d
MS
336AC_SUBST(DBUS_NOTIFIER)
337AC_SUBST(DBUS_NOTIFIERLIBS)
ac884b6a
MS
338
339dnl Extra platform-specific libraries...
b9faaae1 340CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
ac884b6a 341CUPS_SYSTEM_AUTHKEY=""
eac3a0a0 342INSTALLXPC=""
09a101d6 343
ef416fc2 344case $uname in
345 Darwin*)
ac884b6a 346 BACKLIBS="$BACKLIBS -framework IOKit"
cc754834 347 SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
f8b3a85b 348 LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
fa73b229 349
350 dnl Check for framework headers...
6d2f911b 351 AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
fa73b229 352 AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
353 AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
354 AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
84315f46 355 AC_CHECK_HEADER(IOKit/pwr_mgt/IOPMLibPrivate.h,AC_DEFINE(HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H))
fa73b229 356
6d2f911b
MS
357 dnl Check for dynamic store function...
358 AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
359
7594b224 360 dnl Check for the new membership functions in MacOSX 10.4...
fa73b229 361 AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
7594b224 362 AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
fa73b229 363 AC_CHECK_FUNCS(mbr_uid_to_uuid)
364
178cb736
MS
365 dnl Check for the vproc_transaction_begin/end stuff...
366 AC_CHECK_FUNCS(vproc_transaction_begin)
367
7594b224 368 dnl Need <dlfcn.h> header...
369 AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
370
fa73b229 371 dnl Check for notify_post support
372 AC_CHECK_HEADER(notify.h,AC_DEFINE(HAVE_NOTIFY_H))
373 AC_CHECK_FUNCS(notify_post)
f7deaa1a 374
375 dnl Check for Authorization Services support
1f0275e3
MS
376 AC_ARG_WITH(adminkey, [ --with-adminkey set the default SystemAuthKey value],
377 default_adminkey="$withval",
378 default_adminkey="default")
379 AC_ARG_WITH(operkey, [ --with-operkey set the default operator @AUTHKEY value],
380 default_operkey="$withval",
381 default_operkey="default")
eac3a0a0 382
f7deaa1a 383 AC_CHECK_HEADER(Security/Authorization.h, [
384 AC_DEFINE(HAVE_AUTHORIZATION_H)
1f0275e3
MS
385
386 if test "x$default_adminkey" != xdefault; then
387 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
388 elif grep -q system.print.operator /etc/authorization; then
389 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
01ce6322 390 else
1f0275e3
MS
391 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
392 fi
393
394 if test "x$default_operkey" != xdefault; then
b9faaae1 395 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
1f0275e3 396 elif grep -q system.print.operator /etc/authorization; then
b9faaae1 397 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
1f0275e3 398 else
b9faaae1 399 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
01ce6322 400 fi])
f7deaa1a 401 AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
a4924f6c
MS
402
403 dnl Check for sandbox/Seatbelt support
82f97232 404 if test $uversion -ge 100; then
a2326b5b
MS
405 AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
406 fi
0fa6c7fa
MS
407 if test $uversion -ge 110 -a $uversion -lt 120; then
408 # Broken public headers in 10.7.x...
a2326b5b
MS
409 AC_MSG_CHECKING(for sandbox/private.h presence)
410 if test -f /usr/local/include/sandbox/private.h; then
411 AC_MSG_RESULT(yes)
412 else
413 AC_MSG_RESULT(no)
414 AC_MSG_ERROR(Run 'sudo mkdir -p /usr/local/include/sandbox' and 'sudo touch /usr/local/include/sandbox/private.h' to build CUPS.)
415 fi
82f97232 416 fi
eac3a0a0
MS
417
418 dnl Check for XPC support
419 AC_CHECK_HEADER(xpc/xpc.h,
420 AC_DEFINE(HAVE_XPC)
421 INSTALLXPC="install-xpc")
82cc1f9a
MS
422 AC_CHECK_HEADER(xpc/private.h,
423 AC_DEFINE(HAVE_XPC_PRIVATE_H))
ef416fc2 424 ;;
ef416fc2 425esac
426
b9faaae1
MS
427AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
428AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
f7deaa1a 429AC_SUBST(CUPS_SYSTEM_AUTHKEY)
eac3a0a0 430AC_SUBST(INSTALLXPC)
ef416fc2 431
6d2f911b
MS
432dnl Check for build components
433COMPONENTS="all"
434
435AC_ARG_WITH(components, [ --with-components set components to build:
436 - "all" (default) builds everything
437 - "core" builds libcups and ipptool],
438 COMPONENTS="$withval")
439
440case "$COMPONENTS" in
441 all)
a4845881 442 BUILDDIRS="filter backend berkeley cgi-bin monitor notifier ppdc scheduler systemv conf data desktop locale man doc examples templates"
6d2f911b
MS
443 ;;
444
445 core)
446 BUILDDIRS="data locale"
447 ;;
448
449 *)
450 AC_MSG_ERROR([Bad build component "$COMPONENT" specified!])
451 ;;
452esac
453
454AC_SUBST(BUILDDIRS)
455
ef416fc2 456dnl
18ecb428 457dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".
ef416fc2 458dnl