1 dnl == process this file with autoconf to produce a configure script ==
5 AC_INIT([Dyninst], [6.1], [bugs@dyninst.org], [dyninst])
7 AC_PREFIX_DEFAULT(`pwd`/..)
9 AC_CONFIG_AUX_DIR([autodyninst])
10 AC_CONFIG_MACRO_DIR([autodyninst])
13 AC_PATH_PROG(_ICC_, icc)
14 AC_PATH_PROG(_ICPC_, icpc)
15 AC_PATH_PROG(_PGC_, pgcc)
16 AC_PATH_PROG(_PGCXX_, pgCC)
17 AC_PATH_PROG(_CC_, cc)
18 AC_PATH_PROG(_CXX_, CC)
22 dnl === configure options ==
26 AC_ARG_WITH(package-base,
27 [AS_HELP_STRING([--with-package-base],[Base directory to look for packages])],
28 [PACKAGE_BASE="${withval}";
29 TCLTK_INC_DIR="${PACKAGE_BASE}/tcl8.4.5/include";
30 TCLTK_LIB_DIR="${PACKAGE_BASE}/tcl8.4.5/lib";
31 LIBELF_INC_DIR="${PACKAGE_BASE}/libelf/include";
32 LIBELF_LIB_DIR="${PACKAGE_BASE}/libelf/lib";
33 LIBDWARF_INC_DIR="${PACKAGE_BASE}/libdwarf/include";
34 LIBDWARF_LIB_DIR="${PACKAGE_BASE}/libdwarf/lib";
36 LIBXML2_INC_DIR="${PACKAGE_BASE}/libxml2/include/libxml2"
37 LIBXML2_LIB_DIR="${PACKAGE_BASE}/libxml2/lib";
38 LIBUNWIND_INC_DIR="${PACKAGE_BASE}/libunwind/include";
39 LIBUNWIND_LIB_DIR="${PACKAGE_BASE}/libunwind/lib";
40 LIBFLEX_LIB_DIR="${PACKAGE_BASE}/libflex/lib";
42 # We fall back on these defaults if both --with-package-base and
43 # specific --with-<package> arguments are not provided.
44 TCLTK_INC_DIR="/usr/include";
45 TCLTK_LIB_DIR="/usr/lib";
46 LIBELF_INC_DIR="/usr/include";
47 LIBELF_LIB_DIR="/usr/lib";
49 LIBDWARF_INC_DIR="/usr/include";
50 LIBDWARF_LIB_DIR="/usr/lib";
51 LIBXML2_INC_DIR="/usr/include/libxml2"
52 LIBXML2_LIB_DIR="/usr/lib";
53 LIBUNWIND_INC_DIR="/usr/include";
54 LIBUNWIND_LIB_DIR="/usr/lib";
55 LIBFLEX_LIB_DIR="/usr/lib";
57 # 3/15/09: We don't include libiberty in the cs.wisc.edu package-base.
58 # Why? Putting these here for now...
59 #LIBIBERTY_LIB_DIR="/usr/lib";
63 [AS_HELP_STRING([--with-tcl83],[Use Tcl/Tk 8.3])],
64 [TCL_VERSION="tcl8.3"; USE_TCL83="${withval}";],
65 [TCL_VERSION="tcl8.4"; USE_TCL83="false";])
66 AC_ARG_WITH(tcltk-incdir,
67 [AS_HELP_STRING([--with-tcltk-incdir],[TCL/TK include directory])],
68 [TCLTK_INC_DIR="${withval}";],)
69 AC_ARG_WITH(tcltk-libdir,
70 [AS_HELP_STRING([--with-tcltk-libdir],[TCL/TK library directory])],
71 [TCLTK_LIB_DIR="${withval}";],)
72 PD_SOFT_CHECK_INC_DIR($TCLTK_INC_DIR, [tcl.h], [tcl])
73 PD_SOFT_CHECK_LIB_DIR($TCLTK_LIB_DIR, $TCL_VERSION, [Tcl_Eval])
75 AC_SUBST(TCLTK_INC_DIR)
76 AC_SUBST(TCLTK_LIB_DIR)
80 AC_ARG_WITH(wrapper-libs,
81 [AS_HELP_STRING([--with-wrapper-libs],[Comma seperated list of archive to wrap])],
82 [ARG_WRAPPER_LIBS="${withval}";],)
83 AC_SUBST(ARG_WRAPPER_LIBS)
85 AC_ARG_ENABLE(gnu-demangler,
86 [AS_HELP_STRING([--enable-gnu-demangler],[Use g++'s built in demangler])],
87 [GNU_DEMANGLER="true"],)
89 if test "`echo $host_os | cut -b-3`" = "aix" ; then
90 AC_MSG_NOTICE([AIX system, skipping libelf...])
93 AC_ARG_WITH(libelf-incdir,
94 [AS_HELP_STRING([--with-libelf-incdir],[LIBELF include directory])],
95 [LIBELF_INC_DIR="${withval}";],)
96 AC_ARG_WITH(libelf-libdir,
97 [AS_HELP_STRING([--with-libelf-libdir],[LIBELF library directory])],
98 [LIBELF_LIB_DIR="${withval}";],)
100 CXXFLAGS_HOLD=$CXXFLAGS;
101 CXXFLAGS="$CXXFLAGS -I$LIBELF_INC_DIR";
102 CPPFLAGS_HOLD=$CPPFLAGS;
103 CPPFLAGS="$CPPFLAGS -I$LIBELF_INC_DIR";
105 AC_CHECK_HEADER([$LIBELF_INC_DIR/libelf.h], [AC_MSG_NOTICE(ELF include directory: $LIBELF_INC_DIR)],
106 [CXXFLAGS="$CXXFLAGS -I$LIBELF_INC_DIR/libelf";
107 CPPFLAGS="$CPPFLAGS -I$LIBELF_INC_DIR/libelf";
108 AC_CHECK_HEADER([$LIBELF_INC_DIR/libelf/libelf.h],
109 [LIBELF_INC_DIR+="/libelf";AC_MSG_NOTICE(ELF include directory: $LIBELF_INC_DIR)],
110 [AC_ERROR(couldn't find libelf.h)])])
111 CXXFLAGS=$CXXFLAGS_HOLD;
112 CPPFLAGS=$CPPFLAGS_HOLD;
113 PD_CHECK_LIB_DIR($LIBELF_LIB_DIR,[elf],[elf_memory])
114 PD_CHECK_LIB_TYPE($LIBELF_LIB_DIR, elf)
115 LIBELF_STATIC="$LIB_TYPE_STATIC"
116 LIBELF_DYNAMIC="$LIB_TYPE_DYNAMIC"
117 AC_SUBST(LIBELF_INC_DIR)
118 AC_SUBST(LIBELF_LIB_DIR)
119 AC_SUBST(LIBELF_STATIC)
120 AC_SUBST(LIBELF_DYNAMIC)
123 if test "$host_cpu" != "x86_64" -a "$host_cpu" != "i686"; then
124 AC_MSG_NOTICE([Not x86/x86_64, skipping icc on $host_cpu...])
127 [AS_HELP_STRING([--with-icc],[Path to Intel's ICC compiler])],
128 [_ICC_="${withval}"; _ICPC_=`dirname ${withval}`/icpc;],)
133 if test "$host_cpu" != "x86_64" -a "$host_cpu" != "i686"; then
134 AC_MSG_NOTICE([Not x86/x86_64, skipping pgcc on $host_cpu...])
137 [AS_HELP_STRING([--with-pgcc],[Path to Pathscale's PGCC compiler])],
138 [_PGC_="${withval}"; _PGCXX_=`dirname ${withval}`/pgCC;],)
143 if test "`echo $host_os | cut -b-3`" = "aix" ; then
144 if test "`basename $CXX`" = "xlC" ; then
146 elif test "`basename $CC`" = "xlc" ; then
154 if test "x$BUILD_XLC" = "x" ; then
155 AC_ARG_WITH(libiberty-libdir,
156 [AS_HELP_STRING([--with-libiberty-libdir],[LIBIBERTY library directory])],
157 [LIBIBERTY_LIB_DIR="${withval}";],)
159 if test "x$LIBIBERTY_LIB_DIR" != "x" ; then
160 LIBS="-L$LIBIBERTY_LIB_DIR"
162 AC_CHECK_LIB([iberty], [cplus_demangle], [HAVE_LIBIBERTY="true";],[HAVE_LIBIBERTY="false"])
166 CXXFLAGS_BAK=$CXXFLAGS
167 LIBS="$LIBS -liberty"
168 LDFLAGS="$LDFLAGS -shared"
170 AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern "C" { char *cplus_demangle(char *s, int opts); }]],
171 [[cplus_demangle("", 0);]])],
172 [LIBIBERTY_LINK="true"],
173 [LIBIBERTY_LINK="false"])
176 CXXFLAGS=$CXXFLAGS_BAK
178 if test "x$HAVE_LIBIBERTY" = "xtrue" ; then
179 if test "x$LIBIBERTY_LINK" = "xtrue" ; then
182 elif test "x$_PGC_" != "x" ; then
184 echo "WARNING: libiberty does not link with shared objects. Mutatees will have to be linked with -liberty."
192 if test "x$GNU_DEMANGLER" = "xtrue" ; then
198 AC_SUBST(GNU_DEMANGLER)
199 AC_SUBST(USE_LIBERTY)
200 AC_SUBST(LINK_LIBERTY)
201 AC_SUBST(LIBIBERTY_LIB_DIR)
203 if test "`echo $host_os | cut -b-3`" = "aix" ; then
204 AC_MSG_NOTICE([AIX system, skipping libdwarf...])
207 AC_ARG_WITH(libdwarf-incdir,
208 [AS_HELP_STRING([--with-libdwarf-incdir],[LIBDWARF include directory])],
209 [LIBDWARF_INC_DIR="${withval}";],)
210 AC_ARG_WITH(libdwarf-libdir,
211 [AS_HELP_STRING([--with-libdwarf-libdir],[LIBDWARF library directory])],
212 [LIBDWARF_LIB_DIR="${withval}";],)
214 CXXFLAGS_HOLD=$CXXFLAGS;
215 CXXFLAGS="$CXXFLAGS -I$LIBDWARF_INC_DIR";
216 CPPFLAGS_HOLD=$CPPFLAGS;
217 CPPFLAGS="$CPPFLAGS -I$LIBDWARF_INC_DIR";
219 AC_CHECK_HEADER([$LIBDWARF_INC_DIR/libdwarf.h], [AC_MSG_NOTICE(DWARF include directory: $LIBDWARF_INC_DIR)],
220 [CXXFLAGS="$CXXFLAGS -I$LIBDWARF_INC_DIR/libdwarf";
221 CPPFLAGS="$CPPFLAGS -I$LIBDWARF_INC_DIR/libdwarf";
222 AC_CHECK_HEADER([$LIBDWARF_INC_DIR/libdwarf/libdwarf.h],
223 [LIBDWARF_INC_DIR+="/libdwarf";AC_MSG_NOTICE(DWARF include directory: $LIBDWARF_INC_DIR)],
224 [AC_ERROR(couldn't find libdwarf.h)])])
225 CXXFLAGS=$CXXFLAGS_HOLD;
226 CPPFLAGS=$CPPFLAGS_HOLD;
228 PD_CHECK_LIB_DIR($LIBDWARF_LIB_DIR,[dwarf],[dwarf_add_arange],$LIBELF_LIB_DIR,[-lelf])
229 PD_CHECK_LIB_TYPE($LIBDWARF_LIB_DIR, dwarf)
230 LIBDWARF_STATIC="$LIB_TYPE_STATIC"
231 LIBDWARF_DYNAMIC="$LIB_TYPE_DYNAMIC"
232 AC_SUBST(LIBDWARF_INC_DIR)
233 AC_SUBST(LIBDWARF_LIB_DIR)
234 AC_SUBST(LIBDWARF_STATIC)
235 AC_SUBST(LIBDWARF_DYNAMIC)
237 PD_CHECK_LIB_FEATURE($LIBDWARF_LIB_DIR,[dwarf],[dwarf_set_frame_cfa_value],$LIBELF_LIB_DIR,[-lelf])
238 LIBDWARF_HAS_SET_FRAME="$HAS_FEATURE"
239 AC_SUBST(LIBDWARF_HAS_SET_FRAME)
245 AC_ARG_WITH(libxml2-incdir,
246 [AS_HELP_STRING([--with-libxml2-incdir],[LIBXML2 include directory])],
247 [LIBXML2_INC_DIR="${withval}";],)
248 AC_ARG_WITH(libxml2-libdir,
249 [AS_HELP_STRING([--with-libxml2-libdir],[LIBXML2 library directory])],
250 [LIBXML2_LIB_DIR="${withval}";],)
251 PD_SOFT_CHECK_INC_DIR($LIBXML2_INC_DIR, [libxml/xmlschemas.h], [libxml])
252 PD_SOFT_CHECK_LIB_DIR($LIBXML2_LIB_DIR,[xml2],[xmlAddID])
253 AC_SUBST(LIBXML2_INC_DIR)
254 AC_SUBST(LIBXML2_LIB_DIR)
256 if test "$host_cpu" != "ia64" ; then
257 AC_MSG_NOTICE([Not IA-64, skipping libunwind...])
259 AC_ARG_WITH(libunwind-incdir,
260 [AS_HELP_STRING([--with-libunwind-incdir],[LIBUNWIND include directory])],
261 [LIBUNWIND_INC_DIR="${withval}";],)
262 AC_ARG_WITH(libunwind-libdir,
263 [AS_HELP_STRING([--with-libunwind-libdir],[LIBUNWIND library directory])],
264 [LIBUNWIND_LIB_DIR="${withval}";],)
266 PD_CHECK_INC_DIR(${LIBUNWIND_INC_DIR}, [libunwind.h])
268 AC_SUBST(LIBUNWIND_INC_DIR)
269 AC_SUBST(LIBUNWIND_LIB_DIR)
271 AC_ARG_WITH(launchmon-incdir,
272 [AS_HELP_STRING([--with-launchmon-incdir],[Launchmon include directory])],
273 [LAUNCHMON_INC_DIR="${withval}";],)
274 AC_ARG_WITH(launchmon-libdir,
275 [AS_HELP_STRING([--with-launchmon-libdir],[Launchmon library directory])],
276 [LAUNCHMON_LIB_DIR="${withval}";],)
277 AC_SUBST(LAUNCHMON_INC_DIR)
278 AC_SUBST(LAUNCHMON_LIB_DIR)
280 AC_ARG_WITH(libflex-libdir,
281 [AS_HELP_STRING([--with-libflex-libdir],[Absolute path to flex library])],
282 [LIBFLEX_LIB_DIR="${withval}";],)
283 # 3/15/09: We are not checking for libflex sources and they are not in cs.wisc.edu package-base.
284 # What's the story here? Not needed?
285 PD_SOFT_CHECK_LIB_DIR(${LIBFLEX_LIB_DIR}, [fl], [yywrap])
286 AC_SUBST(LIBFLEX_LIB_DIR)
287 AC_PATH_PROG(NASM, nasm, "", "${PACKAGE_BASE}/nasm/bin:$PATH")
290 AC_MSG_CHECKING([for -fno-stack-protector])
291 SAVED_CXXFLAGS=$CXXFLAGS
292 CXXFLAGS="-fno-stack-protector"
293 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
294 [AC_MSG_RESULT([yes]); STACKPROT="DISABLE_STACK_PROT=1"],
295 [AC_MSG_RESULT([no]); STACKPROT=""])
297 CXXFLAGS=$SAVED_CXXFLAGS
299 if test "`echo $host_os | cut -b-3`" = "aix" ; then
304 AC_MSG_CHECKING([for 32-bit build environment])
305 SAVED_CXXFLAGS=$CXXFLAGS
307 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <signal.h>]], [[]])],
308 [AC_MSG_RESULT([yes]); BUILD32=""],
309 [AC_MSG_RESULT([no]); BUILD32="SKIP_BUILD_RTLIB_32=1"])
311 CXXFLAGS=$SAVED_CXXFLAGS
313 AC_MSG_CHECKING([whether to use MM timer])
315 ia64-*-*-*) MMTIMER=true ;;
318 AC_MSG_RESULT(${MMTIMER})
323 AC_ARG_ENABLE(testsuite, AS_HELP_STRING([--disable-testsuite], [Disable the Dyninst test suite (default is no)]),
324 [], [enable_testsuite=yes])
326 AS_IF([test "x$enable_testsuite" != xyes], [TESTSUITE="DONT_BUILD_NEWTESTSUITE=1"], [TESTSUITE=""])
327 AC_SUBST([TESTSUITE])
329 AC_CONFIG_FILES([make.config.local:autodyninst/make.config.local.in])