]> git.ipfire.org Git - thirdparty/cups.git/blob - config-scripts/cups-common.m4
Import CUPS v2.0.3
[thirdparty/cups.git] / config-scripts / cups-common.m4
1 dnl
2 dnl "$Id: cups-common.m4 12336 2014-12-09 21:19:52Z msweet $"
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=2.0.3
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_TOOL(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(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
141 dnl Checks for iconv.h and iconv_open
142 AC_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 AC_SEARCH_LIBS(libiconv_open,iconv,
149 AC_DEFINE(HAVE_ICONV_H)
150 SAVELIBS="$SAVELIBS $LIBS")
151 LIBS="$SAVELIBS")
152
153 dnl Checks for Mini-XML (www.minixml.org)...
154 LIBMXML=""
155 AC_CHECK_HEADER(mxml.h,
156 SAVELIBS="$LIBS"
157 AC_SEARCH_LIBS(mmxlNewElement,mxml,
158 AC_DEFINE(HAVE_MXML_H)
159 LIBMXML="-lmxml")
160 LIBS="$SAVELIBS")
161 AC_SUBST(LIBMXML)
162
163 dnl Checks for statfs and its many headers...
164 AC_CHECK_HEADER(sys/mount.h,AC_DEFINE(HAVE_SYS_MOUNT_H))
165 AC_CHECK_HEADER(sys/statfs.h,AC_DEFINE(HAVE_SYS_STATFS_H))
166 AC_CHECK_HEADER(sys/statvfs.h,AC_DEFINE(HAVE_SYS_STATVFS_H))
167 AC_CHECK_HEADER(sys/vfs.h,AC_DEFINE(HAVE_SYS_VFS_H))
168 AC_CHECK_FUNCS(statfs statvfs)
169
170 dnl Checks for string functions.
171 AC_CHECK_FUNCS(strdup strlcat strlcpy)
172 if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then
173 echo Forcing snprintf emulation for HP-UX.
174 else
175 AC_CHECK_FUNCS(snprintf vsnprintf)
176 fi
177
178 dnl Check for random number functions...
179 AC_CHECK_FUNCS(random lrand48 arc4random)
180
181 dnl Check for geteuid function.
182 AC_CHECK_FUNCS(geteuid)
183
184 dnl Check for setpgid function.
185 AC_CHECK_FUNCS(setpgid)
186
187 dnl Check for vsyslog function.
188 AC_CHECK_FUNCS(vsyslog)
189
190 dnl Checks for signal functions.
191 case "$uname" in
192 Linux | GNU)
193 # Do not use sigset on Linux or GNU HURD
194 ;;
195 *)
196 # Use sigset on other platforms, if available
197 AC_CHECK_FUNCS(sigset)
198 ;;
199 esac
200
201 AC_CHECK_FUNCS(sigaction)
202
203 dnl Checks for wait functions.
204 AC_CHECK_FUNCS(waitpid wait3)
205
206 dnl Check for posix_spawn
207 AC_CHECK_FUNCS(posix_spawn)
208
209 dnl See if the tm structure has the tm_gmtoff member...
210 AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
211 AC_TRY_COMPILE([#include <time.h>],[struct tm t;
212 int o = t.tm_gmtoff;],
213 AC_MSG_RESULT(yes)
214 AC_DEFINE(HAVE_TM_GMTOFF),
215 AC_MSG_RESULT(no))
216
217 dnl See if the stat structure has the st_gen member...
218 AC_MSG_CHECKING(for st_gen member in stat structure)
219 AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat t;
220 int o = t.st_gen;],
221 AC_MSG_RESULT(yes)
222 AC_DEFINE(HAVE_ST_GEN),
223 AC_MSG_RESULT(no))
224
225 dnl See if we have the removefile(3) function for securely removing files
226 AC_CHECK_FUNCS(removefile)
227
228 dnl See if we have libusb...
229 AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
230
231 LIBUSB=""
232 USBQUIRKS=""
233 AC_SUBST(LIBUSB)
234 AC_SUBST(USBQUIRKS)
235
236 if test "x$PKGCONFIG" != x; then
237 if test x$enable_libusb != xno -a $uname != Darwin; then
238 AC_MSG_CHECKING(for libusb-1.0)
239 if $PKGCONFIG --exists libusb-1.0; then
240 AC_MSG_RESULT(yes)
241 AC_DEFINE(HAVE_LIBUSB)
242 CFLAGS="$CFLAGS `$PKGCONFIG --cflags libusb-1.0`"
243 LIBUSB="`$PKGCONFIG --libs libusb-1.0`"
244 USBQUIRKS="\$(DATADIR)/usb"
245 else
246 AC_MSG_RESULT(no)
247 if test x$enable_libusb = xyes; then
248 AC_MSG_ERROR(libusb required for --enable-libusb.)
249 fi
250 fi
251 fi
252 elif test x$enable_libusb = xyes; then
253 AC_MSG_ERROR(Need pkg-config to enable libusb support.)
254 fi
255
256 dnl See if we have libwrap for TCP wrappers support...
257 AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support])
258
259 LIBWRAP=""
260 AC_SUBST(LIBWRAP)
261
262 if test x$enable_tcp_wrappers = xyes; then
263 AC_CHECK_LIB(wrap, hosts_access,[
264 AC_CHECK_HEADER(tcpd.h,
265 AC_DEFINE(HAVE_TCPD_H)
266 LIBWRAP="-lwrap")])
267 fi
268
269 dnl ZLIB
270 INSTALL_GZIP=""
271 LIBZ=""
272 AC_CHECK_HEADER(zlib.h,
273 AC_CHECK_LIB(z, gzgets,
274 AC_DEFINE(HAVE_LIBZ)
275 LIBZ="-lz"
276 LIBS="$LIBS -lz"
277 AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_INFLATECOPY))
278 if test "x$GZIP" != z; then
279 INSTALL_GZIP="-z"
280 fi))
281 AC_SUBST(INSTALL_GZIP)
282 AC_SUBST(LIBZ)
283
284 dnl Flags for "ar" command...
285 case $uname in
286 Darwin* | *BSD*)
287 ARFLAGS="-rcv"
288 ;;
289 *)
290 ARFLAGS="crvs"
291 ;;
292 esac
293
294 AC_SUBST(ARFLAGS)
295
296 dnl Prep libraries specifically for cupsd and backends...
297 BACKLIBS=""
298 SERVERLIBS=""
299 AC_SUBST(BACKLIBS)
300 AC_SUBST(SERVERLIBS)
301
302 dnl See if we have POSIX ACL support...
303 SAVELIBS="$LIBS"
304 LIBS=""
305 AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
306 if test "x$enable_acl" != xno; then
307 AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
308 SERVERLIBS="$SERVERLIBS $LIBS"
309 fi
310 LIBS="$SAVELIBS"
311
312 dnl Check for DBUS support
313 AC_ARG_ENABLE(dbus, [ --disable-dbus build without DBUS support])
314 AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
315 DBUSDIR="$withval")
316
317 DBUSDIR=""
318 DBUS_NOTIFIER=""
319 DBUS_NOTIFIERLIBS=""
320
321 if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
322 AC_MSG_CHECKING(for DBUS)
323 if $PKGCONFIG --exists dbus-1; then
324 AC_MSG_RESULT(yes)
325 AC_DEFINE(HAVE_DBUS)
326 CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
327 SERVERLIBS="$SERVERLIBS `$PKGCONFIG --libs dbus-1`"
328 DBUS_NOTIFIER="dbus"
329 DBUS_NOTIFIERLIBS="`$PKGCONFIG --libs dbus-1`"
330 SAVELIBS="$LIBS"
331 LIBS="$LIBS $DBUS_NOTIFIERLIBS"
332 AC_CHECK_FUNC(dbus_message_iter_init_append,
333 AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND))
334 AC_CHECK_FUNC(dbus_threads_init,
335 AC_DEFINE(HAVE_DBUS_THREADS_INIT))
336 LIBS="$SAVELIBS"
337 if test -d /etc/dbus-1; then
338 DBUSDIR="/etc/dbus-1"
339 fi
340 else
341 AC_MSG_RESULT(no)
342 fi
343 fi
344
345 AC_SUBST(DBUSDIR)
346 AC_SUBST(DBUS_NOTIFIER)
347 AC_SUBST(DBUS_NOTIFIERLIBS)
348
349 dnl Extra platform-specific libraries...
350 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
351 CUPS_DEFAULT_SYSTEM_AUTHKEY=""
352 CUPS_SYSTEM_AUTHKEY=""
353 INSTALLXPC=""
354
355 case $uname in
356 Darwin*)
357 BACKLIBS="$BACKLIBS -framework IOKit"
358 SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
359 LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
360
361 dnl Check for framework headers...
362 AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
363 AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
364 AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
365 AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
366
367 dnl Check for dynamic store function...
368 AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
369
370 dnl Check for the new membership functions in MacOSX 10.4...
371 AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
372 AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
373 AC_CHECK_FUNCS(mbr_uid_to_uuid)
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 12336 2014-12-09 21:19:52Z msweet $".
469 dnl