]> git.ipfire.org Git - thirdparty/cups.git/blob - config-scripts/cups-common.m4
Remove support for AIX, HP-UX, and OSF/1.
[thirdparty/cups.git] / config-scripts / cups-common.m4
1 dnl
2 dnl "$Id$"
3 dnl
4 dnl Common configuration stuff for CUPS.
5 dnl
6 dnl Copyright 2007-2013 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.0svn"
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_PROG(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 See if the tm structure has the tm_gmtoff member...
204 AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
205 AC_TRY_COMPILE([#include <time.h>],[struct tm t;
206 int o = t.tm_gmtoff;],
207 AC_MSG_RESULT(yes)
208 AC_DEFINE(HAVE_TM_GMTOFF),
209 AC_MSG_RESULT(no))
210
211 dnl See if the stat structure has the st_gen member...
212 AC_MSG_CHECKING(for st_gen member in stat structure)
213 AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat t;
214 int o = t.st_gen;],
215 AC_MSG_RESULT(yes)
216 AC_DEFINE(HAVE_ST_GEN),
217 AC_MSG_RESULT(no))
218
219 dnl See if we have the removefile(3) function for securely removing files
220 AC_CHECK_FUNCS(removefile)
221
222 dnl See if we have libusb...
223 AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
224
225 LIBUSB=""
226 USBQUIRKS=""
227 AC_SUBST(LIBUSB)
228 AC_SUBST(USBQUIRKS)
229
230 if test "x$PKGCONFIG" != x; then
231 if test x$enable_libusb = xyes -o $uname != Darwin; then
232 AC_MSG_CHECKING(for libusb-1.0)
233 if $PKGCONFIG --exists libusb-1.0; then
234 AC_MSG_RESULT(yes)
235 AC_DEFINE(HAVE_LIBUSB)
236 CFLAGS="$CFLAGS `$PKGCONFIG --cflags libusb-1.0`"
237 LIBUSB="`$PKGCONFIG --libs libusb-1.0`"
238 USBQUIRKS="\$(DATADIR)/usb"
239 else
240 AC_MSG_RESULT(no)
241 fi
242 fi
243 elif test x$enable_libusb = xyes; then
244 AC_MSG_ERROR(Need pkg-config to enable libusb support.)
245 fi
246
247 dnl See if we have libwrap for TCP wrappers support...
248 AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support])
249
250 LIBWRAP=""
251 AC_SUBST(LIBWRAP)
252
253 if test x$enable_tcp_wrappers = xyes; then
254 AC_CHECK_LIB(wrap, hosts_access,[
255 AC_CHECK_HEADER(tcpd.h,
256 AC_DEFINE(HAVE_TCPD_H)
257 LIBWRAP="-lwrap")])
258 fi
259
260 dnl ZLIB
261 INSTALL_GZIP=""
262 LIBZ=""
263 AC_CHECK_HEADER(zlib.h,
264 AC_CHECK_LIB(z, gzgets,
265 AC_DEFINE(HAVE_LIBZ)
266 LIBZ="-lz"
267 LIBS="$LIBS -lz"
268 AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_INFLATECOPY))
269 if test "x$GZIP" != z; then
270 INSTALL_GZIP="-z"
271 fi))
272 AC_SUBST(INSTALL_GZIP)
273 AC_SUBST(LIBZ)
274
275 dnl Flags for "ar" command...
276 case $uname in
277 Darwin* | *BSD*)
278 ARFLAGS="-rcv"
279 ;;
280 *)
281 ARFLAGS="crvs"
282 ;;
283 esac
284
285 AC_SUBST(ARFLAGS)
286
287 dnl Prep libraries specifically for cupsd and backends...
288 BACKLIBS=""
289 SERVERLIBS=""
290 AC_SUBST(BACKLIBS)
291 AC_SUBST(SERVERLIBS)
292
293 dnl See if we have POSIX ACL support...
294 SAVELIBS="$LIBS"
295 LIBS=""
296 AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
297 if test "x$enable_acl" != xno; then
298 AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
299 SERVERLIBS="$SERVERLIBS $LIBS"
300 fi
301 LIBS="$SAVELIBS"
302
303 dnl Check for DBUS support
304 if test -d /etc/dbus-1; then
305 DBUSDIR="/etc/dbus-1"
306 else
307 DBUSDIR=""
308 fi
309
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 DBUS_NOTIFIER=""
315 DBUS_NOTIFIERLIBS=""
316
317 if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
318 AC_MSG_CHECKING(for DBUS)
319 if $PKGCONFIG --exists dbus-1; then
320 AC_MSG_RESULT(yes)
321 AC_DEFINE(HAVE_DBUS)
322 CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
323 SERVERLIBS="$SERVERLIBS `$PKGCONFIG --libs dbus-1`"
324 DBUS_NOTIFIER="dbus"
325 DBUS_NOTIFIERLIBS="`$PKGCONFIG --libs dbus-1`"
326 SAVELIBS="$LIBS"
327 LIBS="$LIBS $DBUS_NOTIFIERLIBS"
328 AC_CHECK_FUNC(dbus_message_iter_init_append,
329 AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND))
330 LIBS="$SAVELIBS"
331 else
332 AC_MSG_RESULT(no)
333 fi
334 fi
335
336 AC_SUBST(DBUSDIR)
337 AC_SUBST(DBUS_NOTIFIER)
338 AC_SUBST(DBUS_NOTIFIERLIBS)
339
340 dnl Extra platform-specific libraries...
341 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
342 CUPS_DEFAULT_SYSTEM_AUTHKEY=""
343 CUPS_SYSTEM_AUTHKEY=""
344 INSTALLXPC=""
345
346 case $uname in
347 Darwin*)
348 BACKLIBS="$BACKLIBS -framework IOKit"
349 SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
350 LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
351
352 dnl Check for framework headers...
353 AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
354 AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
355 AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
356 AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
357 AC_CHECK_HEADER(IOKit/pwr_mgt/IOPMLibPrivate.h,AC_DEFINE(HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H))
358
359 dnl Check for dynamic store function...
360 AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
361
362 dnl Check for the new membership functions in MacOSX 10.4...
363 AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
364 AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
365 AC_CHECK_FUNCS(mbr_uid_to_uuid)
366
367 dnl Check for the vproc_transaction_begin/end stuff...
368 AC_CHECK_FUNCS(vproc_transaction_begin)
369
370 dnl Need <dlfcn.h> header...
371 AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
372
373 dnl Check for notify_post support
374 AC_CHECK_HEADER(notify.h,AC_DEFINE(HAVE_NOTIFY_H))
375 AC_CHECK_FUNCS(notify_post)
376
377 dnl Check for Authorization Services support
378 AC_ARG_WITH(adminkey, [ --with-adminkey set the default SystemAuthKey value],
379 default_adminkey="$withval",
380 default_adminkey="default")
381 AC_ARG_WITH(operkey, [ --with-operkey set the default operator @AUTHKEY value],
382 default_operkey="$withval",
383 default_operkey="default")
384
385 AC_CHECK_HEADER(Security/Authorization.h, [
386 AC_DEFINE(HAVE_AUTHORIZATION_H)
387
388 if test "x$default_adminkey" != xdefault; then
389 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
390 CUPS_DEFAULT_SYSTEM_AUTHKEY="$default_adminkey"
391 elif grep -q system.print.operator /etc/authorization; then
392 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
393 CUPS_DEFAULT_SYSTEM_AUTHKEY="system.print.admin"
394 else
395 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
396 CUPS_DEFAULT_SYSTEM_AUTHKEY="system.preferences"
397 fi
398
399 if test "x$default_operkey" != xdefault; then
400 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
401 elif grep -q system.print.operator /etc/authorization; then
402 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
403 else
404 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
405 fi])
406 AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
407
408 dnl Check for sandbox/Seatbelt support
409 if test $uversion -ge 100; then
410 AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
411 fi
412 if test $uversion -ge 110 -a $uversion -lt 120; then
413 # Broken public headers in 10.7.x...
414 AC_MSG_CHECKING(for sandbox/private.h presence)
415 if test -f /usr/local/include/sandbox/private.h; then
416 AC_MSG_RESULT(yes)
417 else
418 AC_MSG_RESULT(no)
419 AC_MSG_ERROR(Run 'sudo mkdir -p /usr/local/include/sandbox' and 'sudo touch /usr/local/include/sandbox/private.h' to build CUPS.)
420 fi
421 fi
422
423 dnl Check for XPC support
424 AC_CHECK_HEADER(xpc/xpc.h,
425 AC_DEFINE(HAVE_XPC)
426 INSTALLXPC="install-xpc")
427 AC_CHECK_HEADER(xpc/private.h,
428 AC_DEFINE(HAVE_XPC_PRIVATE_H))
429 ;;
430 esac
431
432 AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
433 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
434 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_SYSTEM_AUTHKEY, "$CUPS_DEFAULT_SYSTEM_AUTHKEY")
435 AC_SUBST(CUPS_SYSTEM_AUTHKEY)
436 AC_SUBST(INSTALLXPC)
437
438 dnl Check for build components
439 COMPONENTS="all"
440
441 AC_ARG_WITH(components, [ --with-components set components to build:
442 - "all" (default) builds everything
443 - "core" builds libcups and ipptool],
444 COMPONENTS="$withval")
445
446 case "$COMPONENTS" in
447 all)
448 BUILDDIRS="filter backend berkeley cgi-bin monitor notifier ppdc scheduler systemv conf data desktop locale man doc examples templates"
449 ;;
450
451 core)
452 BUILDDIRS="data locale"
453 ;;
454
455 *)
456 AC_MSG_ERROR([Bad build component "$COMPONENT" specified!])
457 ;;
458 esac
459
460 AC_SUBST(BUILDDIRS)
461
462 dnl
463 dnl End of "$Id$".
464 dnl