]> git.ipfire.org Git - thirdparty/cups.git/blob - config-scripts/cups-common.m4
Prep for 1.7rc1.
[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-2013 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.7rc1"
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 AC_SUBST(LIBUSB)
229
230 if 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
241 fi
242 elif test x$enable_libusb = xyes; then
243 AC_MSG_ERROR(Need pkg-config to enable libusb support.)
244 fi
245
246 dnl See if we have libwrap for TCP wrappers support...
247 AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support])
248
249 LIBWRAP=""
250 AC_SUBST(LIBWRAP)
251
252 if 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")])
257 fi
258
259 dnl ZLIB
260 INSTALL_GZIP=""
261 LIBZ=""
262 AC_CHECK_HEADER(zlib.h,
263 AC_CHECK_LIB(z, gzgets,
264 AC_DEFINE(HAVE_LIBZ)
265 LIBZ="-lz"
266 LIBS="$LIBS -lz"
267 AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_INFLATECOPY))
268 if test "x$GZIP" != z; then
269 INSTALL_GZIP="-z"
270 fi))
271 AC_SUBST(INSTALL_GZIP)
272 AC_SUBST(LIBZ)
273
274 dnl Flags for "ar" command...
275 case $uname in
276 Darwin* | *BSD*)
277 ARFLAGS="-rcv"
278 ;;
279 *)
280 ARFLAGS="crvs"
281 ;;
282 esac
283
284 AC_SUBST(ARFLAGS)
285
286 dnl Prep libraries specifically for cupsd and backends...
287 BACKLIBS=""
288 SERVERLIBS=""
289 AC_SUBST(BACKLIBS)
290 AC_SUBST(SERVERLIBS)
291
292 dnl See if we have POSIX ACL support...
293 SAVELIBS="$LIBS"
294 LIBS=""
295 AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
296 if test "x$enable_acl" != xno; then
297 AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
298 SERVERLIBS="$SERVERLIBS $LIBS"
299 fi
300 LIBS="$SAVELIBS"
301
302 dnl Check for DBUS support
303 if test -d /etc/dbus-1; then
304 DBUSDIR="/etc/dbus-1"
305 else
306 DBUSDIR=""
307 fi
308
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 DBUS_NOTIFIER=""
314 DBUS_NOTIFIERLIBS=""
315
316 if 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)
332 fi
333 fi
334
335 AC_SUBST(DBUSDIR)
336 AC_SUBST(DBUS_NOTIFIER)
337 AC_SUBST(DBUS_NOTIFIERLIBS)
338
339 dnl Extra platform-specific libraries...
340 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
341 CUPS_DEFAULT_SYSTEM_AUTHKEY=""
342 CUPS_SYSTEM_AUTHKEY=""
343 INSTALLXPC=""
344
345 case $uname in
346 Darwin*)
347 BACKLIBS="$BACKLIBS -framework IOKit"
348 SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
349 LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
350
351 dnl Check for framework headers...
352 AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
353 AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
354 AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
355 AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
356 AC_CHECK_HEADER(IOKit/pwr_mgt/IOPMLibPrivate.h,AC_DEFINE(HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H))
357
358 dnl Check for dynamic store function...
359 AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
360
361 dnl Check for the new membership functions in MacOSX 10.4...
362 AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
363 AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
364 AC_CHECK_FUNCS(mbr_uid_to_uuid)
365
366 dnl Check for the vproc_transaction_begin/end stuff...
367 AC_CHECK_FUNCS(vproc_transaction_begin)
368
369 dnl Need <dlfcn.h> header...
370 AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
371
372 dnl Check for notify_post support
373 AC_CHECK_HEADER(notify.h,AC_DEFINE(HAVE_NOTIFY_H))
374 AC_CHECK_FUNCS(notify_post)
375
376 dnl Check for Authorization Services support
377 AC_ARG_WITH(adminkey, [ --with-adminkey set the default SystemAuthKey value],
378 default_adminkey="$withval",
379 default_adminkey="default")
380 AC_ARG_WITH(operkey, [ --with-operkey set the default operator @AUTHKEY value],
381 default_operkey="$withval",
382 default_operkey="default")
383
384 AC_CHECK_HEADER(Security/Authorization.h, [
385 AC_DEFINE(HAVE_AUTHORIZATION_H)
386
387 if test "x$default_adminkey" != xdefault; then
388 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
389 CUPS_DEFAULT_SYSTEM_AUTHKEY="$default_adminkey"
390 elif grep -q system.print.operator /etc/authorization; then
391 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
392 CUPS_DEFAULT_SYSTEM_AUTHKEY="system.print.admin"
393 else
394 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
395 CUPS_DEFAULT_SYSTEM_AUTHKEY="system.preferences"
396 fi
397
398 if test "x$default_operkey" != xdefault; then
399 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
400 elif grep -q system.print.operator /etc/authorization; then
401 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
402 else
403 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
404 fi])
405 AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
406
407 dnl Check for sandbox/Seatbelt support
408 if test $uversion -ge 100; then
409 AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
410 fi
411 if test $uversion -ge 110 -a $uversion -lt 120; then
412 # Broken public headers in 10.7.x...
413 AC_MSG_CHECKING(for sandbox/private.h presence)
414 if test -f /usr/local/include/sandbox/private.h; then
415 AC_MSG_RESULT(yes)
416 else
417 AC_MSG_RESULT(no)
418 AC_MSG_ERROR(Run 'sudo mkdir -p /usr/local/include/sandbox' and 'sudo touch /usr/local/include/sandbox/private.h' to build CUPS.)
419 fi
420 fi
421
422 dnl Check for XPC support
423 AC_CHECK_HEADER(xpc/xpc.h,
424 AC_DEFINE(HAVE_XPC)
425 INSTALLXPC="install-xpc")
426 AC_CHECK_HEADER(xpc/private.h,
427 AC_DEFINE(HAVE_XPC_PRIVATE_H))
428 ;;
429 esac
430
431 AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
432 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
433 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_SYSTEM_AUTHKEY, "$CUPS_DEFAULT_SYSTEM_AUTHKEY")
434 AC_SUBST(CUPS_SYSTEM_AUTHKEY)
435 AC_SUBST(INSTALLXPC)
436
437 dnl Check for build components
438 COMPONENTS="all"
439
440 AC_ARG_WITH(components, [ --with-components set components to build:
441 - "all" (default) builds everything
442 - "core" builds libcups and ipptool],
443 COMPONENTS="$withval")
444
445 case "$COMPONENTS" in
446 all)
447 BUILDDIRS="filter backend berkeley cgi-bin monitor notifier ppdc scheduler systemv conf data desktop locale man doc examples templates"
448 ;;
449
450 core)
451 BUILDDIRS="data locale"
452 ;;
453
454 *)
455 AC_MSG_ERROR([Bad build component "$COMPONENT" specified!])
456 ;;
457 esac
458
459 AC_SUBST(BUILDDIRS)
460
461 dnl
462 dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".
463 dnl