blob: 707f8c5e431cb2258d7b4be91156103daf47966c [file] [log] [blame]
Marc Kleine-Budde584929c2010-02-03 20:24:13 +01001# -*- Autoconf -*-
2# Process this file with autoconf to produce a configure script.
Michael K. Edwards2f132012011-03-06 20:41:50 +00003AC_PREREQ(2.65)
Marc Kleine-Budde584929c2010-02-03 20:24:13 +01004
Joe Damato5f30bc32011-01-06 11:53:13 -08005AC_INIT([ltrace],[0.6.0],[ltrace-devel@lists.alioth.debian.org])
Marc Kleine-Budde584929c2010-02-03 20:24:13 +01006AC_CONFIG_HEADERS([config.h])
7AC_CONFIG_SRCDIR(libltrace.c)
Michael K. Edwards090f7d32011-03-06 17:23:07 +00008AC_CONFIG_MACRO_DIR([config/m4])
Marc Kleine-Budde584929c2010-02-03 20:24:13 +01009AC_CONFIG_AUX_DIR([config/autoconf])
10AC_CANONICAL_BUILD
11AC_CANONICAL_HOST
12
13case "${host_os}" in
14 linux-gnu*) HOST_OS="linux-gnu" ;;
15 *) AC_MSG_ERROR([unkown host-os ${host_osx}]) ;;
16esac
17AC_SUBST(HOST_OS)
18
19case "${host_cpu}" in
20 arm*|sa110) HOST_CPU="arm" ;;
21 i?86) HOST_CPU="i386" ;;
Petr Machata19062482010-11-01 16:06:12 +010022 powerpc|powerpc64) HOST_CPU="ppc" ;;
Marc Kleine-Budde584929c2010-02-03 20:24:13 +010023 sun4u|sparc64) HOST_CPU="sparc" ;;
24 s390x) HOST_CPU="s390" ;;
25 *) HOST_CPU="${host_cpu}" ;;
26esac
27AC_SUBST(HOST_CPU)
28
29# Checks for programs.
30AC_PROG_CC
Michael K. Edwards2f132012011-03-06 20:41:50 +000031LT_INIT
Marc Kleine-Budde7cae4e02010-02-04 18:55:22 +010032# libtool-2: LT_INIT()
Marc Kleine-Budde584929c2010-02-03 20:24:13 +010033AM_INIT_AUTOMAKE([foreign no-exeext dist-bzip2])
Zachary T Welchd9152892010-11-05 15:02:57 -070034AM_MAINTAINER_MODE
Marc Kleine-Budde584929c2010-02-03 20:24:13 +010035
Zachary T Welch61886142010-12-10 14:52:33 -080036AC_ARG_WITH([libelf],
37 AS_HELP_STRING([--with-libelf], [Prefix of libelf headers/library]),
38 [case "${withval}" in
39 (no)
40 AC_MSG_ERROR([*** libelf is a required dependency])
41 ;;
42 (yes)
43 AC_MSG_ERROR([*** --with-libelf requires you to specify a path])
44 ;;
45 (*)
46 AM_CPPFLAGS="${AM_CPPFLAGS} -I${withval}/include"
47 AM_LDFLAGS="${AM_LDFLAGS} -L${withval}/lib"
Zachary T Welch68621db2010-12-16 15:18:23 -080048 libelf_LD_LIBRARY_PATH="${withval}/lib"
Zachary T Welch61886142010-12-10 14:52:33 -080049 ;;
50esac],[])
51
Marc Kleine-Budde584929c2010-02-03 20:24:13 +010052# Checks for libraries.
53
Zachary T Welch61886142010-12-10 14:52:33 -080054saved_CPPFLAGS="${CPPFLAGS}"
55saved_LDFLAGS="${LDFLAGS}"
56CPPFLAGS="${CPPFLAGS} ${AM_CPPFLAGS}"
57LDFLAGS="${LDFLAGS} ${AM_LDFLAGS}"
Marc Kleine-Budde584929c2010-02-03 20:24:13 +010058# libelf
Petr Machata8c4aa1f2010-11-03 12:16:44 +010059AC_CHECK_HEADERS([elf.h gelf.h],,
60 [AC_MSG_ERROR([*** libelf.h or gelf.h not found on your system])]
Marc Kleine-Budde584929c2010-02-03 20:24:13 +010061)
Petr Machata8c4aa1f2010-11-03 12:16:44 +010062AC_CHECK_LIB([elf], [elf_begin],,
63 [AC_MSG_ERROR([*** libelf not found on your system])]
64)
Zachary T Welch61886142010-12-10 14:52:33 -080065CPPFLAGS="${saved_CPPFLAGS}"
66LDFLAGS="${saved_LDFLAGS}"
Marc Kleine-Budde584929c2010-02-03 20:24:13 +010067
68
69# HAVE_LIBIBERTY
70AC_CHECK_LIB([iberty], [cplus_demangle], [
71 AC_DEFINE([HAVE_LIBIBERTY], [1], [we have libiberty])
72 liberty_LIBS="-liberty"], [
73 liberty_LIBS=""])
74AC_SUBST(liberty_LIBS)
75
76
77# HAVE_LIBSUPC__
78AC_CHECK_LIB([supc++], [__cxa_demangle], [
79 AC_DEFINE([HAVE_LIBSUPC__], [1], [we have libsupc++])
80 libsupcxx_LIBS="-lsupc++"], [
81 libsupcxx_LIBS=""])
82AC_SUBST(libsupcxx_LIBS)
83
84
Petr Machatacec06ec2012-04-10 13:31:55 +020085dnl Check security_get_boolean_active availability.
86AC_CHECK_HEADERS(selinux/selinux.h)
87AC_CHECK_LIB(selinux, security_get_boolean_active)
88
89
Joe Damatoab3b72c2010-10-31 00:21:53 -070090# HAVE_LIBUNWIND
91AC_ARG_WITH(libunwind,
Zachary T Welchbc7a4a92010-11-05 15:03:04 -070092 AS_HELP_STRING([--with-libunwind], [Use libunwind frame unwinding support]),
93 [case "${withval}" in
94 (yes|no) enable_libunwind=$withval;;
95 (*) enable_libunwind=yes
Zachary T Welchd0fafff2010-12-08 18:55:13 -080096 AM_CPPFLAGS="${AM_CPPFLAGS} -I${withval}/include"
97 AM_LDFLAGS="${AM_LDFLAGS} -L${withval}/lib"
Zachary T Welch68621db2010-12-16 15:18:23 -080098 libunwind_LD_LIBRARY_PATH="${withval}/lib"
Zachary T Welchbc7a4a92010-11-05 15:03:04 -070099 ;;
100esac],[enable_libunwind=maybe])
101
Zachary T Welchd0fafff2010-12-08 18:55:13 -0800102saved_CPPFLAGS="${CPPFLAGS}"
103CPPFLAGS="${CPPFLAGS} ${AM_CPPFLAGS}"
Zachary T Welchbc7a4a92010-11-05 15:03:04 -0700104AC_CHECK_HEADERS([libunwind.h], [have_libunwind_h=yes])
105AC_CHECK_HEADERS([libunwind-ptrace.h], [have_libunwind_ptrace_h=yes])
Zachary T Welchd0fafff2010-12-08 18:55:13 -0800106CPPFLAGS="${saved_CPPFLAGS}"
Zachary T Welchbc7a4a92010-11-05 15:03:04 -0700107
108AC_MSG_CHECKING([whether to use libunwind support])
109case "${enable_libunwind}" in
110(yes|maybe)
111 if test x$have_libunwind_h = xyes -o x$have_libunwind_ptrace_h = xyes; then
112 enable_libunwind=yes
113 elif test $enable_libunwind = maybe; then
114 enable_libunwind=no
115 else
116 AC_MSG_RESULT([$enable_libunwind])
117 AC_MSG_ERROR([libunwind.h or libunwind-ptrace.h cannot be found])
Joe Damatoab3b72c2010-10-31 00:21:53 -0700118 fi
Zachary T Welchbc7a4a92010-11-05 15:03:04 -0700119 ;;
120(*) ;;
121esac
122AC_MSG_RESULT([$enable_libunwind])
Joe Damatoab3b72c2010-10-31 00:21:53 -0700123
124if test x"$enable_libunwind" = xyes; then
Zachary T Welchd0fafff2010-12-08 18:55:13 -0800125 saved_LDFLAGS="${LDFLAGS}"
126 LDFLAGS="${LDFLAGS} ${AM_LDFLAGS}"
Joe Damatoab3b72c2010-10-31 00:21:53 -0700127 AC_CHECK_LIB(unwind, backtrace, libunwind_LIBS=-lunwind, libunwind_LIBS=)
128 AC_SUBST(libunwind_LIBS)
129 AC_CHECK_LIB(unwind-ptrace, _UPT_create, libunwind_ptrace_LIBS=-lunwind-ptrace, libunwind_ptrace_LIBS=)
130 AC_SUBST(libunwind_ptrace_LIBS)
Joe Damatoafb44342010-11-07 15:33:36 -0800131
132 case "${host_cpu}" in
133 arm*|sa110) UNWIND_ARCH="arm" ;;
134 i?86) UNWIND_ARCH="x86" ;;
135 powerpc) UNWIND_ARCH="ppc32" ;;
136 ppc64) UNWIND_ARCH="ppc64" ;;
137 mips*) UNWIND_ARCH="mips" ;;
138 *) UNWIND_ARCH="${host_cpu}" ;;
139 esac
140
141 AC_CHECK_LIB(unwind-${UNWIND_ARCH}, _U${UNWIND_ARCH}_init_remote, libunwind_arch_LIBS=-lunwind-${UNWIND_ARCH}, libunwind_arch_LIBS=)
Joe Damatoab3b72c2010-10-31 00:21:53 -0700142 AC_SUBST(libunwind_arch_LIBS)
143 AC_DEFINE([HAVE_LIBUNWIND], [1], [we have libunwind])
Zachary T Welchd0fafff2010-12-08 18:55:13 -0800144 LDFLAGS="${saved_LDFLAGS}"
Joe Damatoab3b72c2010-10-31 00:21:53 -0700145fi
146
147
Zachary T Welch61886142010-12-10 14:52:33 -0800148saved_CPPFLAGS="${CPPFLAGS}"
149saved_LDFLAGS="${LDFLAGS}"
150CPPFLAGS="${CPPFLAGS} ${AM_CPPFLAGS}"
151LDFLAGS="${LDFLAGS} ${AM_LDFLAGS}"
Marc Kleine-Budde584929c2010-02-03 20:24:13 +0100152# HAVE_ELF_C_READ_MMAP
153AC_MSG_CHECKING([whether elf_begin accepts ELF_C_READ_MMAP])
154AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <gelf.h>]], [[
155int main () {
156 Elf *elf = elf_begin(4, ELF_C_READ_MMAP, 0);
157 return 0;
158}
159 ]])],[
160 AC_DEFINE([HAVE_ELF_C_READ_MMAP], [1], [we have read mmap support])
161 AC_MSG_RESULT([yes])],[
162 AC_MSG_RESULT([no])])
163
Zachary T Welch0a43b322010-12-08 18:55:10 -0800164saved_CFLAGS="${CFLAGS}"
165CFLAGS="${CFLAGS} -Wall -Werror"
Petr Machata144a9382012-02-07 01:52:56 +0100166AC_MSG_CHECKING([whether elf_hash takes a char* argument])
Zachary T Welch0a43b322010-12-08 18:55:10 -0800167AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <libelf.h>]], [[
168 (void) elf_hash("name");
169 ]])],
Petr Machata144a9382012-02-07 01:52:56 +0100170 [AC_DEFINE([ELF_HASH_TAKES_CHARP], [1],
171 [elf_hash() takes char* (as opposed to unsigned char *)])
Zachary T Welch0a43b322010-12-08 18:55:10 -0800172 AC_MSG_RESULT([yes])],
173 [AC_MSG_RESULT([no])])
174CFLAGS="${saved_CFLAGS}"
Zachary T Welch61886142010-12-10 14:52:33 -0800175CPPFLAGS="${saved_CPPFLAGS}"
176LDFLAGS="${saved_LDFLAGS}"
Marc Kleine-Budde584929c2010-02-03 20:24:13 +0100177
Zachary T Welchd0fafff2010-12-08 18:55:13 -0800178AM_CPPFLAGS=" \
179 ${AM_CPPFLAGS} \
Marc Kleine-Budde584929c2010-02-03 20:24:13 +0100180 -I\$(top_srcdir)/sysdeps/${HOST_OS}/${HOST_CPU} \
181 -I\$(top_srcdir)/sysdeps/${HOST_OS} \
182 -I\$(top_srcdir)/sysdeps \
183 -I\$(top_srcdir) \
184"
185
Marc Kleine-Budde584929c2010-02-03 20:24:13 +0100186# Checks for header files.
187AC_CHECK_HEADERS([ \
188 fcntl.h \
189 limits.h \
190 stddef.h \
191 stdint.h \
192 stdlib.h \
193 string.h \
194 sys/ioctl.h \
195 sys/param.h \
196 sys/time.h \
197 unistd.h \
198])
199
200# Checks for typedefs, structures, and compiler characteristics.
201AC_TYPE_UID_T
202AC_C_INLINE
203AC_TYPE_PID_T
204AC_TYPE_SIZE_T
205AC_CHECK_SIZEOF([long])
206
207
208# Checks for library functions.
209AC_FUNC_ERROR_AT_LINE
210AC_FUNC_FORK
211AC_CHECK_FUNCS([ \
212 alarm \
213 atexit \
214 getcwd \
215 gettimeofday \
216 memset \
217 mkdir \
218 rmdir \
219 strchr \
220 strdup \
221 strerror \
222 strtol \
223 strtoul \
224])
225
226
227#
228# Debugging
229#
230AC_MSG_CHECKING([whether to enable debugging])
231AC_ARG_ENABLE(debug,
232 AS_HELP_STRING([--enable-debug], [enable debugging @<:@default=no@:>@]),
233 [case "$enableval" in
234 y | yes) CONFIG_DEBUG=yes ;;
235 *) CONFIG_DEBUG=no ;;
236 esac],
237 [CONFIG_DEBUG=no])
238AC_MSG_RESULT([${CONFIG_DEBUG}])
239if test "${CONFIG_DEBUG}" = "yes"; then
Marc Kleine-Budde584929c2010-02-03 20:24:13 +0100240 AC_DEFINE(DEBUG, 1, [debugging])
Marc Kleine-Budde584929c2010-02-03 20:24:13 +0100241fi
242
Zachary T Welchfe6c8052010-12-08 18:55:11 -0800243# Ignore the compiler's warnings at your own risk.
244AM_CFLAGS="${AM_CFLAGS} -Wall -Wsign-compare -Wfloat-equal -Wformat-security"
245AC_ARG_ENABLE([werror],
246 AS_HELP_STRING([--disable-werror], [disable use of -Werror]),
247 [enable_werror=$enableval], [enable_werror=yes])
248if test x$enable_werror = xyes; then
249 AM_CFLAGS="${AM_CFLAGS} -Werror"
250fi
251
Zachary T Welchd0fafff2010-12-08 18:55:13 -0800252AC_SUBST(AM_CPPFLAGS)
Zachary T Welchfe6c8052010-12-08 18:55:11 -0800253AC_SUBST(AM_CFLAGS)
Zachary T Welchd0fafff2010-12-08 18:55:13 -0800254AC_SUBST(AM_LDFLAGS)
Zachary T Welch68621db2010-12-16 15:18:23 -0800255AC_SUBST(libelf_LD_LIBRARY_PATH)
256AC_SUBST(libunwind_LD_LIBRARY_PATH)
Marc Kleine-Budde584929c2010-02-03 20:24:13 +0100257
258AC_CONFIG_FILES([
259 Makefile
260 sysdeps/Makefile
261 sysdeps/linux-gnu/Makefile
262 sysdeps/linux-gnu/alpha/Makefile
263 sysdeps/linux-gnu/arm/Makefile
264 sysdeps/linux-gnu/i386/Makefile
265 sysdeps/linux-gnu/ia64/Makefile
266 sysdeps/linux-gnu/m68k/Makefile
267 sysdeps/linux-gnu/mipsel/Makefile
268 sysdeps/linux-gnu/ppc/Makefile
269 sysdeps/linux-gnu/s390/Makefile
270 sysdeps/linux-gnu/sparc/Makefile
271 sysdeps/linux-gnu/x86_64/Makefile
Zachary T Welch3a9d1e72010-11-05 15:03:00 -0700272 testsuite/Makefile
273 testsuite/ltrace.main/Makefile
274 testsuite/ltrace.minor/Makefile
275 testsuite/ltrace.torture/Makefile
Marc Kleine-Budde584929c2010-02-03 20:24:13 +0100276])
277AC_OUTPUT