]> git.ipfire.org Git - thirdparty/cups.git/blob - config-scripts/cups-common.m4
Merge changes from CUPS 1.5svn-r9105.
[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 string functions.
137 AC_CHECK_FUNCS(strdup strcasecmp strncasecmp strlcat strlcpy)
138 if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then
139 echo Forcing snprintf emulation for HP-UX.
140 else
141 AC_CHECK_FUNCS(snprintf vsnprintf)
142 fi
143
144 dnl Check for random number functions...
145 AC_CHECK_FUNCS(random lrand48 arc4random)
146
147 dnl Check for geteuid function.
148 AC_CHECK_FUNCS(geteuid)
149
150 dnl Check for vsyslog function.
151 AC_CHECK_FUNCS(vsyslog)
152
153 dnl Checks for signal functions.
154 case "$uname" in
155 Linux | GNU)
156 # Do not use sigset on Linux or GNU HURD
157 ;;
158 *)
159 # Use sigset on other platforms, if available
160 AC_CHECK_FUNCS(sigset)
161 ;;
162 esac
163
164 AC_CHECK_FUNCS(sigaction)
165
166 dnl Checks for wait functions.
167 AC_CHECK_FUNCS(waitpid wait3)
168
169 dnl See if the tm structure has the tm_gmtoff member...
170 AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
171 AC_TRY_COMPILE([#include <time.h>],[struct tm t;
172 int o = t.tm_gmtoff;],
173 AC_MSG_RESULT(yes)
174 AC_DEFINE(HAVE_TM_GMTOFF),
175 AC_MSG_RESULT(no))
176
177 dnl See if we have the removefile(3) function for securely removing files
178 AC_CHECK_FUNCS(removefile)
179
180 dnl See if we have libusb...
181 AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
182
183 LIBUSB=""
184 AC_SUBST(LIBUSB)
185
186 if test x$enable_libusb = xyes; then
187 check_libusb=yes
188 elif test x$enable_libusb != xno -a $uname != Darwin; then
189 check_libusb=yes
190 else
191 check_libusb=no
192 fi
193
194 if test $check_libusb = yes; then
195 AC_CHECK_LIB(usb, usb_init,[
196 AC_CHECK_HEADER(usb.h,
197 AC_DEFINE(HAVE_USB_H)
198 LIBUSB="-lusb")])
199 fi
200
201 dnl See if we have libwrap for TCP wrappers support...
202 AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support])
203
204 LIBWRAP=""
205 AC_SUBST(LIBWRAP)
206
207 if test x$enable_tcp_wrappers = xyes; then
208 AC_CHECK_LIB(wrap, hosts_access,[
209 AC_CHECK_HEADER(tcpd.h,
210 AC_DEFINE(HAVE_TCPD_H)
211 LIBWRAP="-lwrap")])
212 fi
213
214 dnl Flags for "ar" command...
215 case $uname in
216 Darwin* | *BSD*)
217 ARFLAGS="-rcv"
218 ;;
219 *)
220 ARFLAGS="crvs"
221 ;;
222 esac
223
224 AC_SUBST(ARFLAGS)
225
226 dnl Prep libraries specifically for cupsd and backends...
227 BACKLIBS=""
228 CUPSDLIBS=""
229 AC_SUBST(BACKLIBS)
230 AC_SUBST(CUPSDLIBS)
231
232 dnl See if we have POSIX ACL support...
233 SAVELIBS="$LIBS"
234 LIBS=""
235 AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
236 if test "x$enable_acl" != xno; then
237 AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
238 CUPSDLIBS="$CUPSDLIBS $LIBS"
239 fi
240 LIBS="$SAVELIBS"
241
242 dnl Check for DBUS support
243 if test -d /etc/dbus-1; then
244 DBUSDIR="/etc/dbus-1"
245 else
246 DBUSDIR=""
247 fi
248
249 AC_ARG_ENABLE(dbus, [ --enable-dbus build with DBUS support])
250 AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
251 DBUSDIR="$withval")
252
253 DBUS_NOTIFIER=""
254 DBUS_NOTIFIERLIBS=""
255
256 if test "x$enable_dbus" != xno; then
257 AC_PATH_PROG(PKGCONFIG, pkg-config)
258 if test "x$PKGCONFIG" != x; then
259 AC_MSG_CHECKING(for DBUS)
260 if $PKGCONFIG --exists dbus-1; then
261 AC_MSG_RESULT(yes)
262 AC_DEFINE(HAVE_DBUS)
263 CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
264 CUPSDLIBS="$CUPSDLIBS `$PKGCONFIG --libs dbus-1`"
265 DBUS_NOTIFIER="dbus"
266 DBUS_NOTIFIERLIBS="`$PKGCONFIG --libs dbus-1`"
267 AC_CHECK_LIB(dbus-1,
268 dbus_message_iter_init_append,
269 AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND),,
270 `$PKGCONFIG --libs dbus-1`)
271 else
272 AC_MSG_RESULT(no)
273 fi
274 fi
275 fi
276
277 AC_SUBST(DBUSDIR)
278 AC_SUBST(DBUS_NOTIFIER)
279 AC_SUBST(DBUS_NOTIFIERLIBS)
280
281 dnl Extra platform-specific libraries...
282 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
283 CUPS_SYSTEM_AUTHKEY=""
284 LEGACY_BACKENDS="parallel"
285
286 case $uname in
287 Darwin*)
288 LEGACY_BACKENDS=""
289 BACKLIBS="$BACKLIBS -framework IOKit"
290 CUPSDLIBS="$CUPSDLIBS -sectorder __TEXT __text cupsd.order -e start -framework IOKit -weak_framework ApplicationServices"
291 LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
292
293 dnl Check for framework headers...
294 AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
295 AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
296 AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
297 AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
298
299 dnl Check for dynamic store function...
300 AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
301
302 dnl Check for the new membership functions in MacOSX 10.4...
303 AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
304 AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
305 AC_CHECK_FUNCS(mbr_uid_to_uuid)
306
307 dnl Check for the vproc_transaction_begin/end stuff...
308 AC_CHECK_FUNCS(vproc_transaction_begin)
309
310 dnl Need <dlfcn.h> header...
311 AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
312
313 dnl Check for notify_post support
314 AC_CHECK_HEADER(notify.h,AC_DEFINE(HAVE_NOTIFY_H))
315 AC_CHECK_FUNCS(notify_post)
316
317 dnl Check for Authorization Services support
318 AC_ARG_WITH(adminkey, [ --with-adminkey set the default SystemAuthKey value],
319 default_adminkey="$withval",
320 default_adminkey="default")
321 AC_ARG_WITH(operkey, [ --with-operkey set the default operator @AUTHKEY value],
322 default_operkey="$withval",
323 default_operkey="default")
324
325 AC_CHECK_HEADER(Security/Authorization.h, [
326 AC_DEFINE(HAVE_AUTHORIZATION_H)
327
328 if test "x$default_adminkey" != xdefault; then
329 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
330 elif grep -q system.print.operator /etc/authorization; then
331 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
332 else
333 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
334 fi
335
336 if test "x$default_operkey" != xdefault; then
337 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
338 elif grep -q system.print.operator /etc/authorization; then
339 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
340 else
341 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
342 fi])
343 AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
344
345 dnl Check for sandbox/Seatbelt support
346 AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
347 ;;
348 esac
349
350 AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
351 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
352 AC_SUBST(CUPS_SYSTEM_AUTHKEY)
353 AC_SUBST(LEGACY_BACKENDS)
354
355 dnl Check for build components
356 COMPONENTS="all"
357
358 AC_ARG_WITH(components, [ --with-components set components to build:
359 - "all" (default) builds everything
360 - "core" builds libcups and ipptool],
361 COMPONENTS="$withval")
362
363 case "$COMPONENTS" in
364 all)
365 BUILDDIRS="filter backend berkeley cgi-bin driver monitor notifier ppdc scheduler systemv conf data locale man doc examples templates"
366 ;;
367
368 core)
369 BUILDDIRS="data locale"
370 ;;
371
372 *)
373 AC_MSG_ERROR([Bad build component "$COMPONENT" specified!])
374 ;;
375 esac
376
377 AC_SUBST(BUILDDIRS)
378
379 dnl
380 dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".
381 dnl