]> git.ipfire.org Git - thirdparty/cups.git/blob - config-scripts/cups-common.m4
Merge changes from CUPS 1.5svn-r9400
[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-2010 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.5svn"
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(HTMLDOC,htmldoc)
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 libraries...
92 AC_SEARCH_LIBS(crypt, crypt)
93 AC_SEARCH_LIBS(getspent, sec gen)
94
95 LIBMALLOC=""
96 AC_ARG_ENABLE(mallinfo, [ --enable-mallinfo build with malloc debug logging])
97
98 if test x$enable_mallinfo = xyes; then
99 SAVELIBS="$LIBS"
100 LIBS=""
101 AC_SEARCH_LIBS(mallinfo, malloc, AC_DEFINE(HAVE_MALLINFO))
102 LIBMALLOC="$LIBS"
103 LIBS="$SAVELIBS"
104 fi
105
106 AC_SUBST(LIBMALLOC)
107
108 dnl Check for libpaper support...
109 AC_ARG_ENABLE(libpaper, [ --enable-libpaper build with libpaper support])
110
111 if test x$enable_libpaper = xyes; then
112 AC_CHECK_LIB(paper,systempapername,
113 AC_DEFINE(HAVE_LIBPAPER)
114 LIBPAPER="-lpaper",
115 LIBPAPER="")
116 else
117 LIBPAPER=""
118 fi
119 AC_SUBST(LIBPAPER)
120
121 dnl Checks for header files.
122 AC_HEADER_STDC
123 AC_CHECK_HEADER(crypt.h,AC_DEFINE(HAVE_CRYPT_H))
124 AC_CHECK_HEADER(langinfo.h,AC_DEFINE(HAVE_LANGINFO_H))
125 AC_CHECK_HEADER(malloc.h,AC_DEFINE(HAVE_MALLOC_H))
126 AC_CHECK_HEADER(shadow.h,AC_DEFINE(HAVE_SHADOW_H))
127 AC_CHECK_HEADER(string.h,AC_DEFINE(HAVE_STRING_H))
128 AC_CHECK_HEADER(strings.h,AC_DEFINE(HAVE_STRINGS_H))
129 AC_CHECK_HEADER(bstring.h,AC_DEFINE(HAVE_BSTRING_H))
130 AC_CHECK_HEADER(usersec.h,AC_DEFINE(HAVE_USERSEC_H))
131 AC_CHECK_HEADER(sys/ioctl.h,AC_DEFINE(HAVE_SYS_IOCTL_H))
132 AC_CHECK_HEADER(sys/param.h,AC_DEFINE(HAVE_SYS_PARAM_H))
133 AC_CHECK_HEADER(sys/ucred.h,AC_DEFINE(HAVE_SYS_UCRED_H))
134 AC_CHECK_HEADER(scsi/sg.h,AC_DEFINE(HAVE_SCSI_SG_H))
135
136 dnl Checks for iconv.h and iconv_open
137 AC_CHECK_HEADER(iconv.h,
138 SAVELIBS="$LIBS"
139 LIBS=""
140 AC_SEARCH_LIBS(iconv_open,iconv,
141 AC_DEFINE(HAVE_ICONV_H)
142 SAVELIBS="$SAVELIBS $LIBS")
143 LIBS="$SAVELIBS")
144
145 dnl Checks for statfs and its many headers...
146 AC_CHECK_HEADER(sys/mount.h,AC_DEFINE(HAVE_SYS_MOUNT_H))
147 AC_CHECK_HEADER(sys/statfs.h,AC_DEFINE(HAVE_SYS_STATFS_H))
148 AC_CHECK_HEADER(sys/statvfs.h,AC_DEFINE(HAVE_SYS_STATVFS_H))
149 AC_CHECK_HEADER(sys/vfs.h,AC_DEFINE(HAVE_SYS_VFS_H))
150 AC_CHECK_FUNCS(statfs statvfs)
151
152 dnl Checks for string functions.
153 AC_CHECK_FUNCS(strdup strcasecmp strncasecmp strlcat strlcpy)
154 if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then
155 echo Forcing snprintf emulation for HP-UX.
156 else
157 AC_CHECK_FUNCS(snprintf vsnprintf)
158 fi
159
160 dnl Check for random number functions...
161 AC_CHECK_FUNCS(random lrand48 arc4random)
162
163 dnl Check for geteuid function.
164 AC_CHECK_FUNCS(geteuid)
165
166 dnl Check for vsyslog function.
167 AC_CHECK_FUNCS(vsyslog)
168
169 dnl Checks for signal functions.
170 case "$uname" in
171 Linux | GNU)
172 # Do not use sigset on Linux or GNU HURD
173 ;;
174 *)
175 # Use sigset on other platforms, if available
176 AC_CHECK_FUNCS(sigset)
177 ;;
178 esac
179
180 AC_CHECK_FUNCS(sigaction)
181
182 dnl Checks for wait functions.
183 AC_CHECK_FUNCS(waitpid wait3)
184
185 dnl See if the tm structure has the tm_gmtoff member...
186 AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
187 AC_TRY_COMPILE([#include <time.h>],[struct tm t;
188 int o = t.tm_gmtoff;],
189 AC_MSG_RESULT(yes)
190 AC_DEFINE(HAVE_TM_GMTOFF),
191 AC_MSG_RESULT(no))
192
193 dnl See if the stat structure has the st_gen member...
194 AC_MSG_CHECKING(for st_gen member in stat structure)
195 AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat t;
196 int o = t.st_gen;],
197 AC_MSG_RESULT(yes)
198 AC_DEFINE(HAVE_ST_GEN),
199 AC_MSG_RESULT(no))
200
201 dnl See if we have the removefile(3) function for securely removing files
202 AC_CHECK_FUNCS(removefile)
203
204 dnl See if we have libusb...
205 AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
206
207 LIBUSB=""
208 AC_SUBST(LIBUSB)
209
210 if test x$enable_libusb = xyes; then
211 check_libusb=yes
212 elif test x$enable_libusb != xno -a $uname != Darwin; then
213 check_libusb=yes
214 else
215 check_libusb=no
216 fi
217
218 if test $check_libusb = yes; then
219 AC_CHECK_LIB(usb, usb_init,[
220 AC_CHECK_HEADER(usb.h,
221 AC_DEFINE(HAVE_USB_H)
222 LIBUSB="-lusb")])
223 fi
224
225 dnl See if we have libwrap for TCP wrappers support...
226 AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support])
227
228 LIBWRAP=""
229 AC_SUBST(LIBWRAP)
230
231 if test x$enable_tcp_wrappers = xyes; then
232 AC_CHECK_LIB(wrap, hosts_access,[
233 AC_CHECK_HEADER(tcpd.h,
234 AC_DEFINE(HAVE_TCPD_H)
235 LIBWRAP="-lwrap")])
236 fi
237
238 dnl Flags for "ar" command...
239 case $uname in
240 Darwin* | *BSD*)
241 ARFLAGS="-rcv"
242 ;;
243 *)
244 ARFLAGS="crvs"
245 ;;
246 esac
247
248 AC_SUBST(ARFLAGS)
249
250 dnl Prep libraries specifically for cupsd and backends...
251 BACKLIBS=""
252 SERVERLIBS=""
253 AC_SUBST(BACKLIBS)
254 AC_SUBST(SERVERLIBS)
255
256 dnl See if we have POSIX ACL support...
257 SAVELIBS="$LIBS"
258 LIBS=""
259 AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
260 if test "x$enable_acl" != xno; then
261 AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
262 SERVERLIBS="$SERVERLIBS $LIBS"
263 fi
264 LIBS="$SAVELIBS"
265
266 dnl Check for DBUS support
267 if test -d /etc/dbus-1; then
268 DBUSDIR="/etc/dbus-1"
269 else
270 DBUSDIR=""
271 fi
272
273 AC_ARG_ENABLE(dbus, [ --enable-dbus build with DBUS support])
274 AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
275 DBUSDIR="$withval")
276
277 DBUS_NOTIFIER=""
278 DBUS_NOTIFIERLIBS=""
279
280 if test "x$enable_dbus" != xno; then
281 AC_PATH_PROG(PKGCONFIG, pkg-config)
282 if test "x$PKGCONFIG" != x; then
283 AC_MSG_CHECKING(for DBUS)
284 if $PKGCONFIG --exists dbus-1; then
285 AC_MSG_RESULT(yes)
286 AC_DEFINE(HAVE_DBUS)
287 CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
288 SERVERLIBS="$SERVERLIBS `$PKGCONFIG --libs dbus-1`"
289 DBUS_NOTIFIER="dbus"
290 DBUS_NOTIFIERLIBS="`$PKGCONFIG --libs dbus-1`"
291 AC_CHECK_LIB(dbus-1,
292 dbus_message_iter_init_append,
293 AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND),,
294 `$PKGCONFIG --libs dbus-1`)
295 else
296 AC_MSG_RESULT(no)
297 fi
298 fi
299 fi
300
301 AC_SUBST(DBUSDIR)
302 AC_SUBST(DBUS_NOTIFIER)
303 AC_SUBST(DBUS_NOTIFIERLIBS)
304
305 dnl Extra platform-specific libraries...
306 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
307 CUPS_SYSTEM_AUTHKEY=""
308 LEGACY_BACKENDS="parallel"
309
310 case $uname in
311 Darwin*)
312 LEGACY_BACKENDS=""
313 BACKLIBS="$BACKLIBS -framework IOKit"
314 SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
315 LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
316
317 dnl Check for framework headers...
318 AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
319 AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
320 AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
321 AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
322
323 dnl Check for dynamic store function...
324 AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
325
326 dnl Check for new ColorSync APIs...
327 SAVELIBS="$LIBS"
328 LIBS="$LIBS -framework ApplicationServices"
329 AC_CHECK_FUNCS(ColorSyncRegisterDevice)
330 LIBS="$SAVELIBS"
331
332 dnl Check for the new membership functions in MacOSX 10.4...
333 AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
334 AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
335 AC_CHECK_FUNCS(mbr_uid_to_uuid)
336
337 dnl Check for the vproc_transaction_begin/end stuff...
338 AC_CHECK_FUNCS(vproc_transaction_begin)
339
340 dnl Need <dlfcn.h> header...
341 AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
342
343 dnl Check for notify_post support
344 AC_CHECK_HEADER(notify.h,AC_DEFINE(HAVE_NOTIFY_H))
345 AC_CHECK_FUNCS(notify_post)
346
347 dnl Check for Authorization Services support
348 AC_ARG_WITH(adminkey, [ --with-adminkey set the default SystemAuthKey value],
349 default_adminkey="$withval",
350 default_adminkey="default")
351 AC_ARG_WITH(operkey, [ --with-operkey set the default operator @AUTHKEY value],
352 default_operkey="$withval",
353 default_operkey="default")
354
355 AC_CHECK_HEADER(Security/Authorization.h, [
356 AC_DEFINE(HAVE_AUTHORIZATION_H)
357
358 if test "x$default_adminkey" != xdefault; then
359 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
360 elif grep -q system.print.operator /etc/authorization; then
361 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
362 else
363 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
364 fi
365
366 if test "x$default_operkey" != xdefault; then
367 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
368 elif grep -q system.print.operator /etc/authorization; then
369 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
370 else
371 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
372 fi])
373 AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
374
375 dnl Check for sandbox/Seatbelt support
376 AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
377 ;;
378 esac
379
380 AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
381 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
382 AC_SUBST(CUPS_SYSTEM_AUTHKEY)
383 AC_SUBST(LEGACY_BACKENDS)
384
385 dnl Check for build components
386 COMPONENTS="all"
387
388 AC_ARG_WITH(components, [ --with-components set components to build:
389 - "all" (default) builds everything
390 - "core" builds libcups and ipptool],
391 COMPONENTS="$withval")
392
393 case "$COMPONENTS" in
394 all)
395 BUILDDIRS="filter backend berkeley cgi-bin driver monitor notifier ppdc scheduler systemv conf data locale man doc examples templates"
396 ;;
397
398 core)
399 BUILDDIRS="data locale"
400 ;;
401
402 *)
403 AC_MSG_ERROR([Bad build component "$COMPONENT" specified!])
404 ;;
405 esac
406
407 AC_SUBST(BUILDDIRS)
408
409 dnl
410 dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".
411 dnl