]> git.ipfire.org Git - thirdparty/cups.git/blame - config-scripts/cups-common.m4
Merge changes from CUPS 1.5svn-r9385.
[thirdparty/cups.git] / config-scripts / cups-common.m4
CommitLineData
ef416fc2 1dnl
18ecb428 2dnl "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $"
ef416fc2 3dnl
6d2f911b 4dnl Common configuration stuff for CUPS.
ef416fc2 5dnl
6d2f911b 6dnl Copyright 2007-2010 by Apple Inc.
f7deaa1a 7dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
ef416fc2 8dnl
9dnl These coded instructions, statements, and computer programs are the
bc44d920 10dnl property of Apple Inc. and are protected by Federal copyright
11dnl law. Distribution and use rights are outlined in the file "LICENSE.txt"
12dnl which should have been included with this file. If this file is
13dnl file is missing or damaged, see the license at "http://www.cups.org/".
ef416fc2 14dnl
15
c277e2f8
MS
16dnl We need at least autoconf 2.60...
17AC_PREREQ(2.60)
ef416fc2 18
19dnl Set the name of the config header file...
20AC_CONFIG_HEADER(config.h)
21
ac884b6a 22dnl Version number information...
18ecb428 23CUPS_VERSION="1.5svn"
ecdc0628 24CUPS_REVISION=""
6d2f911b
MS
25if 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'`"
27fi
e4572d57
MS
28CUPS_BUILD="cups-$CUPS_VERSION"
29
30AC_ARG_WITH(cups_build, [ --with-cups-build set "cups-config --build" string ],
31 CUPS_BUILD="$withval")
ecdc0628 32
ef416fc2 33AC_SUBST(CUPS_VERSION)
ecdc0628 34AC_SUBST(CUPS_REVISION)
e4572d57 35AC_SUBST(CUPS_BUILD)
ecdc0628 36AC_DEFINE_UNQUOTED(CUPS_SVERSION, "CUPS v$CUPS_VERSION$CUPS_REVISION")
37AC_DEFINE_UNQUOTED(CUPS_MINIMAL, "CUPS/$CUPS_VERSION$CUPS_REVISION")
ef416fc2 38
39dnl Default compiler flags...
40CFLAGS="${CFLAGS:=}"
41CPPFLAGS="${CPPFLAGS:=}"
ac884b6a 42CXXFLAGS="${CXXFLAGS:=}"
ef416fc2 43LDFLAGS="${LDFLAGS:=}"
44
45dnl Checks for programs...
46AC_PROG_AWK
47AC_PROG_CC
ef416fc2 48AC_PROG_CPP
ac884b6a 49AC_PROG_CXX
ef416fc2 50AC_PROG_RANLIB
51AC_PATH_PROG(AR,ar)
97c9a8d7 52AC_PATH_PROG(CHMOD,chmod)
ef416fc2 53AC_PATH_PROG(HTMLDOC,htmldoc)
bd7854cb 54AC_PATH_PROG(LD,ld)
ef416fc2 55AC_PATH_PROG(LN,ln)
56AC_PATH_PROG(MV,mv)
57AC_PATH_PROG(RM,rm)
e1d6a774 58AC_PATH_PROG(RMDIR,rmdir)
ef416fc2 59AC_PATH_PROG(SED,sed)
ee571f26
MS
60AC_PATH_PROG(XDGOPEN,xdg-open)
61if test "x$XDGOPEN" = x; then
62 CUPS_HTMLVIEW="htmlview"
63else
64 CUPS_HTMLVIEW="$XDGOPEN"
65fi
66AC_SUBST(CUPS_HTMLVIEW)
839a51c8
MS
67
68AC_MSG_CHECKING(for install-sh script)
e07d4801 69INSTALL="`pwd`/install-sh"
839a51c8
MS
70AC_SUBST(INSTALL)
71AC_MSG_RESULT(using $INSTALL)
ef416fc2 72
73if test "x$AR" = x; then
74 AC_MSG_ERROR([Unable to find required library archive command.])
75fi
76if test "x$CC" = x; then
77 AC_MSG_ERROR([Unable to find required C compiler command.])
78fi
ef416fc2 79
923edb68 80dnl Static library option...
81INSTALLSTATIC=""
bf3816c7 82AC_ARG_ENABLE(static, [ --enable-static install static libraries])
923edb68 83
d6ae789d 84if test x$enable_static = xyes; then
85 echo Installing static libraries...
923edb68 86 INSTALLSTATIC="installstatic"
87fi
88
89AC_SUBST(INSTALLSTATIC)
ef416fc2 90
91dnl Check for libraries...
92AC_SEARCH_LIBS(crypt, crypt)
93AC_SEARCH_LIBS(getspent, sec gen)
94
95LIBMALLOC=""
bf3816c7 96AC_ARG_ENABLE(mallinfo, [ --enable-mallinfo build with malloc debug logging])
ef416fc2 97
98if test x$enable_mallinfo = xyes; then
75bd9771
MS
99 SAVELIBS="$LIBS"
100 LIBS=""
101 AC_SEARCH_LIBS(mallinfo, malloc, AC_DEFINE(HAVE_MALLINFO))
102 LIBMALLOC="$LIBS"
103 LIBS="$SAVELIBS"
ef416fc2 104fi
105
106AC_SUBST(LIBMALLOC)
107
108dnl Check for libpaper support...
bf3816c7 109AC_ARG_ENABLE(libpaper, [ --enable-libpaper build with libpaper support])
ef416fc2 110
111if test x$enable_libpaper = xyes; then
112 AC_CHECK_LIB(paper,systempapername,
113 AC_DEFINE(HAVE_LIBPAPER)
114 LIBPAPER="-lpaper",
115 LIBPAPER="")
116else
117 LIBPAPER=""
118fi
119AC_SUBST(LIBPAPER)
120
121dnl Checks for header files.
122AC_HEADER_STDC
123AC_CHECK_HEADER(crypt.h,AC_DEFINE(HAVE_CRYPT_H))
124AC_CHECK_HEADER(langinfo.h,AC_DEFINE(HAVE_LANGINFO_H))
125AC_CHECK_HEADER(malloc.h,AC_DEFINE(HAVE_MALLOC_H))
126AC_CHECK_HEADER(shadow.h,AC_DEFINE(HAVE_SHADOW_H))
127AC_CHECK_HEADER(string.h,AC_DEFINE(HAVE_STRING_H))
128AC_CHECK_HEADER(strings.h,AC_DEFINE(HAVE_STRINGS_H))
129AC_CHECK_HEADER(bstring.h,AC_DEFINE(HAVE_BSTRING_H))
130AC_CHECK_HEADER(usersec.h,AC_DEFINE(HAVE_USERSEC_H))
131AC_CHECK_HEADER(sys/ioctl.h,AC_DEFINE(HAVE_SYS_IOCTL_H))
db1f069b 132AC_CHECK_HEADER(sys/param.h,AC_DEFINE(HAVE_SYS_PARAM_H))
bc44d920 133AC_CHECK_HEADER(sys/ucred.h,AC_DEFINE(HAVE_SYS_UCRED_H))
2abf387c 134AC_CHECK_HEADER(scsi/sg.h,AC_DEFINE(HAVE_SCSI_SG_H))
ef416fc2 135
cc754834
MS
136dnl Checks for iconv.h and iconv_open
137AC_CHECK_HEADER(iconv.h,
138 SAVELIBS="$LIBS"
139 LIBS=""
140 AC_SEARCH_LIBS(iconv_open,iconv,
141 AC_DEFINE(HAVE_ICONV_H)
142 SAVELIBS="$SAVELIBS $LIBS")
143 LIBS="$SAVELIBS")
144
7cf5915e
MS
145dnl Checks for statfs and its many headers...
146AC_CHECK_HEADER(sys/mount.h,AC_DEFINE(HAVE_SYS_MOUNT_H))
147AC_CHECK_HEADER(sys/statfs.h,AC_DEFINE(HAVE_SYS_STATFS_H))
148AC_CHECK_HEADER(sys/statvfs.h,AC_DEFINE(HAVE_SYS_STATVFS_H))
149AC_CHECK_HEADER(sys/vfs.h,AC_DEFINE(HAVE_SYS_VFS_H))
150AC_CHECK_FUNCS(statfs statvfs)
151
ef416fc2 152dnl Checks for string functions.
153AC_CHECK_FUNCS(strdup strcasecmp strncasecmp strlcat strlcpy)
154if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then
155 echo Forcing snprintf emulation for HP-UX.
156else
157 AC_CHECK_FUNCS(snprintf vsnprintf)
158fi
159
ac884b6a 160dnl Check for random number functions...
41681883 161AC_CHECK_FUNCS(random lrand48 arc4random)
ac884b6a 162
ef416fc2 163dnl Check for geteuid function.
164AC_CHECK_FUNCS(geteuid)
165
166dnl Check for vsyslog function.
167AC_CHECK_FUNCS(vsyslog)
168
169dnl Checks for signal functions.
170case "$uname" in
171 Linux | GNU)
172 # Do not use sigset on Linux or GNU HURD
173 ;;
174 *)
175 # Use sigset on other platforms, if available
176 AC_CHECK_FUNCS(sigset)
177 ;;
178esac
179
180AC_CHECK_FUNCS(sigaction)
181
182dnl Checks for wait functions.
cc0d019f 183AC_CHECK_FUNCS(waitpid wait3)
ef416fc2 184
185dnl See if the tm structure has the tm_gmtoff member...
186AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
187AC_TRY_COMPILE([#include <time.h>],[struct tm t;
188 int o = t.tm_gmtoff;],
189 AC_MSG_RESULT(yes)
190 AC_DEFINE(HAVE_TM_GMTOFF),
191 AC_MSG_RESULT(no))
192
c7017ecc
MS
193dnl See if the stat structure has the st_gen member...
194AC_MSG_CHECKING(for st_gen member in stat structure)
195AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat t;
196 int o = t.st_gen;],
197 AC_MSG_RESULT(yes)
198 AC_DEFINE(HAVE_ST_GEN),
199 AC_MSG_RESULT(no))
200
cc0d019f
MS
201dnl See if we have the removefile(3) function for securely removing files
202AC_CHECK_FUNCS(removefile)
203
75bd9771 204dnl See if we have libusb...
bf3816c7 205AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
75bd9771
MS
206
207LIBUSB=""
208AC_SUBST(LIBUSB)
209
210if test x$enable_libusb = xyes; then
211 check_libusb=yes
212elif test x$enable_libusb != xno -a $uname != Darwin; then
213 check_libusb=yes
214else
215 check_libusb=no
216fi
217
218if test $check_libusb = yes; then
219 AC_CHECK_LIB(usb, usb_init,[
220 AC_CHECK_HEADER(usb.h,
221 AC_DEFINE(HAVE_USB_H)
222 LIBUSB="-lusb")])
223fi
224
749b1e90 225dnl See if we have libwrap for TCP wrappers support...
bf3816c7 226AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support])
749b1e90
MS
227
228LIBWRAP=""
229AC_SUBST(LIBWRAP)
230
231if test x$enable_tcp_wrappers = xyes; then
232 AC_CHECK_LIB(wrap, hosts_access,[
233 AC_CHECK_HEADER(tcpd.h,
234 AC_DEFINE(HAVE_TCPD_H)
235 LIBWRAP="-lwrap")])
236fi
237
ef416fc2 238dnl Flags for "ar" command...
239case $uname in
240 Darwin* | *BSD*)
241 ARFLAGS="-rcv"
242 ;;
243 *)
244 ARFLAGS="crvs"
245 ;;
246esac
247
248AC_SUBST(ARFLAGS)
249
ac884b6a 250dnl Prep libraries specifically for cupsd and backends...
bd7854cb 251BACKLIBS=""
cc754834 252SERVERLIBS=""
ac884b6a 253AC_SUBST(BACKLIBS)
cc754834 254AC_SUBST(SERVERLIBS)
ac884b6a
MS
255
256dnl See if we have POSIX ACL support...
257SAVELIBS="$LIBS"
258LIBS=""
bf3816c7 259AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
ee571f26
MS
260if test "x$enable_acl" != xno; then
261 AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
cc754834 262 SERVERLIBS="$SERVERLIBS $LIBS"
ee571f26 263fi
ac884b6a
MS
264LIBS="$SAVELIBS"
265
266dnl Check for DBUS support
267if test -d /etc/dbus-1; then
268 DBUSDIR="/etc/dbus-1"
269else
270 DBUSDIR=""
271fi
bd7854cb 272
bf3816c7 273AC_ARG_ENABLE(dbus, [ --enable-dbus build with DBUS support])
ac884b6a
MS
274AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
275 DBUSDIR="$withval")
276
c5571a1d
MS
277DBUS_NOTIFIER=""
278DBUS_NOTIFIERLIBS=""
279
ac884b6a
MS
280if test "x$enable_dbus" != xno; then
281 AC_PATH_PROG(PKGCONFIG, pkg-config)
282 if test "x$PKGCONFIG" != x; then
283 AC_MSG_CHECKING(for DBUS)
284 if $PKGCONFIG --exists dbus-1; then
285 AC_MSG_RESULT(yes)
286 AC_DEFINE(HAVE_DBUS)
287 CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
cc754834 288 SERVERLIBS="$SERVERLIBS `$PKGCONFIG --libs dbus-1`"
5a662dc0
MS
289 DBUS_NOTIFIER="dbus"
290 DBUS_NOTIFIERLIBS="`$PKGCONFIG --libs dbus-1`"
ac884b6a 291 AC_CHECK_LIB(dbus-1,
c5571a1d
MS
292 dbus_message_iter_init_append,
293 AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND),,
294 `$PKGCONFIG --libs dbus-1`)
ac884b6a
MS
295 else
296 AC_MSG_RESULT(no)
297 fi
298 fi
299fi
ecdc0628 300
ac884b6a 301AC_SUBST(DBUSDIR)
c5571a1d
MS
302AC_SUBST(DBUS_NOTIFIER)
303AC_SUBST(DBUS_NOTIFIERLIBS)
ac884b6a
MS
304
305dnl Extra platform-specific libraries...
b9faaae1 306CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
ac884b6a 307CUPS_SYSTEM_AUTHKEY=""
f8b3a85b 308LEGACY_BACKENDS="parallel"
09a101d6 309
ef416fc2 310case $uname in
311 Darwin*)
09a101d6 312 LEGACY_BACKENDS=""
ac884b6a 313 BACKLIBS="$BACKLIBS -framework IOKit"
cc754834 314 SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
f8b3a85b 315 LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
fa73b229 316
317 dnl Check for framework headers...
6d2f911b 318 AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
fa73b229 319 AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
320 AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
321 AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
322
6d2f911b
MS
323 dnl Check for dynamic store function...
324 AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
325
7594b224 326 dnl Check for the new membership functions in MacOSX 10.4...
fa73b229 327 AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
7594b224 328 AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
fa73b229 329 AC_CHECK_FUNCS(mbr_uid_to_uuid)
330
178cb736
MS
331 dnl Check for the vproc_transaction_begin/end stuff...
332 AC_CHECK_FUNCS(vproc_transaction_begin)
333
7594b224 334 dnl Need <dlfcn.h> header...
335 AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
336
fa73b229 337 dnl Check for notify_post support
338 AC_CHECK_HEADER(notify.h,AC_DEFINE(HAVE_NOTIFY_H))
339 AC_CHECK_FUNCS(notify_post)
f7deaa1a 340
341 dnl Check for Authorization Services support
1f0275e3
MS
342 AC_ARG_WITH(adminkey, [ --with-adminkey set the default SystemAuthKey value],
343 default_adminkey="$withval",
344 default_adminkey="default")
345 AC_ARG_WITH(operkey, [ --with-operkey set the default operator @AUTHKEY value],
346 default_operkey="$withval",
347 default_operkey="default")
348
f7deaa1a 349 AC_CHECK_HEADER(Security/Authorization.h, [
350 AC_DEFINE(HAVE_AUTHORIZATION_H)
1f0275e3
MS
351
352 if test "x$default_adminkey" != xdefault; then
353 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
354 elif grep -q system.print.operator /etc/authorization; then
355 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
01ce6322 356 else
1f0275e3
MS
357 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
358 fi
359
360 if test "x$default_operkey" != xdefault; then
b9faaae1 361 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
1f0275e3 362 elif grep -q system.print.operator /etc/authorization; then
b9faaae1 363 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
1f0275e3 364 else
b9faaae1 365 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
01ce6322 366 fi])
f7deaa1a 367 AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
a4924f6c
MS
368
369 dnl Check for sandbox/Seatbelt support
370 AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
ef416fc2 371 ;;
ef416fc2 372esac
373
b9faaae1
MS
374AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
375AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
f7deaa1a 376AC_SUBST(CUPS_SYSTEM_AUTHKEY)
ac884b6a 377AC_SUBST(LEGACY_BACKENDS)
ef416fc2 378
6d2f911b
MS
379dnl Check for build components
380COMPONENTS="all"
381
382AC_ARG_WITH(components, [ --with-components set components to build:
383 - "all" (default) builds everything
384 - "core" builds libcups and ipptool],
385 COMPONENTS="$withval")
386
387case "$COMPONENTS" in
388 all)
389 BUILDDIRS="filter backend berkeley cgi-bin driver monitor notifier ppdc scheduler systemv conf data locale man doc examples templates"
390 ;;
391
392 core)
393 BUILDDIRS="data locale"
394 ;;
395
396 *)
397 AC_MSG_ERROR([Bad build component "$COMPONENT" specified!])
398 ;;
399esac
400
401AC_SUBST(BUILDDIRS)
402
ef416fc2 403dnl
18ecb428 404dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".
ef416fc2 405dnl