]> git.ipfire.org Git - thirdparty/cups.git/blame_incremental - config-scripts/cups-common.m4
Fix source file header text duplication text duplication.
[thirdparty/cups.git] / config-scripts / cups-common.m4
... / ...
CommitLineData
1dnl
2dnl Common configuration stuff for CUPS.
3dnl
4dnl Copyright 2007-2016 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 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"
19CUPS_REVISION=""
20CUPS_BUILD="cups-$CUPS_VERSION"
21
22AC_ARG_WITH(cups_build, [ --with-cups-build set "cups-config --build" string ],
23 CUPS_BUILD="$withval")
24
25AC_SUBST(CUPS_VERSION)
26AC_SUBST(CUPS_REVISION)
27AC_SUBST(CUPS_BUILD)
28AC_DEFINE_UNQUOTED(CUPS_SVERSION, "AC_PACKAGE_NAME v$CUPS_VERSION$CUPS_REVISION")
29AC_DEFINE_UNQUOTED(CUPS_MINIMAL, "AC_PACKAGE_NAME/$CUPS_VERSION$CUPS_REVISION")
30
31dnl Default compiler flags...
32CFLAGS="${CFLAGS:=}"
33CPPFLAGS="${CPPFLAGS:=}"
34CXXFLAGS="${CXXFLAGS:=}"
35LDFLAGS="${LDFLAGS:=}"
36
37dnl Checks for programs...
38AC_PROG_AWK
39AC_PROG_CC(clang cc gcc)
40AC_PROG_CPP
41AC_PROG_CXX(clang++ c++ g++)
42AC_PROG_RANLIB
43AC_PATH_PROG(AR,ar)
44AC_PATH_PROG(CHMOD,chmod)
45AC_PATH_PROG(GZIP,gzip)
46AC_PATH_PROG(LD,ld)
47AC_PATH_PROG(LN,ln)
48AC_PATH_PROG(MV,mv)
49AC_PATH_PROG(RM,rm)
50AC_PATH_PROG(RMDIR,rmdir)
51AC_PATH_PROG(SED,sed)
52AC_PATH_PROG(XDGOPEN,xdg-open)
53if test "x$XDGOPEN" = x; then
54 CUPS_HTMLVIEW="htmlview"
55else
56 CUPS_HTMLVIEW="$XDGOPEN"
57fi
58AC_SUBST(CUPS_HTMLVIEW)
59
60AC_MSG_CHECKING(for install-sh script)
61INSTALL="`pwd`/install-sh"
62AC_SUBST(INSTALL)
63AC_MSG_RESULT(using $INSTALL)
64
65if test "x$AR" = x; then
66 AC_MSG_ERROR([Unable to find required library archive command.])
67fi
68if test "x$CC" = x; then
69 AC_MSG_ERROR([Unable to find required C compiler command.])
70fi
71
72dnl Static library option...
73INSTALLSTATIC=""
74AC_ARG_ENABLE(static, [ --enable-static install static libraries])
75
76if test x$enable_static = xyes; then
77 echo Installing static libraries...
78 INSTALLSTATIC="installstatic"
79fi
80
81AC_SUBST(INSTALLSTATIC)
82
83dnl Check for pkg-config, which is used for some other tests later on...
84AC_PATH_TOOL(PKGCONFIG, pkg-config)
85
86dnl Check for libraries...
87AC_SEARCH_LIBS(abs, m, AC_DEFINE(HAVE_ABS))
88AC_SEARCH_LIBS(crypt, crypt)
89AC_SEARCH_LIBS(fmod, m)
90AC_SEARCH_LIBS(getspent, sec gen)
91
92LIBMALLOC=""
93AC_ARG_ENABLE(mallinfo, [ --enable-mallinfo build with malloc debug logging])
94
95if test x$enable_mallinfo = xyes; then
96 SAVELIBS="$LIBS"
97 LIBS=""
98 AC_SEARCH_LIBS(mallinfo, malloc, AC_DEFINE(HAVE_MALLINFO))
99 LIBMALLOC="$LIBS"
100 LIBS="$SAVELIBS"
101fi
102
103AC_SUBST(LIBMALLOC)
104
105dnl Check for libpaper support...
106AC_ARG_ENABLE(libpaper, [ --enable-libpaper build with libpaper support])
107
108if test x$enable_libpaper = xyes; then
109 AC_CHECK_LIB(paper,systempapername,
110 AC_DEFINE(HAVE_LIBPAPER)
111 LIBPAPER="-lpaper",
112 LIBPAPER="")
113else
114 LIBPAPER=""
115fi
116AC_SUBST(LIBPAPER)
117
118dnl Checks for header files.
119AC_HEADER_STDC
120AC_CHECK_HEADER(stdlib.h,AC_DEFINE(HAVE_STDLIB_H))
121AC_CHECK_HEADER(crypt.h,AC_DEFINE(HAVE_CRYPT_H))
122AC_CHECK_HEADER(langinfo.h,AC_DEFINE(HAVE_LANGINFO_H))
123AC_CHECK_HEADER(malloc.h,AC_DEFINE(HAVE_MALLOC_H))
124AC_CHECK_HEADER(shadow.h,AC_DEFINE(HAVE_SHADOW_H))
125AC_CHECK_HEADER(stdint.h,AC_DEFINE(HAVE_STDINT_H))
126AC_CHECK_HEADER(string.h,AC_DEFINE(HAVE_STRING_H))
127AC_CHECK_HEADER(strings.h,AC_DEFINE(HAVE_STRINGS_H))
128AC_CHECK_HEADER(bstring.h,AC_DEFINE(HAVE_BSTRING_H))
129AC_CHECK_HEADER(sys/ioctl.h,AC_DEFINE(HAVE_SYS_IOCTL_H))
130AC_CHECK_HEADER(sys/param.h,AC_DEFINE(HAVE_SYS_PARAM_H))
131AC_CHECK_HEADER(sys/ucred.h,AC_DEFINE(HAVE_SYS_UCRED_H))
132
133dnl Checks for iconv.h and iconv_open
134AC_CHECK_HEADER(iconv.h,
135 SAVELIBS="$LIBS"
136 LIBS=""
137 AC_SEARCH_LIBS(iconv_open,iconv,
138 AC_DEFINE(HAVE_ICONV_H)
139 SAVELIBS="$SAVELIBS $LIBS")
140 AC_SEARCH_LIBS(libiconv_open,iconv,
141 AC_DEFINE(HAVE_ICONV_H)
142 SAVELIBS="$SAVELIBS $LIBS")
143 LIBS="$SAVELIBS")
144
145dnl Checks for Mini-XML (www.minixml.org)...
146LIBMXML=""
147AC_CHECK_HEADER(mxml.h,
148 SAVELIBS="$LIBS"
149 AC_SEARCH_LIBS(mmxlNewElement,mxml,
150 AC_DEFINE(HAVE_MXML_H)
151 LIBMXML="-lmxml")
152 LIBS="$SAVELIBS")
153AC_SUBST(LIBMXML)
154
155dnl Checks for statfs and its many headers...
156AC_CHECK_HEADER(sys/mount.h,AC_DEFINE(HAVE_SYS_MOUNT_H))
157AC_CHECK_HEADER(sys/statfs.h,AC_DEFINE(HAVE_SYS_STATFS_H))
158AC_CHECK_HEADER(sys/statvfs.h,AC_DEFINE(HAVE_SYS_STATVFS_H))
159AC_CHECK_HEADER(sys/vfs.h,AC_DEFINE(HAVE_SYS_VFS_H))
160AC_CHECK_FUNCS(statfs statvfs)
161
162dnl Checks for string functions.
163AC_CHECK_FUNCS(strdup strlcat strlcpy)
164if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then
165 echo Forcing snprintf emulation for HP-UX.
166else
167 AC_CHECK_FUNCS(snprintf vsnprintf)
168fi
169
170dnl Check for random number functions...
171AC_CHECK_FUNCS(random lrand48 arc4random)
172
173dnl Check for geteuid function.
174AC_CHECK_FUNCS(geteuid)
175
176dnl Check for setpgid function.
177AC_CHECK_FUNCS(setpgid)
178
179dnl Check for vsyslog function.
180AC_CHECK_FUNCS(vsyslog)
181
182dnl Checks for signal functions.
183case "$uname" in
184 Linux | GNU)
185 # Do not use sigset on Linux or GNU HURD
186 ;;
187 *)
188 # Use sigset on other platforms, if available
189 AC_CHECK_FUNCS(sigset)
190 ;;
191esac
192
193AC_CHECK_FUNCS(sigaction)
194
195dnl Checks for wait functions.
196AC_CHECK_FUNCS(waitpid wait3)
197
198dnl Check for posix_spawn
199AC_CHECK_FUNCS(posix_spawn)
200
201dnl Check for getgrouplist
202AC_CHECK_FUNCS(getgrouplist)
203
204dnl See if the tm structure has the tm_gmtoff member...
205AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
206AC_TRY_COMPILE([#include <time.h>],[struct tm t;
207 int o = t.tm_gmtoff;],
208 AC_MSG_RESULT(yes)
209 AC_DEFINE(HAVE_TM_GMTOFF),
210 AC_MSG_RESULT(no))
211
212dnl See if the stat structure has the st_gen member...
213AC_MSG_CHECKING(for st_gen member in stat structure)
214AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat t;
215 int o = t.st_gen;],
216 AC_MSG_RESULT(yes)
217 AC_DEFINE(HAVE_ST_GEN),
218 AC_MSG_RESULT(no))
219
220dnl See if we have the removefile(3) function for securely removing files
221AC_CHECK_FUNCS(removefile)
222
223dnl See if we have libusb...
224AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
225
226LIBUSB=""
227USBQUIRKS=""
228AC_SUBST(LIBUSB)
229AC_SUBST(USBQUIRKS)
230
231if test "x$PKGCONFIG" != x; then
232 if test x$enable_libusb != xno -a $uname != Darwin; then
233 AC_MSG_CHECKING(for libusb-1.0)
234 if $PKGCONFIG --exists libusb-1.0; then
235 AC_MSG_RESULT(yes)
236 AC_DEFINE(HAVE_LIBUSB)
237 CFLAGS="$CFLAGS `$PKGCONFIG --cflags libusb-1.0`"
238 LIBUSB="`$PKGCONFIG --libs libusb-1.0`"
239 USBQUIRKS="\$(DATADIR)/usb"
240 else
241 AC_MSG_RESULT(no)
242 if test x$enable_libusb = xyes; then
243 AC_MSG_ERROR(libusb required for --enable-libusb.)
244 fi
245 fi
246 fi
247elif test x$enable_libusb = xyes; then
248 AC_MSG_ERROR(Need pkg-config to enable libusb support.)
249fi
250
251dnl See if we have libwrap for TCP wrappers support...
252AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support])
253
254LIBWRAP=""
255AC_SUBST(LIBWRAP)
256
257if test x$enable_tcp_wrappers = xyes; then
258 AC_CHECK_LIB(wrap, hosts_access,[
259 AC_CHECK_HEADER(tcpd.h,
260 AC_DEFINE(HAVE_TCPD_H)
261 LIBWRAP="-lwrap")])
262fi
263
264dnl ZLIB
265INSTALL_GZIP=""
266LIBZ=""
267AC_CHECK_HEADER(zlib.h,
268 AC_CHECK_LIB(z, gzgets,
269 AC_DEFINE(HAVE_LIBZ)
270 LIBZ="-lz"
271 LIBS="$LIBS -lz"
272 AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_INFLATECOPY))
273 if test "x$GZIP" != z; then
274 INSTALL_GZIP="-z"
275 fi))
276AC_SUBST(INSTALL_GZIP)
277AC_SUBST(LIBZ)
278
279dnl Flags for "ar" command...
280case $uname in
281 Darwin* | *BSD*)
282 ARFLAGS="-rcv"
283 ;;
284 *)
285 ARFLAGS="crvs"
286 ;;
287esac
288
289AC_SUBST(ARFLAGS)
290
291dnl Prep libraries specifically for cupsd and backends...
292BACKLIBS=""
293SERVERLIBS=""
294AC_SUBST(BACKLIBS)
295AC_SUBST(SERVERLIBS)
296
297dnl See if we have POSIX ACL support...
298SAVELIBS="$LIBS"
299LIBS=""
300AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
301if test "x$enable_acl" != xno; then
302 AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
303 SERVERLIBS="$SERVERLIBS $LIBS"
304fi
305LIBS="$SAVELIBS"
306
307dnl Check for DBUS support
308AC_ARG_ENABLE(dbus, [ --disable-dbus build without DBUS support])
309AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
310 DBUSDIR="$withval")
311
312DBUSDIR=""
313DBUS_NOTIFIER=""
314DBUS_NOTIFIERLIBS=""
315
316if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x -a "x$uname" != xDarwin; then
317 AC_MSG_CHECKING(for DBUS)
318 if $PKGCONFIG --exists dbus-1; then
319 AC_MSG_RESULT(yes)
320 AC_DEFINE(HAVE_DBUS)
321 CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
322 SERVERLIBS="$SERVERLIBS `$PKGCONFIG --libs dbus-1`"
323 DBUS_NOTIFIER="dbus"
324 DBUS_NOTIFIERLIBS="`$PKGCONFIG --libs dbus-1`"
325 SAVELIBS="$LIBS"
326 LIBS="$LIBS $DBUS_NOTIFIERLIBS"
327 AC_CHECK_FUNC(dbus_message_iter_init_append,
328 AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND))
329 AC_CHECK_FUNC(dbus_threads_init,
330 AC_DEFINE(HAVE_DBUS_THREADS_INIT))
331 LIBS="$SAVELIBS"
332 if test -d /etc/dbus-1; then
333 DBUSDIR="/etc/dbus-1"
334 fi
335 else
336 AC_MSG_RESULT(no)
337 fi
338fi
339
340AC_SUBST(DBUSDIR)
341AC_SUBST(DBUS_NOTIFIER)
342AC_SUBST(DBUS_NOTIFIERLIBS)
343
344dnl Extra platform-specific libraries...
345CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
346CUPS_DEFAULT_SYSTEM_AUTHKEY=""
347CUPS_SYSTEM_AUTHKEY=""
348INSTALLXPC=""
349
350case $uname in
351 Darwin*)
352 BACKLIBS="$BACKLIBS -framework IOKit"
353 SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
354 LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
355
356 dnl Check for framework headers...
357 AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
358 AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
359 AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
360 AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
361
362 dnl Check for dynamic store function...
363 AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
364
365 dnl Check for the new membership functions in MacOSX 10.4...
366 AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
367 AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
368 AC_CHECK_FUNCS(mbr_uid_to_uuid)
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 ;;
430esac
431
432AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
433AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
434AC_DEFINE_UNQUOTED(CUPS_DEFAULT_SYSTEM_AUTHKEY, "$CUPS_DEFAULT_SYSTEM_AUTHKEY")
435AC_SUBST(CUPS_SYSTEM_AUTHKEY)
436AC_SUBST(INSTALLXPC)
437
438dnl Check for build components
439COMPONENTS="all"
440
441AC_ARG_WITH(components, [ --with-components set components to build:
442 - "all" (default) builds everything
443 - "core" builds libcups and ipptool],
444 COMPONENTS="$withval")
445
446case "$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 ;;
458esac
459
460AC_SUBST(BUILDDIRS)