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