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