]> git.saurik.com Git - apt.git/blob - configure.ac
edsp: use a stanza based interface for solution writing
[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.68])
16 AC_INIT
17 AC_CONFIG_SRCDIR([configure.ac])
18 AC_CONFIG_AUX_DIR(buildlib)
19 AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
20
21 PACKAGE="apt"
22 PACKAGE_VERSION="1.3~exp1"
23 PACKAGE_MAIL="APT Development Team <deity@lists.debian.org>"
24 AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
25 AC_DEFINE_UNQUOTED(PACKAGE_VERSION,"$PACKAGE_VERSION")
26 AC_DEFINE_UNQUOTED(PACKAGE_MAIL,"$PACKAGE_MAIL")
27 AC_SUBST(PACKAGE)
28 AC_SUBST(PACKAGE_VERSION)
29 AC_SUBST(PACKAGE_MAIL)
30
31 dnl Check the archs, we want the target type.
32 AC_CANONICAL_TARGET
33
34 dnl Check our C compiler
35
36 AC_PROG_CC
37 AC_SEARCH_LIBS([strerror],[cposix])
38
39 dnl check for large file support and enable it if possible
40 dnl do this early as other stuff might depend on it
41 AC_SYS_LARGEFILE
42
43 dnl Check for other programs
44 AC_PROG_CXX
45 AC_PROG_CPP
46 AC_PROG_RANLIB
47 AC_CHECK_TOOL(AR,ar,"ar")
48
49 dnl Checks for sockets
50 SAVE_LIBS="$LIBS"
51 LIBS=""
52 AC_SEARCH_LIBS(gethostbyname,nsl)
53 AC_SEARCH_LIBS(connect,socket)
54 SOCKETLIBS="$LIBS"
55 AC_SUBST(SOCKETLIBS)
56 LIBS="$SAVE_LIBS"
57
58 dnl Checks for pthread -- disabled due to glibc bugs jgg
59 dnl AC_CHECK_LIB(pthread, pthread_create,[AC_DEFINE(HAVE_PTHREAD) PTHREADLIB="-lpthread"])
60 AC_SUBST(PTHREADLIB)
61 dnl if test "$PTHREADLIB" != "-lpthread"; then
62 dnl AC_MSG_ERROR(failed: I need posix threads, pthread)
63 dnl fi
64
65 dnl Check for BDB
66 saveLIBS="$LIBS"
67 LIBS="$LIBS -ldb"
68
69 AC_CHECK_HEADER(db.h,
70 [AC_MSG_CHECKING(if we can link against BerkeleyDB)
71 AC_LINK_IFELSE(
72 [AC_LANG_PROGRAM(
73 [#include <db.h>],
74 [int r, s, t; db_version(&r, &s, &t);]
75 )],
76 [AC_DEFINE(HAVE_BDB)
77 BDBLIB="-ldb"
78 AC_MSG_RESULT(yes)],
79 [BDBLIB=""
80 AC_MSG_RESULT(no)]
81 )]
82 )
83
84 LIBS="$saveLIBS"
85
86 AC_CHECK_LIB(curl, curl_easy_init,
87 [AC_CHECK_HEADER(curl/curl.h,
88 curl_ok=yes,
89 curl_ok=no)],
90 AC_MSG_ERROR([failed: I need CURL due https support]),
91 )
92
93 AC_LANG_PUSH([C++])
94 AC_CHECK_HEADER(gtest/gtest.h,,
95 AC_MSG_WARN([failed: I need gtest (packaged as libgtest-dev) for unit testing]),
96 )
97 AC_LANG_POP([C++])
98
99
100 AC_SUBST(BDBLIB)
101
102 HAVE_ZLIB=no
103 AC_CHECK_LIB(z, gzopen,
104 [AC_CHECK_HEADER(zlib.h, [HAVE_ZLIB=yes], AC_MSG_ERROR([failed: zlib.h not found]))],
105 AC_MSG_ERROR([failed: Need libz]))
106 AC_SUBST(HAVE_ZLIB)
107 if test "x$HAVE_ZLIB" = "xyes"; then
108 AC_DEFINE(HAVE_ZLIB)
109 fi
110
111 HAVE_LZ4=no
112 AC_CHECK_LIB(lz4, LZ4F_createCompressionContext,[AC_CHECK_HEADER(lz4frame.h, [HAVE_LZ4=yes], [])], [])
113 AC_SUBST(HAVE_LZ4)
114 if test "x$HAVE_LZ4" = "xyes"; then
115 AC_DEFINE(HAVE_LZ4)
116 fi
117
118 HAVE_BZ2=no
119 AC_CHECK_LIB(bz2, BZ2_bzopen,[AC_CHECK_HEADER(bzlib.h, [HAVE_BZ2=yes], [])], [])
120 AC_SUBST(HAVE_BZ2)
121 if test "x$HAVE_BZ2" = "xyes"; then
122 AC_DEFINE(HAVE_BZ2)
123 fi
124
125 HAVE_LZMA=no
126 AC_CHECK_LIB(lzma, lzma_easy_encoder,[AC_CHECK_HEADER(lzma.h, [HAVE_LZMA=yes], [])], [])
127 AC_SUBST(HAVE_LZMA)
128 if test "x$HAVE_LZMA" = "xyes"; then
129 AC_DEFINE(HAVE_LZMA)
130 fi
131
132 dnl Converts the ARCH to be something singular for this general CPU family
133 dnl This is often the dpkg architecture string.
134 dnl First check against the full canonical canoncial-system-type in $target
135 dnl and if that fails, just look for the cpu
136 AC_MSG_CHECKING(debian architecture)
137 archset="`dpkg-architecture -qDEB_HOST_ARCH`"
138 if test "x$archset" = "x"; then
139 AC_MSG_ERROR([failed: use --host= or output from dpkg-architecture])
140 fi
141 AC_MSG_RESULT($archset)
142 AC_DEFINE_UNQUOTED(COMMON_ARCH,"$archset")
143
144 dnl Single Unix Spec statvfs
145 AC_CHECK_FUNC(statvfs,[HAVE_STATVFS=yes])
146 AC_SUBST(HAVE_STATVFS)
147
148 dnl Arg, linux and bsd put their statfs function in different places
149 if test x"$HAVE_STATVFS" != x"yes"; then
150 AC_EGREP_HEADER(statfs,sys/vfs.h,[AC_DEFINE(HAVE_VFS_H)],[
151 AC_EGREP_HEADER(statfs,sys/mount.h,[AC_DEFINE(HAVE_MOUNT_H)],[AC_MSG_ERROR(failed: Need statvfs)])
152 ])
153 fi
154
155 AC_CHECK_MEMBERS([struct statfs.f_type],,,
156 [$ac_includes_default
157 #include <sys/vfs.h>])
158
159 dnl We should use the real timegm function if we have it.
160 AC_CHECK_FUNC(timegm,AC_DEFINE(HAVE_TIMEGM))
161 AC_SUBST(HAVE_TIMEGM)
162
163 dnl Check the architecture
164 AC_C_BIGENDIAN
165
166 dnl HP-UX sux..
167 AC_MSG_CHECKING(for missing socklen_t)
168 AC_EGREP_HEADER(socklen_t, sys/socket.h,[AC_MSG_RESULT(no)],[
169 AC_DEFINE(NEED_SOCKLEN_T_DEFINE)
170 NEED_SOCKLEN_T_DEFINE=yes
171 AC_MSG_RESULT(missing.)])
172 AC_SUBST(NEED_SOCKLEN_T_DEFINE)
173
174 dnl HP-UX needs -d_XOPEN_SOURCE_EXTENDED for h_errno
175 AC_MSG_CHECKING(for h_errno)
176 AC_EGREP_HEADER(h_errno, netdb.h, [AC_MSG_RESULT(normal)],
177 [CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
178 AC_EGREP_HEADER(h_errno, netdb.h,
179 [AC_MSG_RESULT(needs _XOPEN_SOURCE_EXTENDED)],
180 [AC_MSG_ERROR("not found.")])
181 ])
182
183
184 dnl check for setuid checking function
185 AC_CHECK_FUNCS(getresuid getresgid setresuid setresgid)
186 AC_SUBST(HAVE_GETRESUID)
187 AC_SUBST(HAVE_GETRESGID)
188 AC_SUBST(HAVE_SETRESUID)
189 AC_SUBST(HAVE_SETRESGID)
190
191 AC_CHECK_FUNC(ptsname_r)
192 AC_SUBST(HAVE_PTSNAME_R)
193
194 dnl Check for doxygen
195 AC_PATH_PROG(DOXYGEN, doxygen)
196
197 dnl Check for the XSLTProc tool needed to build man pages together with po4a
198 AC_PATH_PROG(XSLTPROC,xsltproc)
199 AC_PATH_PROG(W3M, w3m)
200
201 dnl Check for the po4a tool needed to build man pages
202 AC_PATH_PROG(PO4A,po4a)
203
204 dnl Check for graphviz
205 AC_CHECK_PROG([HAVE_DOT], [dot], [YES], [NO])
206 AC_PATH_PROG([DOT], [dot], [])
207 DOTDIR=$(dirname $DOT)
208 AC_SUBST(DOTDIR)
209
210 ah_NUM_PROCS
211 ah_GCC3DEP
212
213 AM_GNU_GETTEXT(external)
214 if test x"$USE_NLS" = "xyes"; then
215 AC_DEFINE(USE_NLS)
216 fi
217 AC_SUBST(USE_NLS)
218 AC_PATH_PROG(BASH, bash)
219
220 AC_CONFIG_FILES([environment.mak:buildlib/environment.mak.in makefile:buildlib/makefile.in doc/Doxyfile:doc/Doxyfile.in])
221 AC_OUTPUT