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