]> git.ipfire.org Git - thirdparty/cups.git/blame - config-scripts/cups-common.m4
Merge changes from CUPS 1.6svn-r10056
[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
0268488e 6dnl Copyright 2007-2011 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...
a4845881 23CUPS_VERSION="1.6svn"
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)
ef416fc2 53AC_PATH_PROG(HTMLDOC,htmldoc)
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...
83e08001 95AC_SEARCH_LIBS(fmod, m)
ef416fc2 96AC_SEARCH_LIBS(crypt, crypt)
97AC_SEARCH_LIBS(getspent, sec gen)
98
99LIBMALLOC=""
bf3816c7 100AC_ARG_ENABLE(mallinfo, [ --enable-mallinfo build with malloc debug logging])
ef416fc2 101
102if test x$enable_mallinfo = xyes; then
75bd9771
MS
103 SAVELIBS="$LIBS"
104 LIBS=""
105 AC_SEARCH_LIBS(mallinfo, malloc, AC_DEFINE(HAVE_MALLINFO))
106 LIBMALLOC="$LIBS"
107 LIBS="$SAVELIBS"
ef416fc2 108fi
109
110AC_SUBST(LIBMALLOC)
111
112dnl Check for libpaper support...
bf3816c7 113AC_ARG_ENABLE(libpaper, [ --enable-libpaper build with libpaper support])
ef416fc2 114
115if test x$enable_libpaper = xyes; then
116 AC_CHECK_LIB(paper,systempapername,
117 AC_DEFINE(HAVE_LIBPAPER)
118 LIBPAPER="-lpaper",
119 LIBPAPER="")
120else
121 LIBPAPER=""
122fi
123AC_SUBST(LIBPAPER)
124
125dnl Checks for header files.
126AC_HEADER_STDC
a4845881 127AC_CHECK_HEADER(stdlib.h,AC_DEFINE(HAVE_STDLIB_H))
ef416fc2 128AC_CHECK_HEADER(crypt.h,AC_DEFINE(HAVE_CRYPT_H))
129AC_CHECK_HEADER(langinfo.h,AC_DEFINE(HAVE_LANGINFO_H))
130AC_CHECK_HEADER(malloc.h,AC_DEFINE(HAVE_MALLOC_H))
131AC_CHECK_HEADER(shadow.h,AC_DEFINE(HAVE_SHADOW_H))
132AC_CHECK_HEADER(string.h,AC_DEFINE(HAVE_STRING_H))
133AC_CHECK_HEADER(strings.h,AC_DEFINE(HAVE_STRINGS_H))
134AC_CHECK_HEADER(bstring.h,AC_DEFINE(HAVE_BSTRING_H))
135AC_CHECK_HEADER(usersec.h,AC_DEFINE(HAVE_USERSEC_H))
136AC_CHECK_HEADER(sys/ioctl.h,AC_DEFINE(HAVE_SYS_IOCTL_H))
db1f069b 137AC_CHECK_HEADER(sys/param.h,AC_DEFINE(HAVE_SYS_PARAM_H))
bc44d920 138AC_CHECK_HEADER(sys/ucred.h,AC_DEFINE(HAVE_SYS_UCRED_H))
2abf387c 139AC_CHECK_HEADER(scsi/sg.h,AC_DEFINE(HAVE_SCSI_SG_H))
ef416fc2 140
cc754834
MS
141dnl Checks for iconv.h and iconv_open
142AC_CHECK_HEADER(iconv.h,
143 SAVELIBS="$LIBS"
144 LIBS=""
145 AC_SEARCH_LIBS(iconv_open,iconv,
146 AC_DEFINE(HAVE_ICONV_H)
147 SAVELIBS="$SAVELIBS $LIBS")
148 LIBS="$SAVELIBS")
149
7cf5915e
MS
150dnl Checks for statfs and its many headers...
151AC_CHECK_HEADER(sys/mount.h,AC_DEFINE(HAVE_SYS_MOUNT_H))
152AC_CHECK_HEADER(sys/statfs.h,AC_DEFINE(HAVE_SYS_STATFS_H))
153AC_CHECK_HEADER(sys/statvfs.h,AC_DEFINE(HAVE_SYS_STATVFS_H))
154AC_CHECK_HEADER(sys/vfs.h,AC_DEFINE(HAVE_SYS_VFS_H))
155AC_CHECK_FUNCS(statfs statvfs)
156
ef416fc2 157dnl Checks for string functions.
88f9aafc 158AC_CHECK_FUNCS(strdup strlcat strlcpy)
ef416fc2 159if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then
160 echo Forcing snprintf emulation for HP-UX.
161else
162 AC_CHECK_FUNCS(snprintf vsnprintf)
163fi
164
ac884b6a 165dnl Check for random number functions...
41681883 166AC_CHECK_FUNCS(random lrand48 arc4random)
ac884b6a 167
ef416fc2 168dnl Check for geteuid function.
169AC_CHECK_FUNCS(geteuid)
170
88f9aafc
MS
171dnl Check for setpgid function.
172AC_CHECK_FUNCS(setpgid)
173
ef416fc2 174dnl Check for vsyslog function.
175AC_CHECK_FUNCS(vsyslog)
176
177dnl Checks for signal functions.
178case "$uname" in
179 Linux | GNU)
180 # Do not use sigset on Linux or GNU HURD
181 ;;
182 *)
183 # Use sigset on other platforms, if available
184 AC_CHECK_FUNCS(sigset)
185 ;;
186esac
187
188AC_CHECK_FUNCS(sigaction)
189
190dnl Checks for wait functions.
cc0d019f 191AC_CHECK_FUNCS(waitpid wait3)
ef416fc2 192
193dnl See if the tm structure has the tm_gmtoff member...
194AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
195AC_TRY_COMPILE([#include <time.h>],[struct tm t;
196 int o = t.tm_gmtoff;],
197 AC_MSG_RESULT(yes)
198 AC_DEFINE(HAVE_TM_GMTOFF),
199 AC_MSG_RESULT(no))
200
c7017ecc
MS
201dnl See if the stat structure has the st_gen member...
202AC_MSG_CHECKING(for st_gen member in stat structure)
203AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat t;
204 int o = t.st_gen;],
205 AC_MSG_RESULT(yes)
206 AC_DEFINE(HAVE_ST_GEN),
207 AC_MSG_RESULT(no))
208
cc0d019f
MS
209dnl See if we have the removefile(3) function for securely removing files
210AC_CHECK_FUNCS(removefile)
211
75bd9771 212dnl See if we have libusb...
bf3816c7 213AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
75bd9771
MS
214
215LIBUSB=""
216AC_SUBST(LIBUSB)
217
218if test x$enable_libusb = xyes; then
219 check_libusb=yes
220elif test x$enable_libusb != xno -a $uname != Darwin; then
221 check_libusb=yes
222else
223 check_libusb=no
224fi
225
226if test $check_libusb = yes; then
0268488e 227 AC_CHECK_LIB(usb, usb_get_string_simple,[
75bd9771
MS
228 AC_CHECK_HEADER(usb.h,
229 AC_DEFINE(HAVE_USB_H)
230 LIBUSB="-lusb")])
231fi
232
749b1e90 233dnl See if we have libwrap for TCP wrappers support...
bf3816c7 234AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support])
749b1e90
MS
235
236LIBWRAP=""
237AC_SUBST(LIBWRAP)
238
239if 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)
243 LIBWRAP="-lwrap")])
244fi
245
a4845881
MS
246dnl ZLIB
247LIBZ=""
248AC_CHECK_HEADER(zlib.h,
249 AC_CHECK_LIB(z, gzgets,
250 AC_DEFINE(HAVE_LIBZ)
251 LIBZ="-lz"
252 LIBS="$LIBS -lz"))
253AC_SUBST(LIBZ)
254
ef416fc2 255dnl Flags for "ar" command...
256case $uname in
257 Darwin* | *BSD*)
258 ARFLAGS="-rcv"
259 ;;
260 *)
261 ARFLAGS="crvs"
262 ;;
263esac
264
265AC_SUBST(ARFLAGS)
266
ac884b6a 267dnl Prep libraries specifically for cupsd and backends...
bd7854cb 268BACKLIBS=""
cc754834 269SERVERLIBS=""
ac884b6a 270AC_SUBST(BACKLIBS)
cc754834 271AC_SUBST(SERVERLIBS)
ac884b6a
MS
272
273dnl See if we have POSIX ACL support...
274SAVELIBS="$LIBS"
275LIBS=""
bf3816c7 276AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
ee571f26
MS
277if test "x$enable_acl" != xno; then
278 AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
cc754834 279 SERVERLIBS="$SERVERLIBS $LIBS"
ee571f26 280fi
ac884b6a
MS
281LIBS="$SAVELIBS"
282
283dnl Check for DBUS support
284if test -d /etc/dbus-1; then
285 DBUSDIR="/etc/dbus-1"
286else
287 DBUSDIR=""
288fi
bd7854cb 289
bf3816c7 290AC_ARG_ENABLE(dbus, [ --enable-dbus build with DBUS support])
ac884b6a
MS
291AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
292 DBUSDIR="$withval")
293
c5571a1d
MS
294DBUS_NOTIFIER=""
295DBUS_NOTIFIERLIBS=""
296
0268488e
MS
297if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
298 AC_MSG_CHECKING(for DBUS)
299 if $PKGCONFIG --exists dbus-1; then
300 AC_MSG_RESULT(yes)
301 AC_DEFINE(HAVE_DBUS)
302 CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
303 SERVERLIBS="$SERVERLIBS `$PKGCONFIG --libs dbus-1`"
304 DBUS_NOTIFIER="dbus"
305 DBUS_NOTIFIERLIBS="`$PKGCONFIG --libs dbus-1`"
306 SAVELIBS="$LIBS"
307 LIBS="$LIBS $DBUS_NOTIFIERLIBS"
308 AC_CHECK_FUNC(dbus_message_iter_init_append,
309 AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND))
310 LIBS="$SAVELIBS"
311 else
312 AC_MSG_RESULT(no)
ac884b6a
MS
313 fi
314fi
ecdc0628 315
ac884b6a 316AC_SUBST(DBUSDIR)
c5571a1d
MS
317AC_SUBST(DBUS_NOTIFIER)
318AC_SUBST(DBUS_NOTIFIERLIBS)
ac884b6a
MS
319
320dnl Extra platform-specific libraries...
b9faaae1 321CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
ac884b6a 322CUPS_SYSTEM_AUTHKEY=""
eac3a0a0 323INSTALLXPC=""
09a101d6 324
ef416fc2 325case $uname in
326 Darwin*)
ac884b6a 327 BACKLIBS="$BACKLIBS -framework IOKit"
cc754834 328 SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
f8b3a85b 329 LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
fa73b229 330
331 dnl Check for framework headers...
6d2f911b 332 AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
fa73b229 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))
84315f46 336 AC_CHECK_HEADER(IOKit/pwr_mgt/IOPMLibPrivate.h,AC_DEFINE(HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H))
fa73b229 337
6d2f911b
MS
338 dnl Check for dynamic store function...
339 AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
340
229681c1
MS
341 dnl Check for new ColorSync APIs...
342 SAVELIBS="$LIBS"
343 LIBS="$LIBS -framework ApplicationServices"
344 AC_CHECK_FUNCS(ColorSyncRegisterDevice)
345 LIBS="$SAVELIBS"
346
7594b224 347 dnl Check for the new membership functions in MacOSX 10.4...
fa73b229 348 AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
7594b224 349 AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
fa73b229 350 AC_CHECK_FUNCS(mbr_uid_to_uuid)
351
178cb736
MS
352 dnl Check for the vproc_transaction_begin/end stuff...
353 AC_CHECK_FUNCS(vproc_transaction_begin)
354
7594b224 355 dnl Need <dlfcn.h> header...
356 AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
357
fa73b229 358 dnl Check for notify_post support
359 AC_CHECK_HEADER(notify.h,AC_DEFINE(HAVE_NOTIFY_H))
360 AC_CHECK_FUNCS(notify_post)
f7deaa1a 361
362 dnl Check for Authorization Services support
1f0275e3
MS
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")
eac3a0a0 369
f7deaa1a 370 AC_CHECK_HEADER(Security/Authorization.h, [
371 AC_DEFINE(HAVE_AUTHORIZATION_H)
1f0275e3
MS
372
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"
01ce6322 377 else
1f0275e3
MS
378 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
379 fi
380
381 if test "x$default_operkey" != xdefault; then
b9faaae1 382 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
1f0275e3 383 elif grep -q system.print.operator /etc/authorization; then
b9faaae1 384 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
1f0275e3 385 else
b9faaae1 386 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
01ce6322 387 fi])
f7deaa1a 388 AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
a4924f6c
MS
389
390 dnl Check for sandbox/Seatbelt support
82f97232
MS
391 if test $uversion -ge 100; then
392 AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
393 fi
eac3a0a0
MS
394
395 dnl Check for XPC support
396 AC_CHECK_HEADER(xpc/xpc.h,
397 AC_DEFINE(HAVE_XPC)
398 INSTALLXPC="install-xpc")
ef416fc2 399 ;;
ef416fc2 400esac
401
b9faaae1
MS
402AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
403AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
f7deaa1a 404AC_SUBST(CUPS_SYSTEM_AUTHKEY)
eac3a0a0 405AC_SUBST(INSTALLXPC)
ef416fc2 406
6d2f911b
MS
407dnl Check for build components
408COMPONENTS="all"
409
410AC_ARG_WITH(components, [ --with-components set components to build:
411 - "all" (default) builds everything
412 - "core" builds libcups and ipptool],
413 COMPONENTS="$withval")
414
415case "$COMPONENTS" in
416 all)
a4845881 417 BUILDDIRS="filter backend berkeley cgi-bin monitor notifier ppdc scheduler systemv conf data desktop locale man doc examples templates"
6d2f911b
MS
418 ;;
419
420 core)
421 BUILDDIRS="data locale"
422 ;;
423
424 *)
425 AC_MSG_ERROR([Bad build component "$COMPONENT" specified!])
426 ;;
427esac
428
429AC_SUBST(BUILDDIRS)
430
ef416fc2 431dnl
18ecb428 432dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".
ef416fc2 433dnl