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