]> git.ipfire.org Git - thirdparty/cups.git/blame - config-scripts/cups-common.m4
Merge changes from CUPS 1.5svn-r9229.
[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
ef416fc2 145dnl Checks for string functions.
146AC_CHECK_FUNCS(strdup strcasecmp strncasecmp strlcat strlcpy)
147if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then
148 echo Forcing snprintf emulation for HP-UX.
149else
150 AC_CHECK_FUNCS(snprintf vsnprintf)
151fi
152
ac884b6a 153dnl Check for random number functions...
41681883 154AC_CHECK_FUNCS(random lrand48 arc4random)
ac884b6a 155
ef416fc2 156dnl Check for geteuid function.
157AC_CHECK_FUNCS(geteuid)
158
159dnl Check for vsyslog function.
160AC_CHECK_FUNCS(vsyslog)
161
162dnl Checks for signal functions.
163case "$uname" in
164 Linux | GNU)
165 # Do not use sigset on Linux or GNU HURD
166 ;;
167 *)
168 # Use sigset on other platforms, if available
169 AC_CHECK_FUNCS(sigset)
170 ;;
171esac
172
173AC_CHECK_FUNCS(sigaction)
174
175dnl Checks for wait functions.
cc0d019f 176AC_CHECK_FUNCS(waitpid wait3)
ef416fc2 177
178dnl See if the tm structure has the tm_gmtoff member...
179AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
180AC_TRY_COMPILE([#include <time.h>],[struct tm t;
181 int o = t.tm_gmtoff;],
182 AC_MSG_RESULT(yes)
183 AC_DEFINE(HAVE_TM_GMTOFF),
184 AC_MSG_RESULT(no))
185
c7017ecc
MS
186dnl See if the stat structure has the st_gen member...
187AC_MSG_CHECKING(for st_gen member in stat structure)
188AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat t;
189 int o = t.st_gen;],
190 AC_MSG_RESULT(yes)
191 AC_DEFINE(HAVE_ST_GEN),
192 AC_MSG_RESULT(no))
193
cc0d019f
MS
194dnl See if we have the removefile(3) function for securely removing files
195AC_CHECK_FUNCS(removefile)
196
75bd9771 197dnl See if we have libusb...
bf3816c7 198AC_ARG_ENABLE(libusb, [ --enable-libusb use libusb for USB printing])
75bd9771
MS
199
200LIBUSB=""
201AC_SUBST(LIBUSB)
202
203if test x$enable_libusb = xyes; then
204 check_libusb=yes
205elif test x$enable_libusb != xno -a $uname != Darwin; then
206 check_libusb=yes
207else
208 check_libusb=no
209fi
210
211if test $check_libusb = yes; then
212 AC_CHECK_LIB(usb, usb_init,[
213 AC_CHECK_HEADER(usb.h,
214 AC_DEFINE(HAVE_USB_H)
215 LIBUSB="-lusb")])
216fi
217
749b1e90 218dnl See if we have libwrap for TCP wrappers support...
bf3816c7 219AC_ARG_ENABLE(tcp_wrappers, [ --enable-tcp-wrappers use libwrap for TCP wrappers support])
749b1e90
MS
220
221LIBWRAP=""
222AC_SUBST(LIBWRAP)
223
224if test x$enable_tcp_wrappers = xyes; then
225 AC_CHECK_LIB(wrap, hosts_access,[
226 AC_CHECK_HEADER(tcpd.h,
227 AC_DEFINE(HAVE_TCPD_H)
228 LIBWRAP="-lwrap")])
229fi
230
ef416fc2 231dnl Flags for "ar" command...
232case $uname in
233 Darwin* | *BSD*)
234 ARFLAGS="-rcv"
235 ;;
236 *)
237 ARFLAGS="crvs"
238 ;;
239esac
240
241AC_SUBST(ARFLAGS)
242
ac884b6a 243dnl Prep libraries specifically for cupsd and backends...
bd7854cb 244BACKLIBS=""
cc754834 245SERVERLIBS=""
ac884b6a 246AC_SUBST(BACKLIBS)
cc754834 247AC_SUBST(SERVERLIBS)
ac884b6a
MS
248
249dnl See if we have POSIX ACL support...
250SAVELIBS="$LIBS"
251LIBS=""
bf3816c7 252AC_ARG_ENABLE(acl, [ --enable-acl build with POSIX ACL support])
ee571f26
MS
253if test "x$enable_acl" != xno; then
254 AC_SEARCH_LIBS(acl_init, acl, AC_DEFINE(HAVE_ACL_INIT))
cc754834 255 SERVERLIBS="$SERVERLIBS $LIBS"
ee571f26 256fi
ac884b6a
MS
257LIBS="$SAVELIBS"
258
259dnl Check for DBUS support
260if test -d /etc/dbus-1; then
261 DBUSDIR="/etc/dbus-1"
262else
263 DBUSDIR=""
264fi
bd7854cb 265
bf3816c7 266AC_ARG_ENABLE(dbus, [ --enable-dbus build with DBUS support])
ac884b6a
MS
267AC_ARG_WITH(dbusdir, [ --with-dbusdir set DBUS configuration directory ],
268 DBUSDIR="$withval")
269
c5571a1d
MS
270DBUS_NOTIFIER=""
271DBUS_NOTIFIERLIBS=""
272
ac884b6a
MS
273if test "x$enable_dbus" != xno; then
274 AC_PATH_PROG(PKGCONFIG, pkg-config)
275 if test "x$PKGCONFIG" != x; then
276 AC_MSG_CHECKING(for DBUS)
277 if $PKGCONFIG --exists dbus-1; then
278 AC_MSG_RESULT(yes)
279 AC_DEFINE(HAVE_DBUS)
280 CFLAGS="$CFLAGS `$PKGCONFIG --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE"
cc754834 281 SERVERLIBS="$SERVERLIBS `$PKGCONFIG --libs dbus-1`"
5a662dc0
MS
282 DBUS_NOTIFIER="dbus"
283 DBUS_NOTIFIERLIBS="`$PKGCONFIG --libs dbus-1`"
ac884b6a 284 AC_CHECK_LIB(dbus-1,
c5571a1d
MS
285 dbus_message_iter_init_append,
286 AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_INIT_APPEND),,
287 `$PKGCONFIG --libs dbus-1`)
ac884b6a
MS
288 else
289 AC_MSG_RESULT(no)
290 fi
291 fi
292fi
ecdc0628 293
ac884b6a 294AC_SUBST(DBUSDIR)
c5571a1d
MS
295AC_SUBST(DBUS_NOTIFIER)
296AC_SUBST(DBUS_NOTIFIERLIBS)
ac884b6a
MS
297
298dnl Extra platform-specific libraries...
b9faaae1 299CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
ac884b6a 300CUPS_SYSTEM_AUTHKEY=""
f8b3a85b 301LEGACY_BACKENDS="parallel"
09a101d6 302
ef416fc2 303case $uname in
304 Darwin*)
09a101d6 305 LEGACY_BACKENDS=""
ac884b6a 306 BACKLIBS="$BACKLIBS -framework IOKit"
cc754834 307 SERVERLIBS="$SERVERLIBS -framework IOKit -weak_framework ApplicationServices"
f8b3a85b 308 LIBS="-framework SystemConfiguration -framework CoreFoundation -framework Security $LIBS"
fa73b229 309
310 dnl Check for framework headers...
6d2f911b 311 AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h,AC_DEFINE(HAVE_APPLICATIONSERVICES_H))
fa73b229 312 AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
313 AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
314 AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
315
6d2f911b
MS
316 dnl Check for dynamic store function...
317 AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
318
7594b224 319 dnl Check for the new membership functions in MacOSX 10.4...
fa73b229 320 AC_CHECK_HEADER(membership.h,AC_DEFINE(HAVE_MEMBERSHIP_H))
7594b224 321 AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
fa73b229 322 AC_CHECK_FUNCS(mbr_uid_to_uuid)
323
178cb736
MS
324 dnl Check for the vproc_transaction_begin/end stuff...
325 AC_CHECK_FUNCS(vproc_transaction_begin)
326
7594b224 327 dnl Need <dlfcn.h> header...
328 AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
329
fa73b229 330 dnl Check for notify_post support
331 AC_CHECK_HEADER(notify.h,AC_DEFINE(HAVE_NOTIFY_H))
332 AC_CHECK_FUNCS(notify_post)
f7deaa1a 333
334 dnl Check for Authorization Services support
1f0275e3
MS
335 AC_ARG_WITH(adminkey, [ --with-adminkey set the default SystemAuthKey value],
336 default_adminkey="$withval",
337 default_adminkey="default")
338 AC_ARG_WITH(operkey, [ --with-operkey set the default operator @AUTHKEY value],
339 default_operkey="$withval",
340 default_operkey="default")
341
f7deaa1a 342 AC_CHECK_HEADER(Security/Authorization.h, [
343 AC_DEFINE(HAVE_AUTHORIZATION_H)
1f0275e3
MS
344
345 if test "x$default_adminkey" != xdefault; then
346 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey $default_adminkey"
347 elif grep -q system.print.operator /etc/authorization; then
348 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.print.admin"
01ce6322 349 else
1f0275e3
MS
350 CUPS_SYSTEM_AUTHKEY="SystemGroupAuthKey system.preferences"
351 fi
352
353 if test "x$default_operkey" != xdefault; then
b9faaae1 354 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
1f0275e3 355 elif grep -q system.print.operator /etc/authorization; then
b9faaae1 356 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
1f0275e3 357 else
b9faaae1 358 CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
01ce6322 359 fi])
f7deaa1a 360 AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
a4924f6c
MS
361
362 dnl Check for sandbox/Seatbelt support
363 AC_CHECK_HEADER(sandbox.h,AC_DEFINE(HAVE_SANDBOX_H))
ef416fc2 364 ;;
ef416fc2 365esac
366
b9faaae1
MS
367AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
368AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
f7deaa1a 369AC_SUBST(CUPS_SYSTEM_AUTHKEY)
ac884b6a 370AC_SUBST(LEGACY_BACKENDS)
ef416fc2 371
6d2f911b
MS
372dnl Check for build components
373COMPONENTS="all"
374
375AC_ARG_WITH(components, [ --with-components set components to build:
376 - "all" (default) builds everything
377 - "core" builds libcups and ipptool],
378 COMPONENTS="$withval")
379
380case "$COMPONENTS" in
381 all)
382 BUILDDIRS="filter backend berkeley cgi-bin driver monitor notifier ppdc scheduler systemv conf data locale man doc examples templates"
383 ;;
384
385 core)
386 BUILDDIRS="data locale"
387 ;;
388
389 *)
390 AC_MSG_ERROR([Bad build component "$COMPONENT" specified!])
391 ;;
392esac
393
394AC_SUBST(BUILDDIRS)
395
ef416fc2 396dnl
18ecb428 397dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".
ef416fc2 398dnl