]> git.ipfire.org Git - thirdparty/cups.git/blame_incremental - config-scripts/cups-common.m4
Drop API help for CGI, MIME, and PPD compiler libraries.
[thirdparty/cups.git] / config-scripts / cups-common.m4
... / ...
CommitLineData
1dnl
2dnl Common configuration stuff for CUPS.
3dnl
4dnl Copyright 2007-2015 by Apple Inc.
5dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
6dnl
7dnl These coded instructions, statements, and computer programs are the
8dnl property of Apple Inc. and are protected by Federal copyright
9dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
10dnl which should have been included with this file. If this file is
11dnl file is missing or damaged, see the license at "http://www.cups.org/".
12dnl
13
14dnl Set the name of the config header file...
15AC_CONFIG_HEADER(config.h)
16
17dnl Version number information...
18CUPS_VERSION="AC_PACKAGE_VERSION"
19
20case "$CUPS_VERSION" in
21 *svn)
22 if test -z "$CUPS_REVISION" -a -d .svn; then
23 CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
24 else
25 CUPS_REVISION=""
26 fi
27 ;;
28
29 *)
30 CUPS_REVISION=""
31 ;;
32esac
33
34CUPS_BUILD="cups-$CUPS_VERSION"
35
36AC_ARG_WITH(cups_build, [ --with-cups-build set "cups-config --build" string ],
37 CUPS_BUILD="$withval")
38
39AC_SUBST(CUPS_VERSION)
40AC_SUBST(CUPS_REVISION)
41AC_SUBST(CUPS_BUILD)
42AC_DEFINE_UNQUOTED(CUPS_SVERSION, "AC_PACKAGE_NAME v$CUPS_VERSION$CUPS_REVISION")
43AC_DEFINE_UNQUOTED(CUPS_MINIMAL, "AC_PACKAGE_NAME/$CUPS_VERSION$CUPS_REVISION")
44
45dnl Default compiler flags...
46CFLAGS="${CFLAGS:=}"
47CPPFLAGS="${CPPFLAGS:=}"
48CXXFLAGS="${CXXFLAGS:=}"
49LDFLAGS="${LDFLAGS:=}"
50
51dnl Checks for programs...
52AC_PROG_AWK
53AC_PROG_CC(clang cc gcc)
54AC_PROG_CPP
55AC_PROG_CXX(clang++ c++ g++)
56AC_PROG_RANLIB
57AC_PATH_PROG(AR,ar)
58AC_PATH_PROG(CHMOD,chmod)
59AC_PATH_PROG(GZIP,gzip)
60AC_PATH_PROG(LD,ld)
61AC_PATH_PROG(LN,ln)
62AC_PATH_PROG(MV,mv)
63AC_PATH_PROG(RM,rm)
64AC_PATH_PROG(RMDIR,rmdir)
65AC_PATH_PROG(SED,sed)
66AC_PATH_PROG(XDGOPEN,xdg-open)
67if test "x$XDGOPEN" = x; then
68 CUPS_HTMLVIEW="htmlview"
69else
70 CUPS_HTMLVIEW="$XDGOPEN"
71fi
72AC_SUBST(CUPS_HTMLVIEW)
73
74AC_MSG_CHECKING(for install-sh script)
75INSTALL="`pwd`/install-sh"
76AC_SUBST(INSTALL)
77AC_MSG_RESULT(using $INSTALL)
78
79if test "x$AR" = x; then
80 AC_MSG_ERROR([Unable to find required library archive command.])
81fi
82if test "x$CC" = x; then
83 AC_MSG_ERROR([Unable to find required C compiler command.])
84fi
85
86dnl Static library option...
87INSTALLSTATIC=""
88AC_ARG_ENABLE(static, [ --enable-static install static libraries])
89
90if test x$enable_static = xyes; then
91 echo Installing static libraries...
92 INSTALLSTATIC="installstatic"
93fi
94
95AC_SUBST(INSTALLSTATIC)
96
97dnl Check for pkg-config, which is used for some other tests later on...
98AC_PATH_TOOL(PKGCONFIG, pkg-config)
99
100dnl Check for libraries...
101AC_SEARCH_LIBS(abs, m, AC_DEFINE(HAVE_ABS))
102AC_SEARCH_LIBS(crypt, crypt)
103AC_SEARCH_LIBS(fmod, m)
104AC_SEARCH_LIBS(getspent, sec gen)
105
106LIBMALLOC=""
107AC_ARG_ENABLE(mallinfo, [ --enable-mallinfo build with malloc debug logging])
108
109if test x$enable_mallinfo = xyes; then
110 SAVELIBS="$LIBS"
111 LIBS=""
112 AC_SEARCH_LIBS(mallinfo, malloc, AC_DEFINE(HAVE_MALLINFO))
113 LIBMALLOC="$LIBS"
114 LIBS="$SAVELIBS"
115fi
116
117AC_SUBST(LIBMALLOC)
118
119dnl Check for libpaper support...
120AC_ARG_ENABLE(libpaper, [ --enable-libpaper build with libpaper support])
121
122if test x$enable_libpaper = xyes; then
123 AC_CHECK_LIB(paper,systempapername,
124 AC_DEFINE(HAVE_LIBPAPER)
125 LIBPAPER="-lpaper",
126 LIBPAPER="")
127else
128 LIBPAPER=""
129fi
130AC_SUBST(LIBPAPER)
131
132dnl Checks for header files.
133AC_HEADER_STDC
134AC_CHECK_HEADER(stdlib.h,AC_DEFINE(HAVE_STDLIB_H))
135AC_CHECK_HEADER(crypt.h,AC_DEFINE(HAVE_CRYPT_H))
136AC_CHECK_HEADER(langinfo.h,AC_DEFINE(HAVE_LANGINFO_H))
137AC_CHECK_HEADER(malloc.h,AC_DEFINE(HAVE_MALLOC_H))
138AC_CHECK_HEADER(shadow.h,AC_DEFINE(HAVE_SHADOW_H))
139AC_CHECK_HEADER(stdint.h,AC_DEFINE(HAVE_STDINT_H))
140AC_CHECK_HEADER(string.h,AC_DEFINE(HAVE_STRING_H))
141AC_CHECK_HEADER(strings.h,AC_DEFINE(HAVE_STRINGS_H))
142AC_CHECK_HEADER(bstring.h,AC_DEFINE(HAVE_BSTRING_H))
143AC_CHECK_HEADER(sys/ioctl.h,AC_DEFINE(HAVE_SYS_IOCTL_H))
144AC_CHECK_HEADER(sys/param.h,AC_DEFINE(HAVE_SYS_PARAM_H))
145AC_CHECK_HEADER(sys/ucred.h,AC_DEFINE(HAVE_SYS_UCRED_H))
146AC_CHECK_HEADER(asl.h,AC_DEFINE(HAVE_ASL_H))
147
148dnl Checks for iconv.h and iconv_open
149AC_CHECK_HEADER(iconv.h,
150 SAVELIBS="$LIBS"
151 LIBS=""
152 AC_SEARCH_LIBS(iconv_open,iconv,
153 AC_DEFINE(HAVE_ICONV_H)
154 SAVELIBS="$SAVELIBS $LIBS")
155 AC_SEARCH_LIBS(libiconv_open,iconv,
156 AC_DEFINE(HAVE_ICONV_H)
157 SAVELIBS="$SAVELIBS $LIBS")
158 LIBS="$SAVELIBS")
159
160dnl Checks for Mini-XML (www.minixml.org)...
161LIBMXML=""
162AC_CHECK_HEADER(mxml.h,
163 SAVELIBS="$LIBS"
164 AC_SEARCH_LIBS(mmxlNewElement,mxml,
165 AC_DEFINE(HAVE_MXML_H)
166 LIBMXML="-lmxml")
167 LIBS="$SAVELIBS")
168AC_SUBST(LIBMXML)
169
170dnl Checks for statfs and its many headers...
171AC_CHECK_HEADER(sys/mount.h,AC_DEFINE(HAVE_SYS_MOUNT_H))
172AC_CHECK_HEADER(sys/statfs.h,AC_DEFINE(HAVE_SYS_STATFS_H))
173AC_CHECK_HEADER(sys/statvfs.h,AC_DEFINE(HAVE_SYS_STATVFS_H))
174AC_CHECK_HEADER(sys/vfs.h,AC_DEFINE(HAVE_SYS_VFS_H))
175AC_CHECK_FUNCS(statfs statvfs)
176
177dnl Checks for string functions.
178AC_CHECK_FUNCS(strdup strlcat strlcpy)
179if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then
180 echo Forcing snprintf emulation for HP-UX.
181else
182 AC_CHECK_FUNCS(snprintf vsnprintf)
183fi
184
185dnl Check for random number functions...
186AC_CHECK_FUNCS(random lrand48 arc4random)
187
188dnl Check for geteuid function.
189AC_CHECK_FUNCS(geteuid)
190
191dnl Check for setpgid function.
192AC_CHECK_FUNCS(setpgid)
193
194dnl Check for vsyslog function.
195AC_CHECK_FUNCS(vsyslog)
196
197dnl Checks for signal functions.
198case "$uname" in
199 Linux | GNU)
200 # Do not use sigset on Linux or GNU HURD
201 ;;
202 *)
203 # Use sigset on other platforms, if available
204 AC_CHECK_FUNCS(sigset)
205 ;;
206esac
207
208AC_CHECK_FUNCS(sigaction)
209
210dnl Checks for wait functions.
211AC_CHECK_FUNCS(waitpid wait3)
212
213dnl Check for posix_spawn
214AC_CHECK_FUNCS(posix_spawn)
215
216dnl See if the tm structure has the tm_gmtoff member...
217AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
218AC_TRY_COMPILE([#include <time.h>],[struct tm t;
219 int o = t.tm_gmtoff;],
220 AC_MSG_RESULT(yes)
221 AC_DEFINE(HAVE_TM_GMTOFF),
222 AC_MSG_RESULT(no))
223
224dnl See if the stat structure has the st_gen member...
225AC_MSG_CHECKING(for st_gen member in stat structure)
226AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat t;
227 int o = t.st_gen;],
228 AC_MSG_RESULT(yes)
229 AC_DEFINE(HAVE_ST_GEN),
230 AC_MSG_RESULT(no))
231
232dnl See if we have the removefile(3) function for securely removing files
233AC_CHECK_FUNCS(removefile)
234
235dnl See if we have libusb...
236AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
237
238LIBUSB=""
239USBQUIRKS=""
240AC_SUBST(LIBUSB)
241AC_SUBST(USBQUIRKS)
242
243if test "x$PKGCONFIG" != x; then
244 if test x$enable_libusb != xno -a $uname != Darwin; then
245 AC_MSG_CHECKING(for libusb-1.0)
246 if $PKGCONFIG --exists libusb-1.0; then
247 AC_MSG_RESULT(yes)
248 AC_DEFINE(HAVE_LIBUSB)
249 CFLAGS="$CFLAGS `$PKGCONFIG --cflags libusb-1.0`"
250 LIBUSB="`$PKGCONFIG --libs libusb-1.0`"
251 USBQUIRKS="\$(DATADIR)/usb"
252 else
253 AC_MSG_RESULT(no)
254 if test x$enable_libusb = xyes; then
255 AC_MSG_ERROR(libusb required for --enable-libusb.)
256 fi
257 fi
258 fi
259elif test x$enable_libusb = xyes; then
260 AC_MSG_ERROR(Need pkg-config to enable libusb support.)
261fi
262
263dnl See if we have libwrap for TCP wrappers support...
264AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support])
265
266LIBWRAP=""
267AC_SUBST(LIBWRAP)
268
269if test x$enable_tcp_wrappers = xyes; then
270 AC_CHECK_LIB(wrap, hosts_access,[
271 AC_CHECK_HEADER(tcpd.h,
272 AC_DEFINE(HAVE_TCPD_H)
273 LIBWRAP="-lwrap")])
274fi
275
276dnl ZLIB
277INSTALL_GZIP=""
278LIBZ=""
279AC_CHECK_HEADER(zlib.h,
280 AC_CHECK_LIB(z, gzgets,
281 AC_DEFINE(HAVE_LIBZ)
282 LIBZ="-lz"
283 LIBS="$LIBS -lz"
284 AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_INFLATECOPY))
285 if test "x$GZIP" != z; then
286 INSTALL_GZIP="-z"
287 fi))
288AC_SUBST(INSTALL_GZIP)
289AC_SUBST(LIBZ)
290
291dnl Flags for "ar" command...
292case $uname in
293 Darwin* | *BSD*)
294 ARFLAGS="-rcv"
295 ;;
296 *)
297 ARFLAGS="crvs"
298 ;;
299esac
300
301AC_SUBST(ARFLAGS)
302
303dnl Prep libraries specifically for cupsd and backends...
304BACKLIBS=""
305SERVERLIBS=""
306AC_SUBST(BACKLIBS)
307AC_SUBST(SERVERLIBS)
308
309dnl See if we have POSIX ACL support...
310SAVELIBS="$LIBS"
311LIBS=""
312AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
313if test "x$enable_acl" != xno; then
314 AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
315 SERVERLIBS="$SERVERLIBS $LIBS"
316fi
317LIBS="$SAVELIBS"
318
319dnl Check for DBUS support
320AC_ARG_ENABLE(dbus, [ --disable-dbus build without DBUS support])
321AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
322 DBUSDIR="$withval")
323
324DBUSDIR=""
325DBUS_NOTIFIER=""
326DBUS_NOTIFIERLIBS=""
327
328if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x -a "x$uname" != xDarwin; then
329 AC_MSG_CHECKING(for DBUS)
330 if $PKGCONFIG --exists dbus-1; then
331 AC_MSG_RESULT(yes)
332 AC_DEFINE(HAVE_DBUS)
333 CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
334 SERVERLIBS="$SERVERLIBS `$PKGCONFIG --libs dbus-1`"
335 DBUS_NOTIFIER="dbus"
336 DBUS_NOTIFIERLIBS="`$PKGCONFIG --libs dbus-1`"
337 SAVELIBS="$LIBS"
338 LIBS="$LIBS $DBUS_NOTIFIERLIBS"
339 AC_CHECK_FUNC(dbus_message_iter_init_append,
340 AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND))
341 AC_CHECK_FUNC(dbus_threads_init,
342 AC_DEFINE(HAVE_DBUS_THREADS_INIT))
343 LIBS="$SAVELIBS"
344 if test -d /etc/dbus-1; then
345 DBUSDIR="/etc/dbus-1"
346 fi
347 else
348 AC_MSG_RESULT(no)
349 fi
350fi
351
352AC_SUBST(DBUSDIR)
353AC_SUBST(DBUS_NOTIFIER)
354AC_SUBST(DBUS_NOTIFIERLIBS)
355
356dnl Extra platform-specific libraries...
357CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
358CUPS_DEFAULT_SYSTEM_AUTHKEY=""
359CUPS_SYSTEM_AUTHKEY=""
360INSTALLXPC=""
361
362case $uname in
363 Darwin*)
364 BACKLIBS="$BACKLIBS -framework IOKit"
365 SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
366 LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
367
368 dnl Check for framework headers...
369 AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
370 AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
371 AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
372 AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
373
374 dnl Check for dynamic store function...
375 AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
376
377 dnl Check for the new membership functions in MacOSX 10.4...
378 AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
379 AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
380 AC_CHECK_FUNCS(mbr_uid_to_uuid)
381
382 dnl Need <dlfcn.h> header...
383 AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
384
385 dnl Check for notify_post support
386 AC_CHECK_HEADER(notify.h,AC_DEFINE(HAVE_NOTIFY_H))
387 AC_CHECK_FUNCS(notify_post)
388
389 dnl Check for Authorization Services support
390 AC_ARG_WITH(adminkey, [ --with-adminkey set the default SystemAuthKey value],
391 default_adminkey="$withval",
392 default_adminkey="default")
393 AC_ARG_WITH(operkey, [ --with-operkey set the default operator @AUTHKEY value],
394 default_operkey="$withval",
395 default_operkey="default")
396
397 AC_CHECK_HEADER(Security/Authorization.h, [
398 AC_DEFINE(HAVE_AUTHORIZATION_H)
399
400 if test "x$default_adminkey" != xdefault; then
401 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
402 CUPS_DEFAULT_SYSTEM_AUTHKEY="$default_adminkey"
403 elif grep -q system.print.operator /etc/authorization; then
404 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
405 CUPS_DEFAULT_SYSTEM_AUTHKEY="system.print.admin"
406 else
407 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
408 CUPS_DEFAULT_SYSTEM_AUTHKEY="system.preferences"
409 fi
410
411 if test "x$default_operkey" != xdefault; then
412 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
413 elif grep -q system.print.operator /etc/authorization; then
414 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
415 else
416 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
417 fi])
418 AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
419
420 dnl Check for sandbox/Seatbelt support
421 if test $uversion -ge 100; then
422 AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
423 fi
424 if test $uversion -ge 110 -a $uversion -lt 120; then
425 # Broken public headers in 10.7.x...
426 AC_MSG_CHECKING(for sandbox/private.h presence)
427 if test -f /usr/local/include/sandbox/private.h; then
428 AC_MSG_RESULT(yes)
429 else
430 AC_MSG_RESULT(no)
431 AC_MSG_ERROR(Run 'sudo mkdir -p /usr/local/include/sandbox' and 'sudo touch /usr/local/include/sandbox/private.h' to build CUPS.)
432 fi
433 fi
434
435 dnl Check for XPC support
436 AC_CHECK_HEADER(xpc/xpc.h,
437 AC_DEFINE(HAVE_XPC)
438 INSTALLXPC="install-xpc")
439 AC_CHECK_HEADER(xpc/private.h,
440 AC_DEFINE(HAVE_XPC_PRIVATE_H))
441 ;;
442esac
443
444AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
445AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
446AC_DEFINE_UNQUOTED(CUPS_DEFAULT_SYSTEM_AUTHKEY, "$CUPS_DEFAULT_SYSTEM_AUTHKEY")
447AC_SUBST(CUPS_SYSTEM_AUTHKEY)
448AC_SUBST(INSTALLXPC)
449
450dnl Check for build components
451COMPONENTS="all"
452
453AC_ARG_WITH(components, [ --with-components set components to build:
454 - "all" (default) builds everything
455 - "core" builds libcups and ipptool],
456 COMPONENTS="$withval")
457
458case "$COMPONENTS" in
459 all)
460 BUILDDIRS="filter backend berkeley cgi-bin monitor notifier ppdc scheduler systemv conf data desktop locale man doc examples templates"
461 ;;
462
463 core)
464 BUILDDIRS="data locale"
465 ;;
466
467 *)
468 AC_MSG_ERROR([Bad build component "$COMPONENT" specified!])
469 ;;
470esac
471
472AC_SUBST(BUILDDIRS)