]> git.ipfire.org Git - thirdparty/cups.git/blob - config-scripts/cups-common.m4
Import CUPS v2.0rc1
[thirdparty/cups.git] / config-scripts / cups-common.m4
1 dnl
2 dnl "$Id: cups-common.m4 12140 2014-08-30 01:51:22Z 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.0rc1
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 LIBS="$SAVELIBS")
149
150 dnl Checks for Mini-XML (www.minixml.org)...
151 LIBMXML=""
152 AC_CHECK_HEADER(mxml.h,
153 SAVELIBS="$LIBS"
154 AC_SEARCH_LIBS(mmxlNewElement,mxml,
155 AC_DEFINE(HAVE_MXML_H)
156 LIBMXML="-lmxml")
157 LIBS="$SAVELIBS")
158 AC_SUBST(LIBMXML)
159
160 dnl Checks for statfs and its many headers...
161 AC_CHECK_HEADER(sys/mount.h,AC_DEFINE(HAVE_SYS_MOUNT_H))
162 AC_CHECK_HEADER(sys/statfs.h,AC_DEFINE(HAVE_SYS_STATFS_H))
163 AC_CHECK_HEADER(sys/statvfs.h,AC_DEFINE(HAVE_SYS_STATVFS_H))
164 AC_CHECK_HEADER(sys/vfs.h,AC_DEFINE(HAVE_SYS_VFS_H))
165 AC_CHECK_FUNCS(statfs statvfs)
166
167 dnl Checks for string functions.
168 AC_CHECK_FUNCS(strdup strlcat strlcpy)
169 if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then
170 echo Forcing snprintf emulation for HP-UX.
171 else
172 AC_CHECK_FUNCS(snprintf vsnprintf)
173 fi
174
175 dnl Check for random number functions...
176 AC_CHECK_FUNCS(random lrand48 arc4random)
177
178 dnl Check for geteuid function.
179 AC_CHECK_FUNCS(geteuid)
180
181 dnl Check for setpgid function.
182 AC_CHECK_FUNCS(setpgid)
183
184 dnl Check for vsyslog function.
185 AC_CHECK_FUNCS(vsyslog)
186
187 dnl Checks for signal functions.
188 case "$uname" in
189 Linux | GNU)
190 # Do not use sigset on Linux or GNU HURD
191 ;;
192 *)
193 # Use sigset on other platforms, if available
194 AC_CHECK_FUNCS(sigset)
195 ;;
196 esac
197
198 AC_CHECK_FUNCS(sigaction)
199
200 dnl Checks for wait functions.
201 AC_CHECK_FUNCS(waitpid wait3)
202
203 dnl Check for posix_spawn
204 AC_CHECK_FUNCS(posix_spawn)
205
206 dnl See if the tm structure has the tm_gmtoff member...
207 AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
208 AC_TRY_COMPILE([#include <time.h>],[struct tm t;
209 int o = t.tm_gmtoff;],
210 AC_MSG_RESULT(yes)
211 AC_DEFINE(HAVE_TM_GMTOFF),
212 AC_MSG_RESULT(no))
213
214 dnl See if the stat structure has the st_gen member...
215 AC_MSG_CHECKING(for st_gen member in stat structure)
216 AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat t;
217 int o = t.st_gen;],
218 AC_MSG_RESULT(yes)
219 AC_DEFINE(HAVE_ST_GEN),
220 AC_MSG_RESULT(no))
221
222 dnl See if we have the removefile(3) function for securely removing files
223 AC_CHECK_FUNCS(removefile)
224
225 dnl See if we have libusb...
226 AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
227
228 LIBUSB=""
229 USBQUIRKS=""
230 AC_SUBST(LIBUSB)
231 AC_SUBST(USBQUIRKS)
232
233 if test "x$PKGCONFIG" != x; then
234 if test x$enable_libusb != xno -a $uname != Darwin; then
235 AC_MSG_CHECKING(for libusb-1.0)
236 if $PKGCONFIG --exists libusb-1.0; then
237 AC_MSG_RESULT(yes)
238 AC_DEFINE(HAVE_LIBUSB)
239 CFLAGS="$CFLAGS `$PKGCONFIG --cflags libusb-1.0`"
240 LIBUSB="`$PKGCONFIG --libs libusb-1.0`"
241 USBQUIRKS="\$(DATADIR)/usb"
242 else
243 AC_MSG_RESULT(no)
244 if test x$enable_libusb = xyes; then
245 AC_MSG_ERROR(libusb required for --enable-libusb.)
246 fi
247 fi
248 fi
249 elif test x$enable_libusb = xyes; then
250 AC_MSG_ERROR(Need pkg-config to enable libusb support.)
251 fi
252
253 dnl See if we have libwrap for TCP wrappers support...
254 AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support])
255
256 LIBWRAP=""
257 AC_SUBST(LIBWRAP)
258
259 if test x$enable_tcp_wrappers = xyes; then
260 AC_CHECK_LIB(wrap, hosts_access,[
261 AC_CHECK_HEADER(tcpd.h,
262 AC_DEFINE(HAVE_TCPD_H)
263 LIBWRAP="-lwrap")])
264 fi
265
266 dnl ZLIB
267 INSTALL_GZIP=""
268 LIBZ=""
269 AC_CHECK_HEADER(zlib.h,
270 AC_CHECK_LIB(z, gzgets,
271 AC_DEFINE(HAVE_LIBZ)
272 LIBZ="-lz"
273 LIBS="$LIBS -lz"
274 AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_INFLATECOPY))
275 if test "x$GZIP" != z; then
276 INSTALL_GZIP="-z"
277 fi))
278 AC_SUBST(INSTALL_GZIP)
279 AC_SUBST(LIBZ)
280
281 dnl Flags for "ar" command...
282 case $uname in
283 Darwin* | *BSD*)
284 ARFLAGS="-rcv"
285 ;;
286 *)
287 ARFLAGS="crvs"
288 ;;
289 esac
290
291 AC_SUBST(ARFLAGS)
292
293 dnl Prep libraries specifically for cupsd and backends...
294 BACKLIBS=""
295 SERVERLIBS=""
296 AC_SUBST(BACKLIBS)
297 AC_SUBST(SERVERLIBS)
298
299 dnl See if we have POSIX ACL support...
300 SAVELIBS="$LIBS"
301 LIBS=""
302 AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
303 if test "x$enable_acl" != xno; then
304 AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
305 SERVERLIBS="$SERVERLIBS $LIBS"
306 fi
307 LIBS="$SAVELIBS"
308
309 dnl Check for DBUS support
310 AC_ARG_ENABLE(dbus, [ --disable-dbus build without DBUS support])
311 AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
312 DBUSDIR="$withval")
313
314 DBUSDIR=""
315 DBUS_NOTIFIER=""
316 DBUS_NOTIFIERLIBS=""
317
318 if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
319 AC_MSG_CHECKING(for DBUS)
320 if $PKGCONFIG --exists dbus-1; then
321 AC_MSG_RESULT(yes)
322 AC_DEFINE(HAVE_DBUS)
323 CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
324 SERVERLIBS="$SERVERLIBS `$PKGCONFIG --libs dbus-1`"
325 DBUS_NOTIFIER="dbus"
326 DBUS_NOTIFIERLIBS="`$PKGCONFIG --libs dbus-1`"
327 SAVELIBS="$LIBS"
328 LIBS="$LIBS $DBUS_NOTIFIERLIBS"
329 AC_CHECK_FUNC(dbus_message_iter_init_append,
330 AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND))
331 AC_CHECK_FUNC(dbus_threads_init,
332 AC_DEFINE(HAVE_DBUS_THREADS_INIT))
333 LIBS="$SAVELIBS"
334 if test -d /etc/dbus-1; then
335 DBUSDIR="/etc/dbus-1"
336 fi
337 else
338 AC_MSG_RESULT(no)
339 fi
340 fi
341
342 AC_SUBST(DBUSDIR)
343 AC_SUBST(DBUS_NOTIFIER)
344 AC_SUBST(DBUS_NOTIFIERLIBS)
345
346 dnl Extra platform-specific libraries...
347 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
348 CUPS_DEFAULT_SYSTEM_AUTHKEY=""
349 CUPS_SYSTEM_AUTHKEY=""
350 INSTALLXPC=""
351
352 case $uname in
353 Darwin*)
354 BACKLIBS="$BACKLIBS -framework IOKit"
355 SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
356 LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
357
358 dnl Check for framework headers...
359 AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
360 AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
361 AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
362 AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_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 Need <dlfcn.h> header...
373 AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
374
375 dnl Check for notify_post support
376 AC_CHECK_HEADER(notify.h,AC_DEFINE(HAVE_NOTIFY_H))
377 AC_CHECK_FUNCS(notify_post)
378
379 dnl Check for Authorization Services support
380 AC_ARG_WITH(adminkey, [ --with-adminkey set the default SystemAuthKey value],
381 default_adminkey="$withval",
382 default_adminkey="default")
383 AC_ARG_WITH(operkey, [ --with-operkey set the default operator @AUTHKEY value],
384 default_operkey="$withval",
385 default_operkey="default")
386
387 AC_CHECK_HEADER(Security/Authorization.h, [
388 AC_DEFINE(HAVE_AUTHORIZATION_H)
389
390 if test "x$default_adminkey" != xdefault; then
391 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
392 CUPS_DEFAULT_SYSTEM_AUTHKEY="$default_adminkey"
393 elif grep -q system.print.operator /etc/authorization; then
394 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
395 CUPS_DEFAULT_SYSTEM_AUTHKEY="system.print.admin"
396 else
397 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
398 CUPS_DEFAULT_SYSTEM_AUTHKEY="system.preferences"
399 fi
400
401 if test "x$default_operkey" != xdefault; then
402 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
403 elif grep -q system.print.operator /etc/authorization; then
404 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
405 else
406 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
407 fi])
408 AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
409
410 dnl Check for sandbox/Seatbelt support
411 if test $uversion -ge 100; then
412 AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
413 fi
414 if test $uversion -ge 110 -a $uversion -lt 120; then
415 # Broken public headers in 10.7.x...
416 AC_MSG_CHECKING(for sandbox/private.h presence)
417 if test -f /usr/local/include/sandbox/private.h; then
418 AC_MSG_RESULT(yes)
419 else
420 AC_MSG_RESULT(no)
421 AC_MSG_ERROR(Run 'sudo mkdir -p /usr/local/include/sandbox' and 'sudo touch /usr/local/include/sandbox/private.h' to build CUPS.)
422 fi
423 fi
424
425 dnl Check for XPC support
426 AC_CHECK_HEADER(xpc/xpc.h,
427 AC_DEFINE(HAVE_XPC)
428 INSTALLXPC="install-xpc")
429 AC_CHECK_HEADER(xpc/private.h,
430 AC_DEFINE(HAVE_XPC_PRIVATE_H))
431 ;;
432 esac
433
434 AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
435 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
436 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_SYSTEM_AUTHKEY, "$CUPS_DEFAULT_SYSTEM_AUTHKEY")
437 AC_SUBST(CUPS_SYSTEM_AUTHKEY)
438 AC_SUBST(INSTALLXPC)
439
440 dnl Check for build components
441 COMPONENTS="all"
442
443 AC_ARG_WITH(components, [ --with-components set components to build:
444 - "all" (default) builds everything
445 - "core" builds libcups and ipptool],
446 COMPONENTS="$withval")
447
448 case "$COMPONENTS" in
449 all)
450 BUILDDIRS="filter backend berkeley cgi-bin monitor notifier ppdc scheduler systemv conf data desktop locale man doc examples templates"
451 ;;
452
453 core)
454 BUILDDIRS="data locale"
455 ;;
456
457 *)
458 AC_MSG_ERROR([Bad build component "$COMPONENT" specified!])
459 ;;
460 esac
461
462 AC_SUBST(BUILDDIRS)
463
464 dnl
465 dnl End of "$Id: cups-common.m4 12140 2014-08-30 01:51:22Z msweet $".
466 dnl