blob: a17e155866d1353cb2c78cec871e1c9fe13a94ad [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" ;;
Andrey Zonove6f86b22012-08-05 00:11:46 +040015 *) AC_MSG_ERROR([unkown host-os ${host_os}]) ;;
Marc Kleine-Budde584929c2010-02-03 20:24:13 +010016esac
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 Machatacdd17b82012-06-01 19:35:24 +020085# HAVE_LIBSTDC__
86AC_CHECK_LIB([stdc++], [__cxa_demangle], [
87 AC_DEFINE([HAVE_LIBSTDC__], [1], [we have libstdc++])
88 libstdcxx_LIBS="-lstdc++"], [
89 libstdcxx_LIBS=""])
90AC_SUBST(libstdcxx_LIBS)
91
92
Petr Machatacec06ec2012-04-10 13:31:55 +020093dnl Check security_get_boolean_active availability.
94AC_CHECK_HEADERS(selinux/selinux.h)
95AC_CHECK_LIB(selinux, security_get_boolean_active)
96
97
Joe Damatoab3b72c2010-10-31 00:21:53 -070098# HAVE_LIBUNWIND
99AC_ARG_WITH(libunwind,
Zachary T Welchbc7a4a92010-11-05 15:03:04 -0700100 AS_HELP_STRING([--with-libunwind], [Use libunwind frame unwinding support]),
101 [case "${withval}" in
102 (yes|no) enable_libunwind=$withval;;
103 (*) enable_libunwind=yes
Zachary T Welchd0fafff2010-12-08 18:55:13 -0800104 AM_CPPFLAGS="${AM_CPPFLAGS} -I${withval}/include"
105 AM_LDFLAGS="${AM_LDFLAGS} -L${withval}/lib"
Zachary T Welch68621db2010-12-16 15:18:23 -0800106 libunwind_LD_LIBRARY_PATH="${withval}/lib"
Zachary T Welchbc7a4a92010-11-05 15:03:04 -0700107 ;;
108esac],[enable_libunwind=maybe])
109
Zachary T Welchd0fafff2010-12-08 18:55:13 -0800110saved_CPPFLAGS="${CPPFLAGS}"
111CPPFLAGS="${CPPFLAGS} ${AM_CPPFLAGS}"
Zachary T Welchbc7a4a92010-11-05 15:03:04 -0700112AC_CHECK_HEADERS([libunwind.h], [have_libunwind_h=yes])
113AC_CHECK_HEADERS([libunwind-ptrace.h], [have_libunwind_ptrace_h=yes])
Zachary T Welchd0fafff2010-12-08 18:55:13 -0800114CPPFLAGS="${saved_CPPFLAGS}"
Zachary T Welchbc7a4a92010-11-05 15:03:04 -0700115
116AC_MSG_CHECKING([whether to use libunwind support])
117case "${enable_libunwind}" in
118(yes|maybe)
119 if test x$have_libunwind_h = xyes -o x$have_libunwind_ptrace_h = xyes; then
120 enable_libunwind=yes
121 elif test $enable_libunwind = maybe; then
122 enable_libunwind=no
123 else
124 AC_MSG_RESULT([$enable_libunwind])
125 AC_MSG_ERROR([libunwind.h or libunwind-ptrace.h cannot be found])
Joe Damatoab3b72c2010-10-31 00:21:53 -0700126 fi
Zachary T Welchbc7a4a92010-11-05 15:03:04 -0700127 ;;
128(*) ;;
129esac
130AC_MSG_RESULT([$enable_libunwind])
Joe Damatoab3b72c2010-10-31 00:21:53 -0700131
132if test x"$enable_libunwind" = xyes; then
Zachary T Welchd0fafff2010-12-08 18:55:13 -0800133 saved_LDFLAGS="${LDFLAGS}"
134 LDFLAGS="${LDFLAGS} ${AM_LDFLAGS}"
Joe Damatoab3b72c2010-10-31 00:21:53 -0700135 AC_CHECK_LIB(unwind, backtrace, libunwind_LIBS=-lunwind, libunwind_LIBS=)
136 AC_SUBST(libunwind_LIBS)
137 AC_CHECK_LIB(unwind-ptrace, _UPT_create, libunwind_ptrace_LIBS=-lunwind-ptrace, libunwind_ptrace_LIBS=)
138 AC_SUBST(libunwind_ptrace_LIBS)
Joe Damatoafb44342010-11-07 15:33:36 -0800139
140 case "${host_cpu}" in
141 arm*|sa110) UNWIND_ARCH="arm" ;;
142 i?86) UNWIND_ARCH="x86" ;;
143 powerpc) UNWIND_ARCH="ppc32" ;;
144 ppc64) UNWIND_ARCH="ppc64" ;;
145 mips*) UNWIND_ARCH="mips" ;;
146 *) UNWIND_ARCH="${host_cpu}" ;;
147 esac
148
149 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 -0700150 AC_SUBST(libunwind_arch_LIBS)
151 AC_DEFINE([HAVE_LIBUNWIND], [1], [we have libunwind])
Zachary T Welchd0fafff2010-12-08 18:55:13 -0800152 LDFLAGS="${saved_LDFLAGS}"
Joe Damatoab3b72c2010-10-31 00:21:53 -0700153fi
154
155
Zachary T Welch61886142010-12-10 14:52:33 -0800156saved_CPPFLAGS="${CPPFLAGS}"
157saved_LDFLAGS="${LDFLAGS}"
158CPPFLAGS="${CPPFLAGS} ${AM_CPPFLAGS}"
159LDFLAGS="${LDFLAGS} ${AM_LDFLAGS}"
Marc Kleine-Budde584929c2010-02-03 20:24:13 +0100160# HAVE_ELF_C_READ_MMAP
161AC_MSG_CHECKING([whether elf_begin accepts ELF_C_READ_MMAP])
162AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <gelf.h>]], [[
163int main () {
164 Elf *elf = elf_begin(4, ELF_C_READ_MMAP, 0);
165 return 0;
166}
167 ]])],[
168 AC_DEFINE([HAVE_ELF_C_READ_MMAP], [1], [we have read mmap support])
169 AC_MSG_RESULT([yes])],[
170 AC_MSG_RESULT([no])])
171
Zachary T Welch0a43b322010-12-08 18:55:10 -0800172saved_CFLAGS="${CFLAGS}"
173CFLAGS="${CFLAGS} -Wall -Werror"
Petr Machata144a9382012-02-07 01:52:56 +0100174AC_MSG_CHECKING([whether elf_hash takes a char* argument])
Zachary T Welch0a43b322010-12-08 18:55:10 -0800175AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <libelf.h>]], [[
176 (void) elf_hash("name");
177 ]])],
Petr Machata144a9382012-02-07 01:52:56 +0100178 [AC_DEFINE([ELF_HASH_TAKES_CHARP], [1],
179 [elf_hash() takes char* (as opposed to unsigned char *)])
Zachary T Welch0a43b322010-12-08 18:55:10 -0800180 AC_MSG_RESULT([yes])],
181 [AC_MSG_RESULT([no])])
182CFLAGS="${saved_CFLAGS}"
Zachary T Welch61886142010-12-10 14:52:33 -0800183CPPFLAGS="${saved_CPPFLAGS}"
184LDFLAGS="${saved_LDFLAGS}"
Marc Kleine-Budde584929c2010-02-03 20:24:13 +0100185
Zachary T Welchd0fafff2010-12-08 18:55:13 -0800186AM_CPPFLAGS=" \
187 ${AM_CPPFLAGS} \
Marc Kleine-Budde584929c2010-02-03 20:24:13 +0100188 -I\$(top_srcdir)/sysdeps/${HOST_OS}/${HOST_CPU} \
189 -I\$(top_srcdir)/sysdeps/${HOST_OS} \
190 -I\$(top_srcdir)/sysdeps \
191 -I\$(top_srcdir) \
192"
193
Marc Kleine-Budde584929c2010-02-03 20:24:13 +0100194# Checks for header files.
195AC_CHECK_HEADERS([ \
196 fcntl.h \
197 limits.h \
198 stddef.h \
199 stdint.h \
200 stdlib.h \
201 string.h \
202 sys/ioctl.h \
203 sys/param.h \
204 sys/time.h \
205 unistd.h \
206])
207
208# Checks for typedefs, structures, and compiler characteristics.
209AC_TYPE_UID_T
210AC_C_INLINE
211AC_TYPE_PID_T
212AC_TYPE_SIZE_T
213AC_CHECK_SIZEOF([long])
214
215
216# Checks for library functions.
217AC_FUNC_ERROR_AT_LINE
218AC_FUNC_FORK
219AC_CHECK_FUNCS([ \
220 alarm \
221 atexit \
222 getcwd \
223 gettimeofday \
224 memset \
225 mkdir \
226 rmdir \
227 strchr \
228 strdup \
229 strerror \
230 strtol \
231 strtoul \
232])
233
234
235#
236# Debugging
237#
238AC_MSG_CHECKING([whether to enable debugging])
239AC_ARG_ENABLE(debug,
240 AS_HELP_STRING([--enable-debug], [enable debugging @<:@default=no@:>@]),
241 [case "$enableval" in
242 y | yes) CONFIG_DEBUG=yes ;;
243 *) CONFIG_DEBUG=no ;;
244 esac],
245 [CONFIG_DEBUG=no])
246AC_MSG_RESULT([${CONFIG_DEBUG}])
247if test "${CONFIG_DEBUG}" = "yes"; then
Marc Kleine-Budde584929c2010-02-03 20:24:13 +0100248 AC_DEFINE(DEBUG, 1, [debugging])
Marc Kleine-Budde584929c2010-02-03 20:24:13 +0100249fi
250
Zachary T Welchfe6c8052010-12-08 18:55:11 -0800251# Ignore the compiler's warnings at your own risk.
252AM_CFLAGS="${AM_CFLAGS} -Wall -Wsign-compare -Wfloat-equal -Wformat-security"
253AC_ARG_ENABLE([werror],
254 AS_HELP_STRING([--disable-werror], [disable use of -Werror]),
255 [enable_werror=$enableval], [enable_werror=yes])
256if test x$enable_werror = xyes; then
257 AM_CFLAGS="${AM_CFLAGS} -Werror"
258fi
259
Zachary T Welchd0fafff2010-12-08 18:55:13 -0800260AC_SUBST(AM_CPPFLAGS)
Zachary T Welchfe6c8052010-12-08 18:55:11 -0800261AC_SUBST(AM_CFLAGS)
Zachary T Welchd0fafff2010-12-08 18:55:13 -0800262AC_SUBST(AM_LDFLAGS)
Zachary T Welch68621db2010-12-16 15:18:23 -0800263AC_SUBST(libelf_LD_LIBRARY_PATH)
264AC_SUBST(libunwind_LD_LIBRARY_PATH)
Marc Kleine-Budde584929c2010-02-03 20:24:13 +0100265
266AC_CONFIG_FILES([
267 Makefile
268 sysdeps/Makefile
269 sysdeps/linux-gnu/Makefile
270 sysdeps/linux-gnu/alpha/Makefile
271 sysdeps/linux-gnu/arm/Makefile
272 sysdeps/linux-gnu/i386/Makefile
273 sysdeps/linux-gnu/ia64/Makefile
274 sysdeps/linux-gnu/m68k/Makefile
275 sysdeps/linux-gnu/mipsel/Makefile
276 sysdeps/linux-gnu/ppc/Makefile
277 sysdeps/linux-gnu/s390/Makefile
278 sysdeps/linux-gnu/sparc/Makefile
279 sysdeps/linux-gnu/x86_64/Makefile
Zachary T Welch3a9d1e72010-11-05 15:03:00 -0700280 testsuite/Makefile
281 testsuite/ltrace.main/Makefile
282 testsuite/ltrace.minor/Makefile
283 testsuite/ltrace.torture/Makefile
Marc Kleine-Budde584929c2010-02-03 20:24:13 +0100284])
285AC_OUTPUT