doc/examples/configure-index: make "Dpkg::Max{Arg,ArgBytes} match reality
[ntk/apt.git] / configure.ac
... / ...
CommitLineData
1ad
2dnl Process this file with autoconf to produce a configure script.
3dnl The ONLY thing this is used for is to configure for different
4dnl linux architectures and configurations, it is not used to make the
5dnl code more portable
6
7dnl You MUST have an environment that has all the POSIX functions and
8dnl some of the more popular bsd/sysv ones (like select). You'll also
9dnl need a C++ compiler that is semi-standard conformant, exceptions are
10dnl not used but STL is.
11
12dnl 'make -f Makefile startup' will generate the configure file from
13dnl configure.ac correctly and can be run at any time
14
15AC_PREREQ(2.50)
16AC_INIT(configure.ac)
17AC_CONFIG_AUX_DIR(buildlib)
18AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
19
20PACKAGE="apt"
21PACKAGE_VERSION="1.0.9.1"
22PACKAGE_MAIL="APT Development Team <deity@lists.debian.org>"
23AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
24AC_DEFINE_UNQUOTED(PACKAGE_VERSION,"$PACKAGE_VERSION")
25AC_DEFINE_UNQUOTED(PACKAGE_MAIL,"$PACKAGE_MAIL")
26AC_SUBST(PACKAGE)
27AC_SUBST(PACKAGE_VERSION)
28AC_SUBST(PACKAGE_MAIL)
29
30dnl Check the archs, we want the target type.
31AC_CANONICAL_SYSTEM
32
33dnl Check our C compiler
34AC_CHECK_TOOL_PREFIX
35AC_PROG_CC
36AC_ISC_POSIX
37
38dnl check for large file support and enable it if possible
39dnl do this early as other stuff might depend on it
40AC_SYS_LARGEFILE
41
42dnl Check for other programs
43AC_PROG_CXX
44AC_PROG_CPP
45AC_PROG_RANLIB
46AC_CHECK_TOOL(AR,ar,"ar")
47
48dnl Checks for sockets
49SAVE_LIBS="$LIBS"
50LIBS=""
51AC_SEARCH_LIBS(gethostbyname,nsl)
52AC_SEARCH_LIBS(connect,socket)
53SOCKETLIBS="$LIBS"
54AC_SUBST(SOCKETLIBS)
55LIBS="$SAVE_LIBS"
56
57dnl Checks for pthread -- disabled due to glibc bugs jgg
58dnl AC_CHECK_LIB(pthread, pthread_create,[AC_DEFINE(HAVE_PTHREAD) PTHREADLIB="-lpthread"])
59AC_SUBST(PTHREADLIB)
60dnl if test "$PTHREADLIB" != "-lpthread"; then
61dnl AC_MSG_ERROR(failed: I need posix threads, pthread)
62dnl fi
63
64dnl Check for BDB
65saveLIBS="$LIBS"
66LIBS="$LIBS -ldb"
67
68AC_CHECK_HEADER(db.h,
69 [AC_MSG_CHECKING(if we can link against BerkeleyDB)
70 AC_LINK_IFELSE(
71 [AC_LANG_PROGRAM(
72 [#include <db.h>],
73 [int r, s, t; db_version(&r, &s, &t);]
74 )],
75 [AC_DEFINE(HAVE_BDB)
76 BDBLIB="-ldb"
77 AC_MSG_RESULT(yes)],
78 [BDBLIB=""
79 AC_MSG_RESULT(no)]
80 )]
81)
82
83LIBS="$saveLIBS"
84
85AC_CHECK_LIB(curl, curl_easy_init,
86 [AC_CHECK_HEADER(curl/curl.h,
87 curl_ok=yes,
88 curl_ok=no)],
89 AC_MSG_ERROR([failed: I need CURL due https support]),
90)
91
92AC_LANG_PUSH([C++])
93AC_CHECK_HEADER(gtest/gtest.h,,
94 AC_MSG_ERROR([failed: I need gtest to build tests]),
95)
96AC_LANG_POP([C++])
97
98
99AC_SUBST(BDBLIB)
100
101HAVE_ZLIB=no
102AC_CHECK_LIB(z, gzopen,
103 [AC_CHECK_HEADER(zlib.h, [HAVE_ZLIB=yes], AC_MSG_ERROR([failed: zlib.h not found]))],
104 AC_MSG_ERROR([failed: Need libz]))
105AC_SUBST(HAVE_ZLIB)
106if test "x$HAVE_ZLIB" = "xyes"; then
107 AC_DEFINE(HAVE_ZLIB)
108fi
109
110HAVE_BZ2=no
111AC_CHECK_LIB(bz2, BZ2_bzopen,[AC_CHECK_HEADER(bzlib.h, [HAVE_BZ2=yes], [])], [])
112AC_SUBST(HAVE_BZ2)
113if test "x$HAVE_BZ2" = "xyes"; then
114 AC_DEFINE(HAVE_BZ2)
115fi
116
117HAVE_LZMA=no
118AC_CHECK_LIB(lzma, lzma_easy_encoder,[AC_CHECK_HEADER(lzma.h, [HAVE_LZMA=yes], [])], [])
119AC_SUBST(HAVE_LZMA)
120if test "x$HAVE_LZMA" = "xyes"; then
121 AC_DEFINE(HAVE_LZMA)
122fi
123
124dnl Converts the ARCH to be something singular for this general CPU family
125dnl This is often the dpkg architecture string.
126dnl First check against the full canonical canoncial-system-type in $target
127dnl and if that fails, just look for the cpu
128AC_MSG_CHECKING(debian architecture)
129archset="`dpkg-architecture -qDEB_HOST_ARCH`"
130if test "x$archset" = "x"; then
131 AC_MSG_ERROR([failed: use --host= or output from dpkg-architecture])
132fi
133AC_MSG_RESULT($archset)
134AC_DEFINE_UNQUOTED(COMMON_ARCH,"$archset")
135
136dnl Single Unix Spec statvfs
137AC_CHECK_FUNC(statvfs,[HAVE_STATVFS=yes])
138AC_SUBST(HAVE_STATVFS)
139
140dnl Arg, linux and bsd put their statfs function in different places
141if test x"$HAVE_STATVFS" != x"yes"; then
142 AC_EGREP_HEADER(statfs,sys/vfs.h,[AC_DEFINE(HAVE_VFS_H)],[
143 AC_EGREP_HEADER(statfs,sys/mount.h,[AC_DEFINE(HAVE_MOUNT_H)],[AC_MSG_ERROR(failed: Need statvfs)])
144 ])
145fi
146
147AC_CHECK_MEMBERS([struct statfs.f_type],,,
148 [$ac_includes_default
149 #include <sys/vfs.h>])
150
151dnl We should use the real timegm function if we have it.
152AC_CHECK_FUNC(timegm,AC_DEFINE(HAVE_TIMEGM))
153AC_SUBST(HAVE_TIMEGM)
154
155dnl Check the architecture
156AC_C_BIGENDIAN
157
158dnl HP-UX sux..
159AC_MSG_CHECKING(for missing socklen_t)
160AC_EGREP_HEADER(socklen_t, sys/socket.h,[AC_MSG_RESULT(no)],[
161 AC_DEFINE(NEED_SOCKLEN_T_DEFINE)
162 NEED_SOCKLEN_T_DEFINE=yes
163 AC_MSG_RESULT(missing.)])
164AC_SUBST(NEED_SOCKLEN_T_DEFINE)
165
166dnl HP-UX needs -d_XOPEN_SOURCE_EXTENDED for h_errno
167AC_MSG_CHECKING(for h_errno)
168AC_EGREP_HEADER(h_errno, netdb.h, [AC_MSG_RESULT(normal)],
169 [CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
170 AC_EGREP_HEADER(h_errno, netdb.h,
171 [AC_MSG_RESULT(needs _XOPEN_SOURCE_EXTENDED)],
172 [AC_MSG_ERROR("not found.")])
173 ])
174
175dnl Check for doxygen
176AC_PATH_PROG(DOXYGEN, doxygen)
177
178dnl Check for the XSLTProc tool needed to build man pages together with po4a
179AC_PATH_PROG(XSLTPROC,xsltproc)
180AC_PATH_PROG(W3M, w3m)
181
182dnl Check for the po4a tool needed to build man pages
183AC_PATH_PROG(PO4A,po4a)
184
185dnl Check for graphviz
186AC_CHECK_PROG([HAVE_DOT], [dot], [YES], [NO])
187AC_PATH_PROG([DOT], [dot], [])
188DOTDIR=$(dirname $DOT)
189AC_SUBST(DOTDIR)
190
191ah_NUM_PROCS
192ah_GCC3DEP
193
194AM_GNU_GETTEXT(external)
195if test x"$USE_NLS" = "xyes"; then
196 AC_DEFINE(USE_NLS)
197fi
198AC_SUBST(USE_NLS)
199AC_PATH_PROG(BASH, bash)
200
201AC_OUTPUT(environment.mak:buildlib/environment.mak.in makefile:buildlib/makefile.in doc/Doxyfile:doc/Doxyfile.in,make -s dirs)