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