]> git.saurik.com Git - apt.git/blob - configure.ac
if file is inaccessible for _apt, disable privilege drop in acquire
[apt.git] / configure.ac
1 ad
2 dnl Process this file with autoconf to produce a configure script.
3 dnl The ONLY thing this is used for is to configure for different
4 dnl linux architectures and configurations, it is not used to make the
5 dnl code more portable
6
7 dnl You MUST have an environment that has all the POSIX functions and
8 dnl some of the more popular bsd/sysv ones (like select). You'll also
9 dnl need a C++ compiler that is semi-standard conformant, exceptions are
10 dnl not used but STL is.
11
12 dnl 'make -f Makefile startup' will generate the configure file from
13 dnl configure.ac correctly and can be run at any time
14
15 AC_PREREQ(2.50)
16 AC_INIT(configure.ac)
17 AC_CONFIG_AUX_DIR(buildlib)
18 AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
19
20 PACKAGE="apt"
21 PACKAGE_VERSION="1.1~exp11"
22 PACKAGE_MAIL="APT Development Team <deity@lists.debian.org>"
23 AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
24 AC_DEFINE_UNQUOTED(PACKAGE_VERSION,"$PACKAGE_VERSION")
25 AC_DEFINE_UNQUOTED(PACKAGE_MAIL,"$PACKAGE_MAIL")
26 AC_SUBST(PACKAGE)
27 AC_SUBST(PACKAGE_VERSION)
28 AC_SUBST(PACKAGE_MAIL)
29
30 dnl Check the archs, we want the target type.
31 AC_CANONICAL_SYSTEM
32
33 dnl Check our C compiler
34 AC_CHECK_TOOL_PREFIX
35 AC_PROG_CC
36 AC_ISC_POSIX
37
38 dnl check for large file support and enable it if possible
39 dnl do this early as other stuff might depend on it
40 AC_SYS_LARGEFILE
41
42 dnl Check for other programs
43 AC_PROG_CXX
44 AC_PROG_CPP
45 AC_PROG_RANLIB
46 AC_CHECK_TOOL(AR,ar,"ar")
47
48 dnl Checks for sockets
49 SAVE_LIBS="$LIBS"
50 LIBS=""
51 AC_SEARCH_LIBS(gethostbyname,nsl)
52 AC_SEARCH_LIBS(connect,socket)
53 SOCKETLIBS="$LIBS"
54 AC_SUBST(SOCKETLIBS)
55 LIBS="$SAVE_LIBS"
56
57 dnl Checks for pthread -- disabled due to glibc bugs jgg
58 dnl AC_CHECK_LIB(pthread, pthread_create,[AC_DEFINE(HAVE_PTHREAD) PTHREADLIB="-lpthread"])
59 AC_SUBST(PTHREADLIB)
60 dnl if test "$PTHREADLIB" != "-lpthread"; then
61 dnl AC_MSG_ERROR(failed: I need posix threads, pthread)
62 dnl fi
63
64 dnl Check for BDB
65 saveLIBS="$LIBS"
66 LIBS="$LIBS -ldb"
67
68 AC_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
83 LIBS="$saveLIBS"
84
85 AC_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
92 AC_LANG_PUSH([C++])
93 AC_CHECK_HEADER(gtest/gtest.h,,
94 AC_MSG_WARN([failed: I need gtest (packaged as libgtest-dev) for unit testing]),
95 )
96 AC_LANG_POP([C++])
97
98
99 AC_SUBST(BDBLIB)
100
101 HAVE_ZLIB=no
102 AC_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]))
105 AC_SUBST(HAVE_ZLIB)
106 if test "x$HAVE_ZLIB" = "xyes"; then
107 AC_DEFINE(HAVE_ZLIB)
108 fi
109
110 HAVE_BZ2=no
111 AC_CHECK_LIB(bz2, BZ2_bzopen,[AC_CHECK_HEADER(bzlib.h, [HAVE_BZ2=yes], [])], [])
112 AC_SUBST(HAVE_BZ2)
113 if test "x$HAVE_BZ2" = "xyes"; then
114 AC_DEFINE(HAVE_BZ2)
115 fi
116
117 HAVE_LZMA=no
118 AC_CHECK_LIB(lzma, lzma_easy_encoder,[AC_CHECK_HEADER(lzma.h, [HAVE_LZMA=yes], [])], [])
119 AC_SUBST(HAVE_LZMA)
120 if test "x$HAVE_LZMA" = "xyes"; then
121 AC_DEFINE(HAVE_LZMA)
122 fi
123
124 dnl Converts the ARCH to be something singular for this general CPU family
125 dnl This is often the dpkg architecture string.
126 dnl First check against the full canonical canoncial-system-type in $target
127 dnl and if that fails, just look for the cpu
128 AC_MSG_CHECKING(debian architecture)
129 archset="`dpkg-architecture -qDEB_HOST_ARCH`"
130 if test "x$archset" = "x"; then
131 AC_MSG_ERROR([failed: use --host= or output from dpkg-architecture])
132 fi
133 AC_MSG_RESULT($archset)
134 AC_DEFINE_UNQUOTED(COMMON_ARCH,"$archset")
135
136 dnl Single Unix Spec statvfs
137 AC_CHECK_FUNC(statvfs,[HAVE_STATVFS=yes])
138 AC_SUBST(HAVE_STATVFS)
139
140 dnl Arg, linux and bsd put their statfs function in different places
141 if 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 ])
145 fi
146
147 AC_CHECK_MEMBERS([struct statfs.f_type],,,
148 [$ac_includes_default
149 #include <sys/vfs.h>])
150
151 dnl We should use the real timegm function if we have it.
152 AC_CHECK_FUNC(timegm,AC_DEFINE(HAVE_TIMEGM))
153 AC_SUBST(HAVE_TIMEGM)
154
155 dnl Check the architecture
156 AC_C_BIGENDIAN
157
158 dnl HP-UX sux..
159 AC_MSG_CHECKING(for missing socklen_t)
160 AC_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.)])
164 AC_SUBST(NEED_SOCKLEN_T_DEFINE)
165
166 dnl HP-UX needs -d_XOPEN_SOURCE_EXTENDED for h_errno
167 AC_MSG_CHECKING(for h_errno)
168 AC_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
175
176 dnl check for setuid checking function
177 AC_CHECK_FUNCS(getresuid getresgid setresuid setresgid)
178 AC_SUBST(HAVE_GETRESUID)
179 AC_SUBST(HAVE_GETRESGID)
180 AC_SUBST(HAVE_SETRESUID)
181 AC_SUBST(HAVE_SETRESGID)
182
183 dnl Check for doxygen
184 AC_PATH_PROG(DOXYGEN, doxygen)
185
186 dnl Check for the XSLTProc tool needed to build man pages together with po4a
187 AC_PATH_PROG(XSLTPROC,xsltproc)
188 AC_PATH_PROG(W3M, w3m)
189
190 dnl Check for the po4a tool needed to build man pages
191 AC_PATH_PROG(PO4A,po4a)
192
193 dnl Check for graphviz
194 AC_CHECK_PROG([HAVE_DOT], [dot], [YES], [NO])
195 AC_PATH_PROG([DOT], [dot], [])
196 DOTDIR=$(dirname $DOT)
197 AC_SUBST(DOTDIR)
198
199 ah_NUM_PROCS
200 ah_GCC3DEP
201
202 AM_GNU_GETTEXT(external)
203 if test x"$USE_NLS" = "xyes"; then
204 AC_DEFINE(USE_NLS)
205 fi
206 AC_SUBST(USE_NLS)
207 AC_PATH_PROG(BASH, bash)
208
209 AC_OUTPUT(environment.mak:buildlib/environment.mak.in makefile:buildlib/makefile.in doc/Doxyfile:doc/Doxyfile.in,make -s dirs)