]> git.ipfire.org Git - thirdparty/cups.git/blob - config-scripts/cups-common.m4
Merge changes from CUPS 1.6svn-r10390.
[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-2012 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.6svn"
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
48 AC_PROG_CPP
49 AC_PROG_CXX
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(HTMLDOC,htmldoc)
55 AC_PATH_PROG(LD,ld)
56 AC_PATH_PROG(LN,ln)
57 AC_PATH_PROG(MV,mv)
58 AC_PATH_PROG(RM,rm)
59 AC_PATH_PROG(RMDIR,rmdir)
60 AC_PATH_PROG(SED,sed)
61 AC_PATH_PROG(XDGOPEN,xdg-open)
62 if test "x$XDGOPEN" = x; then
63 CUPS_HTMLVIEW="htmlview"
64 else
65 CUPS_HTMLVIEW="$XDGOPEN"
66 fi
67 AC_SUBST(CUPS_HTMLVIEW)
68
69 AC_MSG_CHECKING(for install-sh script)
70 INSTALL="`pwd`/install-sh"
71 AC_SUBST(INSTALL)
72 AC_MSG_RESULT(using $INSTALL)
73
74 if test "x$AR" = x; then
75 AC_MSG_ERROR([Unable to find required library archive command.])
76 fi
77 if test "x$CC" = x; then
78 AC_MSG_ERROR([Unable to find required C compiler command.])
79 fi
80
81 dnl Static library option...
82 INSTALLSTATIC=""
83 AC_ARG_ENABLE(static, [ --enable-static install static libraries])
84
85 if test x$enable_static = xyes; then
86 echo Installing static libraries...
87 INSTALLSTATIC="installstatic"
88 fi
89
90 AC_SUBST(INSTALLSTATIC)
91
92 dnl Check for pkg-config, which is used for some other tests later on...
93 AC_PATH_PROG(PKGCONFIG, pkg-config)
94
95 dnl Check for libraries...
96 AC_SEARCH_LIBS(fmod, m)
97 AC_SEARCH_LIBS(crypt, crypt)
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(string.h,AC_DEFINE(HAVE_STRING_H))
134 AC_CHECK_HEADER(strings.h,AC_DEFINE(HAVE_STRINGS_H))
135 AC_CHECK_HEADER(bstring.h,AC_DEFINE(HAVE_BSTRING_H))
136 AC_CHECK_HEADER(usersec.h,AC_DEFINE(HAVE_USERSEC_H))
137 AC_CHECK_HEADER(sys/ioctl.h,AC_DEFINE(HAVE_SYS_IOCTL_H))
138 AC_CHECK_HEADER(sys/param.h,AC_DEFINE(HAVE_SYS_PARAM_H))
139 AC_CHECK_HEADER(sys/ucred.h,AC_DEFINE(HAVE_SYS_UCRED_H))
140 AC_CHECK_HEADER(scsi/sg.h,AC_DEFINE(HAVE_SCSI_SG_H))
141
142 dnl Checks for iconv.h and iconv_open
143 AC_CHECK_HEADER(iconv.h,
144 SAVELIBS="$LIBS"
145 LIBS=""
146 AC_SEARCH_LIBS(iconv_open,iconv,
147 AC_DEFINE(HAVE_ICONV_H)
148 SAVELIBS="$SAVELIBS $LIBS")
149 LIBS="$SAVELIBS")
150
151 dnl Checks for Mini-XML (www.minixml.org)...
152 LIBMXML=""
153 AC_CHECK_HEADER(mxml.h,
154 SAVELIBS="$LIBS"
155 AC_SEARCH_LIBS(mmxlNewElement,mxml,
156 AC_DEFINE(HAVE_MXML_H)
157 LIBMXML="-lmxml")
158 LIBS="$SAVELIBS")
159 AC_SUBST(LIBMXML)
160
161 dnl Checks for statfs and its many headers...
162 AC_CHECK_HEADER(sys/mount.h,AC_DEFINE(HAVE_SYS_MOUNT_H))
163 AC_CHECK_HEADER(sys/statfs.h,AC_DEFINE(HAVE_SYS_STATFS_H))
164 AC_CHECK_HEADER(sys/statvfs.h,AC_DEFINE(HAVE_SYS_STATVFS_H))
165 AC_CHECK_HEADER(sys/vfs.h,AC_DEFINE(HAVE_SYS_VFS_H))
166 AC_CHECK_FUNCS(statfs statvfs)
167
168 dnl Checks for string functions.
169 AC_CHECK_FUNCS(strdup strlcat strlcpy)
170 if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then
171 echo Forcing snprintf emulation for HP-UX.
172 else
173 AC_CHECK_FUNCS(snprintf vsnprintf)
174 fi
175
176 dnl Check for random number functions...
177 AC_CHECK_FUNCS(random lrand48 arc4random)
178
179 dnl Check for geteuid function.
180 AC_CHECK_FUNCS(geteuid)
181
182 dnl Check for setpgid function.
183 AC_CHECK_FUNCS(setpgid)
184
185 dnl Check for vsyslog function.
186 AC_CHECK_FUNCS(vsyslog)
187
188 dnl Checks for signal functions.
189 case "$uname" in
190 Linux | GNU)
191 # Do not use sigset on Linux or GNU HURD
192 ;;
193 *)
194 # Use sigset on other platforms, if available
195 AC_CHECK_FUNCS(sigset)
196 ;;
197 esac
198
199 AC_CHECK_FUNCS(sigaction)
200
201 dnl Checks for wait functions.
202 AC_CHECK_FUNCS(waitpid wait3)
203
204 dnl See if the tm structure has the tm_gmtoff member...
205 AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
206 AC_TRY_COMPILE([#include <time.h>],[struct tm t;
207 int o = t.tm_gmtoff;],
208 AC_MSG_RESULT(yes)
209 AC_DEFINE(HAVE_TM_GMTOFF),
210 AC_MSG_RESULT(no))
211
212 dnl See if the stat structure has the st_gen member...
213 AC_MSG_CHECKING(for st_gen member in stat structure)
214 AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat t;
215 int o = t.st_gen;],
216 AC_MSG_RESULT(yes)
217 AC_DEFINE(HAVE_ST_GEN),
218 AC_MSG_RESULT(no))
219
220 dnl See if we have the removefile(3) function for securely removing files
221 AC_CHECK_FUNCS(removefile)
222
223 dnl See if we have libusb...
224 AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
225
226 LIBUSB=""
227 AC_SUBST(LIBUSB)
228
229 if test "x$PKGCONFIG" != x; then
230 if test x$enable_libusb = xyes -o $uname != Darwin; then
231 AC_MSG_CHECKING(for libusb-1.0)
232 if $PKGCONFIG --exists libusb-1.0; then
233 AC_MSG_RESULT(yes)
234 AC_DEFINE(HAVE_LIBUSB)
235 CFLAGS="$CFLAGS `$PKGCONFIG --cflags libusb-1.0`"
236 LIBUSB="`$PKGCONFIG --libs libusb-1.0`"
237 else
238 AC_MSG_RESULT(no)
239 fi
240 fi
241 elif test x$enable_libusb = xyes; then
242 AC_MSG_ERROR(Need pkg-config to enable libusb support.)
243 fi
244
245 dnl See if we have libwrap for TCP wrappers support...
246 AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support])
247
248 LIBWRAP=""
249 AC_SUBST(LIBWRAP)
250
251 if test x$enable_tcp_wrappers = xyes; then
252 AC_CHECK_LIB(wrap, hosts_access,[
253 AC_CHECK_HEADER(tcpd.h,
254 AC_DEFINE(HAVE_TCPD_H)
255 LIBWRAP="-lwrap")])
256 fi
257
258 dnl ZLIB
259 INSTALL_GZIP=""
260 LIBZ=""
261 AC_CHECK_HEADER(zlib.h,
262 AC_CHECK_LIB(z, gzgets,
263 AC_DEFINE(HAVE_LIBZ)
264 LIBZ="-lz"
265 LIBS="$LIBS -lz"
266 if test "x$GZIP" != z; then
267 INSTALL_GZIP="-z"
268 fi))
269 AC_SUBST(INSTALL_GZIP)
270 AC_SUBST(LIBZ)
271
272 dnl Flags for "ar" command...
273 case $uname in
274 Darwin* | *BSD*)
275 ARFLAGS="-rcv"
276 ;;
277 *)
278 ARFLAGS="crvs"
279 ;;
280 esac
281
282 AC_SUBST(ARFLAGS)
283
284 dnl Prep libraries specifically for cupsd and backends...
285 BACKLIBS=""
286 SERVERLIBS=""
287 AC_SUBST(BACKLIBS)
288 AC_SUBST(SERVERLIBS)
289
290 dnl See if we have POSIX ACL support...
291 SAVELIBS="$LIBS"
292 LIBS=""
293 AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
294 if test "x$enable_acl" != xno; then
295 AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
296 SERVERLIBS="$SERVERLIBS $LIBS"
297 fi
298 LIBS="$SAVELIBS"
299
300 dnl Check for DBUS support
301 if test -d /etc/dbus-1; then
302 DBUSDIR="/etc/dbus-1"
303 else
304 DBUSDIR=""
305 fi
306
307 AC_ARG_ENABLE(dbus, [ --enable-dbus build with DBUS support])
308 AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
309 DBUSDIR="$withval")
310
311 DBUS_NOTIFIER=""
312 DBUS_NOTIFIERLIBS=""
313
314 if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
315 AC_MSG_CHECKING(for DBUS)
316 if $PKGCONFIG --exists dbus-1; then
317 AC_MSG_RESULT(yes)
318 AC_DEFINE(HAVE_DBUS)
319 CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
320 SERVERLIBS="$SERVERLIBS `$PKGCONFIG --libs dbus-1`"
321 DBUS_NOTIFIER="dbus"
322 DBUS_NOTIFIERLIBS="`$PKGCONFIG --libs dbus-1`"
323 SAVELIBS="$LIBS"
324 LIBS="$LIBS $DBUS_NOTIFIERLIBS"
325 AC_CHECK_FUNC(dbus_message_iter_init_append,
326 AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND))
327 LIBS="$SAVELIBS"
328 else
329 AC_MSG_RESULT(no)
330 fi
331 fi
332
333 AC_SUBST(DBUSDIR)
334 AC_SUBST(DBUS_NOTIFIER)
335 AC_SUBST(DBUS_NOTIFIERLIBS)
336
337 dnl Extra platform-specific libraries...
338 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
339 CUPS_SYSTEM_AUTHKEY=""
340 INSTALLXPC=""
341
342 case $uname in
343 Darwin*)
344 BACKLIBS="$BACKLIBS -framework IOKit"
345 SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
346 LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
347
348 dnl Check for framework headers...
349 AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
350 AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
351 AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
352 AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
353 AC_CHECK_HEADER(IOKit/pwr_mgt/IOPMLibPrivate.h,AC_DEFINE(HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H))
354
355 dnl Check for dynamic store function...
356 AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
357
358 dnl Check for the new membership functions in MacOSX 10.4...
359 AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
360 AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
361 AC_CHECK_FUNCS(mbr_uid_to_uuid)
362
363 dnl Check for the vproc_transaction_begin/end stuff...
364 AC_CHECK_FUNCS(vproc_transaction_begin)
365
366 dnl Need <dlfcn.h> header...
367 AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
368
369 dnl Check for notify_post support
370 AC_CHECK_HEADER(notify.h,AC_DEFINE(HAVE_NOTIFY_H))
371 AC_CHECK_FUNCS(notify_post)
372
373 dnl Check for Authorization Services support
374 AC_ARG_WITH(adminkey, [ --with-adminkey set the default SystemAuthKey value],
375 default_adminkey="$withval",
376 default_adminkey="default")
377 AC_ARG_WITH(operkey, [ --with-operkey set the default operator @AUTHKEY value],
378 default_operkey="$withval",
379 default_operkey="default")
380
381 AC_CHECK_HEADER(Security/Authorization.h, [
382 AC_DEFINE(HAVE_AUTHORIZATION_H)
383
384 if test "x$default_adminkey" != xdefault; then
385 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
386 elif grep -q system.print.operator /etc/authorization; then
387 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
388 else
389 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
390 fi
391
392 if test "x$default_operkey" != xdefault; then
393 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
394 elif grep -q system.print.operator /etc/authorization; then
395 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
396 else
397 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
398 fi])
399 AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
400
401 dnl Check for sandbox/Seatbelt support
402 if test $uversion -ge 100; then
403 AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
404 fi
405 if test $uversion -ge 110; then
406 # Broken public headers in 10.7...
407 AC_MSG_CHECKING(for sandbox/private.h presence)
408 if test -f /usr/local/include/sandbox/private.h; then
409 AC_MSG_RESULT(yes)
410 else
411 AC_MSG_RESULT(no)
412 AC_MSG_ERROR(Run 'sudo mkdir -p /usr/local/include/sandbox' and 'sudo touch /usr/local/include/sandbox/private.h' to build CUPS.)
413 fi
414 fi
415
416 dnl Check for XPC support
417 AC_CHECK_HEADER(xpc/xpc.h,
418 AC_DEFINE(HAVE_XPC)
419 INSTALLXPC="install-xpc")
420 AC_CHECK_HEADER(xpc/private.h,
421 AC_DEFINE(HAVE_XPC_PRIVATE_H))
422 ;;
423 esac
424
425 AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
426 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
427 AC_SUBST(CUPS_SYSTEM_AUTHKEY)
428 AC_SUBST(INSTALLXPC)
429
430 dnl Check for build components
431 COMPONENTS="all"
432
433 AC_ARG_WITH(components, [ --with-components set components to build:
434 - "all" (default) builds everything
435 - "core" builds libcups and ipptool],
436 COMPONENTS="$withval")
437
438 case "$COMPONENTS" in
439 all)
440 BUILDDIRS="filter backend berkeley cgi-bin monitor notifier ppdc scheduler systemv conf data desktop locale man doc examples templates"
441 ;;
442
443 core)
444 BUILDDIRS="data locale"
445 ;;
446
447 *)
448 AC_MSG_ERROR([Bad build component "$COMPONENT" specified!])
449 ;;
450 esac
451
452 AC_SUBST(BUILDDIRS)
453
454 dnl
455 dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".
456 dnl