1 dnl == process this file with autoconf to produce a configure script ==
5 AC_INIT([Dyninst], [8.0], [bugs@dyninst.org], [dyninst])
7 AC_PREFIX_DEFAULT(/usr)
9 AC_CONFIG_AUX_DIR([autodyninst])
10 AC_CONFIG_MACRO_DIR([autodyninst])
15 AC_PATH_PROG(_ICC_, icc)
16 AC_PATH_PROG(_ICPC_, icpc)
17 AC_PATH_PROG(_PGC_, pgcc)
18 AC_PATH_PROG(_PGCXX_, pgCC)
19 AC_PATH_PROG(_CC_, cc)
20 AC_PATH_PROG(_CXX_, CC)
24 dnl === configure options ==
28 AC_ARG_WITH(traditional,
29 [AS_HELP_STRING([--with-traditional],[Install to traditional (deprecated) locations])],
30 [LIBRARY_DEST_VAR="LIBRARY_DEST=\${TO_CORE}/../\${PLATFORM}/lib";
31 PROGRAM_DEST_VAR="PROGRAM_DEST=\${TO_CORE}/../\${PLATFORM}/bin";
32 INCLUDE_DEST_VAR="INCLUDE_DEST=\${TO_CORE}/../include";],
35 INCLUDE_DEST_VAR="";])
36 AC_SUBST(LIBRARY_DEST_VAR)
37 AC_SUBST(PROGRAM_DEST_VAR)
38 AC_SUBST(INCLUDE_DEST_VAR)
42 AC_ARG_WITH(package-base,
43 [AS_HELP_STRING([--with-package-base],[Base directory to look for packages])],
44 [PACKAGE_BASE="${withval}";
45 TCLTK_INC_DIR="${PACKAGE_BASE}/tcl8.4.5/include";
46 TCLTK_LIB_DIR="${PACKAGE_BASE}/tcl8.4.5/lib";
47 LIBELF_INC_DIR="${PACKAGE_BASE}/libelf/include";
48 LIBELF_LIB_DIR="${PACKAGE_BASE}/libelf/lib";
49 LIBDWARF_INC_DIR="${PACKAGE_BASE}/libdwarf/include";
50 LIBDWARF_LIB_DIR="${PACKAGE_BASE}/libdwarf/lib";
52 LIBXML2_INC_DIR="${PACKAGE_BASE}/libxml2/include/libxml2"
53 LIBXML2_LIB_DIR="${PACKAGE_BASE}/libxml2/lib";
54 LIBFLEX_LIB_DIR="${PACKAGE_BASE}/libflex/lib";
56 # We fall back on these defaults if both --with-package-base and
57 # specific --with-<package> arguments are not provided.
58 #TCLTK_INC_DIR="/usr/include";
59 #TCLTK_LIB_DIR="/usr/lib";
60 #LIBELF_INC_DIR="/usr/include";
61 #LIBELF_LIB_DIR="/usr/lib";
63 #LIBDWARF_INC_DIR="/usr/include";
64 #LIBDWARF_LIB_DIR="/usr/lib";
65 LIBXML2_INC_DIR="/usr/include/libxml2"
66 #LIBXML2_LIB_DIR="/usr/lib";
67 #LIBFLEX_LIB_DIR="/usr/lib";
69 # 3/15/09: We don't include libiberty in the cs.wisc.edu package-base.
70 # Why? Putting these here for now...
71 #LIBIBERTY_LIB_DIR="/usr/lib";
73 AC_ARG_WITH(default-component,
74 [AS_HELP_STRING([--with-default-component],[Valid values: DyninstAPI, SymtabAPI, InstructionAPI, ProcControlAPI, ParseAPI, default])],
75 [DEFAULT_COMPONENT="${withval}";],
76 [DEFAULT_COMPONENT=`cat autodyninst/default_component`;])
78 [AS_HELP_STRING([--with-tcl83],[Use Tcl/Tk 8.3])],
79 [TCL_VERSION="tcl8.3"; USE_TCL83="${withval}";],
80 [TCL_VERSION="tcl8.4"; USE_TCL83="false";])
81 AC_ARG_WITH(tcltk-incdir,
82 [AS_HELP_STRING([--with-tcltk-incdir],[TCL/TK include directory])],
83 [TCLTK_INC_DIR="${withval}";],)
84 AC_ARG_WITH(tcltk-libdir,
85 [AS_HELP_STRING([--with-tcltk-libdir],[TCL/TK library directory])],
86 [TCLTK_LIB_DIR="${withval}";],)
87 PD_SOFT_CHECK_INC_DIR($TCLTK_INC_DIR, [tcl.h], [tcl])
88 PD_SOFT_CHECK_LIB_DIR($TCLTK_LIB_DIR, $TCL_VERSION, [Tcl_Eval])
90 AC_SUBST(TCLTK_INC_DIR)
91 AC_SUBST(TCLTK_LIB_DIR)
92 AC_SUBST(DEFAULT_COMPONENT)
96 AC_ARG_WITH(wrapper-libs,
97 [AS_HELP_STRING([--with-wrapper-libs],[Comma seperated list of archive to wrap])],
98 [ARG_WRAPPER_LIBS="${withval}";],)
99 AC_SUBST(ARG_WRAPPER_LIBS)
101 AC_ARG_ENABLE(gnu-demangler,
102 [AS_HELP_STRING([--enable-gnu-demangler],[Use g++'s built in demangler])],
103 [GNU_DEMANGLER="true"],)
105 if test "x$DEFAULT_COMPONENT" = "xInstructionAPI"; then
106 AC_MSG_NOTICE([InstructionAPI, not requiring libelf...])
107 SUPPRESS_LIBELF_REQ="true"
108 AC_MSG_NOTICE([InstructionAPI, not requiring thread_db...])
109 SUPPRESS_THREADDB_REQ="true"
110 AC_MSG_NOTICE([InstructionAPI, not requiring libdwarf...])
111 SUPPRESS_LIBDWARF_REQ="true"
113 if test "x$DEFAULT_COMPONENT" = "xSymtabAPI"; then
114 AC_MSG_NOTICE([SymtabAPI, not requiring thread_db...])
115 SUPPRESS_THREADDB_REQ="true"
117 if test "x$DEFAULT_COMPONENT" = "xParseAPI"; then
118 AC_MSG_NOTICE([ParseAPI, not requiring thread_db...])
119 SUPPRESS_THREADDB_REQ="true"
121 if test "x$DEFAULT_COMPONENT" = "xProcControlAPI"; then
122 AC_MSG_NOTICE([ProcControlAPI, not requiring libdwarf...])
123 SUPPRESS_LIBDWARF_REQ="true"
125 if test "`echo $host_os | cut -b-5`" = "linux" ; then
126 if test "x$PLATFORM" = "xppc32_bgp_ion"; then
127 AC_MSG_NOTICE([BG/P, thread_db required...])
128 elif test "x$PLATFORM" = "xppc32_bgl_ion"; then
129 AC_MSG_NOTICE([BG/L, thread_db required...])
130 elif test "x$PLATFORM" = "xppc64_bgq_ion"; then
131 AC_MSG_NOTICE([BG/Q, thread_db required...])
133 AC_MSG_NOTICE([Linux, not requiring thread_db...])
134 SUPPRESS_THREADDB_REQ="true"
138 if test "`echo $host_os | cut -b-3`" = "aix" ; then
139 AC_MSG_NOTICE([AIX, not requiring thread_db...])
140 SUPPRESS_THREADDB_REQ="true"
143 if test "`echo $host_os | cut -b-3`" = "aix" ; then
144 AC_MSG_NOTICE([AIX system, skipping libelf...])
146 AC_ARG_WITH(libelf-incdir,
147 [AS_HELP_STRING([--with-libelf-incdir],[LIBELF include directory])],
148 [LIBELF_INC_DIR="${withval}";],)
149 AC_ARG_WITH(libelf-libdir,
150 [AS_HELP_STRING([--with-libelf-libdir],[LIBELF library directory])],
151 [LIBELF_LIB_DIR="${withval}";],)
153 if test "x$SUPPRESS_LIBELF_REQ" = "x"; then
154 if test "x$LIBELF_INC_DIR" = "x"; then
156 LIBELF_ALT_INC_DIR=/usr/include/libelf
158 LIBELF_INCFLAGS=-I$LIBELF_INC_DIR
159 LIBELF_ALT_INC_DIR=$LIBELF_INC_DIR/libelf
161 LIBELF_ALT_INCFLAGS=-I$LIBELF_ALT_INC_DIR
163 CXXFLAGS_HOLD=$CXXFLAGS
164 CPPFLAGS_HOLD=$CPPFLAGS
165 CXXFLAGS="$CXXFLAGS $LIBELF_INCFLAGS";
166 CPPFLAGS="$CPPFLAGS $LIBELF_INCFLAGS";
168 AC_CHECK_HEADER([libelf.h], [AC_MSG_NOTICE(ELF include directory: $LIBELF_INC_DIR)],
169 [CXXFLAGS="$CXXFLAGS $LIBELF_ALT_INCFLAGS"
170 CPPFLAGS="$CPPFLAGS $LIBELF_ALT_INCFLAGS"
171 $as_unset ac_cv_header_libelf_h
172 AC_CHECK_HEADER([libelf.h],
173 [LIBELF_INC_DIR=$LIBELF_ALT_INC_DIR;AC_MSG_NOTICE(ELF include directory: $LIBELF_INC_DIR)],
174 [AC_ERROR(couldn't find libelf.h: $CPPFLAGS)])])
176 CXXFLAGS=$CXXFLAGS_HOLD
177 CPPFLAGS=$CPPFLAGS_HOLD
178 PD_CHECK_LIB_DIR($LIBELF_LIB_DIR,[elf],[elf_memory])
179 PD_CHECK_LIB_TYPE($LIBELF_LIB_DIR, elf)
181 LIBELF_STATIC="$LIB_TYPE_STATIC"
182 LIBELF_DYNAMIC="$LIB_TYPE_DYNAMIC"
183 AC_SUBST(LIBELF_INC_DIR)
184 AC_SUBST(LIBELF_LIB_DIR)
185 AC_SUBST(LIBELF_STATIC)
186 AC_SUBST(LIBELF_DYNAMIC)
189 if test "$host_cpu" != "x86_64" -a "$host_cpu" != "i686"; then
190 AC_MSG_NOTICE([Not x86/x86_64, skipping icc on $host_cpu...])
193 [AS_HELP_STRING([--with-icc],[Path to Intel's ICC compiler])],
194 [_ICC_="${withval}"; _ICPC_=`dirname ${withval}`/icpc;],)
199 if test "$host_cpu" != "x86_64" -a "$host_cpu" != "i686"; then
200 AC_MSG_NOTICE([Not x86/x86_64, skipping pgcc on $host_cpu...])
203 [AS_HELP_STRING([--with-pgcc],[Path to Pathscale's PGCC compiler])],
204 [_PGC_="${withval}"; _PGCXX_=`dirname ${withval}`/pgCC;],)
209 if test "`echo $host_os | cut -b-3`" = "aix" ; then
210 if test "`basename $CXX`" = "xlC" ; then
212 elif test "`basename $CC`" = "xlc" ; then
220 if test "x$BUILD_XLC" = "x" ; then
221 AC_ARG_WITH(libiberty-libdir,
222 [AS_HELP_STRING([--with-libiberty-libdir],[LIBIBERTY library directory])],
223 [LIBIBERTY_LIB_DIR="${withval}";],)
225 if test "x$LIBIBERTY_LIB_DIR" != "x" ; then
226 LIBS="-L$LIBIBERTY_LIB_DIR"
228 AC_CHECK_LIB([iberty], [cplus_demangle], [HAVE_LIBIBERTY="true";],[HAVE_LIBIBERTY="false"])
232 CXXFLAGS_BAK=$CXXFLAGS
233 LIBS="$LIBS -liberty"
234 LDFLAGS="$LDFLAGS -shared"
236 AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern "C" { char *cplus_demangle(char *s, int opts); }]],
237 [[cplus_demangle("", 0);]])],
238 [LIBIBERTY_LINK="true"],
239 [LIBIBERTY_LINK="false"])
242 CXXFLAGS=$CXXFLAGS_BAK
244 if test "x$HAVE_LIBIBERTY" = "xtrue" ; then
245 if test "x$LIBIBERTY_LINK" = "xtrue" ; then
248 elif test "x$_PGC_" != "x" ; then
250 echo "WARNING: libiberty does not link with shared objects. Mutatees will have to be linked with -liberty."
258 if test "x$GNU_DEMANGLER" = "xtrue" ; then
264 AC_SUBST(GNU_DEMANGLER)
265 AC_SUBST(USE_LIBERTY)
266 AC_SUBST(LINK_LIBERTY)
267 AC_SUBST(LIBIBERTY_LIB_DIR)
269 if test "`echo $host_os | cut -b-3`" = "aix" ; then
270 AC_MSG_NOTICE([AIX system, skipping libdwarf...])
272 AC_ARG_WITH(libdwarf-incdir,
273 [AS_HELP_STRING([--with-libdwarf-incdir],[LIBDWARF include directory])],
274 [LIBDWARF_INC_DIR="${withval}";],)
275 AC_ARG_WITH(libdwarf-libdir,
276 [AS_HELP_STRING([--with-libdwarf-libdir],[LIBDWARF library directory])],
277 [LIBDWARF_LIB_DIR="${withval}";],)
279 if test "x$SUPPRESS_LIBDWARF_REQ" = "x"; then
280 if test "x$LIBDWARF_INC_DIR" = "x"; then
281 LIBDWARF_INCFLAGS="";
282 LIBDWARF_ALT_INC_DIR="/usr/include/libdwarf";
284 LIBDWARF_INCFLAGS="-I$LIBDWARF_INC_DIR";
285 LIBDWARF_ALT_INC_DIR="$LIBDWARF_INC_DIR/libdwarf";
287 LIBDWARF_ALT_INCFLAGS="-I$LIBDWARF_ALT_INC_DIR";
289 CXXFLAGS_HOLD=$CXXFLAGS;
290 CPPFLAGS_HOLD=$CPPFLAGS;
291 CXXFLAGS="$CXXFLAGS $LIBDWARF_INCFLAGS";
292 CPPFLAGS="$CPPFLAGS $LIBDWARF_INCFLAGS";
294 AC_CHECK_HEADER([libdwarf.h], [AC_MSG_NOTICE(DWARF include directory: $LIBDWARF_INC_DIR)],
295 [CXXFLAGS="$CXXFLAGS_HOLD $LIBDWARF_ALT_INCFLAGS"
296 CPPFLAGS="$CPPFLAGS_HOLD $LIBDWARF_ALT_INCFLAGS"
297 $as_unset ac_cv_header_libdwarf_h
298 AC_CHECK_HEADER([libdwarf.h],
299 [LIBDWARF_INC_DIR=$LIBDWARF_ALT_INC_DIR;AC_MSG_NOTICE(DWARF include directory: $LIBDWARF_INC_DIR)],
300 [AC_ERROR(couldn't find libdwarf.h)])])
301 CXXFLAGS=$CXXFLAGS_HOLD;
302 CPPFLAGS=$CPPFLAGS_HOLD;
304 PD_CHECK_LIB_DIR($LIBDWARF_LIB_DIR,[dwarf],[dwarf_add_arange],$LIBELF_LIB_DIR,[-lelf])
305 PD_CHECK_LIB_TYPE($LIBDWARF_LIB_DIR, dwarf)
308 LIBDWARF_STATIC="$LIB_TYPE_STATIC"
309 LIBDWARF_DYNAMIC="$LIB_TYPE_DYNAMIC"
310 AC_SUBST(LIBDWARF_INC_DIR)
311 AC_SUBST(LIBDWARF_LIB_DIR)
312 AC_SUBST(LIBDWARF_STATIC)
313 AC_SUBST(LIBDWARF_DYNAMIC)
315 PD_CHECK_LIB_FEATURE($LIBDWARF_LIB_DIR,[dwarf],[dwarf_set_frame_cfa_value],$LIBELF_LIB_DIR,[-lelf])
316 LIBDWARF_HAS_SET_FRAME="$HAS_FEATURE"
317 AC_SUBST(LIBDWARF_HAS_SET_FRAME)
321 AC_ARG_WITH(threaddb-incdir,
322 [AS_HELP_STRING([--with-threaddb-incdir],[THREADDB include directory])],
323 [THREADDB_INC_DIR="${withval}";],)
324 AC_ARG_WITH(threaddb-libdir,
325 [AS_HELP_STRING([--with-threaddb-libdir],[THREADDB library directory])],
326 [THREADDB_LIB_DIR="${withval}";],)
327 CXXFLAGS_HOLD=$CXXFLAGS;
328 CPPFLAGS_HOLD=$CPPFLAGS;
329 LDFLAGS_HOLD=$LDFLAGS
330 if test "x$THREADDB_INC_DIR" != "x"; then
331 CXXFLAGS="$CXXFLAGS -I$THREADDB_INC_DIR"
332 CPPFLAGS="$CPPFLAGS -I$THREADDB_INC_DIR"
334 LDFLAGS="-shared -fPIC"
336 if test "x$SUPPRESS_THREADDB_REQ" = "x"; then
337 AC_CHECK_HEADER([thread_db.h], [AC_MSG_NOTICE(thread_db include directory: $THREADDB_INC_DIR)],
338 [AC_ERROR(couldn't find thread_db.h)], )
339 PD_CHECK_LIB_DIR($THREADDB_LIB_DIR,[thread_db],[td_ta_new], , )
341 AC_CHECK_HEADER([thread_db.h], [AC_MSG_NOTICE(thread_db include directory: $THREADDB_INC_DIR)],
342 [HAVE_THREADDB=""], )
343 PD_CHECK_LIB_DIR_WERR($THREADDB_LIB_DIR,[thread_db],[td_ta_new], , , [HAVE_THREADDB=""])
345 if test "x$HAVE_THREADDB" = "xtrue"; then
346 PD_CHECK_LIB_TYPE($THREADDB_LIB_DIR, thread_db)
348 CXXFLAGS=$CXXFLAGS_HOLD
349 CPPFLAGS=$CPPFLAGS_HOLD
350 LDFLAGS=$LDFLAGS_HOLD
351 THREADDB_STATIC="$LIB_TYPE_STATIC"
352 THREADDB_DYNAMIC="$LIB_TYPE_DYNAMIC"
353 AC_SUBST(THREADDB_INC_DIR)
354 AC_SUBST(THREADDB_LIB_DIR)
355 AC_SUBST(THREADDB_STATIC)
356 AC_SUBST(THREADDB_DYNAMIC)
357 AC_SUBST(HAVE_THREADDB)
359 AC_ARG_WITH(libxml2-incdir,
360 [AS_HELP_STRING([--with-libxml2-incdir],[LIBXML2 include directory])],
361 [LIBXML2_INC_DIR="${withval}";],)
362 AC_ARG_WITH(libxml2-libdir,
363 [AS_HELP_STRING([--with-libxml2-libdir],[LIBXML2 library directory])],
364 [LIBXML2_LIB_DIR="${withval}";],)
365 PD_SOFT_CHECK_INC_DIR($LIBXML2_INC_DIR, [libxml/xmlschemas.h], [libxml])
366 PD_SOFT_CHECK_LIB_DIR($LIBXML2_LIB_DIR,[xml2],[xmlAddID])
367 AC_SUBST(LIBXML2_INC_DIR)
368 AC_SUBST(LIBXML2_LIB_DIR)
370 AC_ARG_WITH(launchmon-incdir,
371 [AS_HELP_STRING([--with-launchmon-incdir],[Launchmon include directory])],
372 [LAUNCHMON_INC_DIR="${withval}";],)
373 AC_ARG_WITH(launchmon-libdir,
374 [AS_HELP_STRING([--with-launchmon-libdir],[Launchmon library directory])],
375 [LAUNCHMON_LIB_DIR="${withval}";],)
376 AC_SUBST(LAUNCHMON_INC_DIR)
377 AC_SUBST(LAUNCHMON_LIB_DIR)
379 AC_ARG_WITH(libflex-libdir,
380 [AS_HELP_STRING([--with-libflex-libdir],[Absolute path to flex library])],
381 [LIBFLEX_LIB_DIR="${withval}";],)
382 # 3/15/09: We are not checking for libflex sources and they are not in cs.wisc.edu package-base.
383 # What's the story here? Not needed?
384 PD_SOFT_CHECK_LIB_DIR(${LIBFLEX_LIB_DIR}, [fl], [yywrap])
385 AC_SUBST(LIBFLEX_LIB_DIR)
386 AC_PATH_PROG(NASM, nasm, "", "${PACKAGE_BASE}/nasm/bin:$PATH")
389 AC_MSG_CHECKING([for -fno-stack-protector])
390 SAVED_CXXFLAGS=$CXXFLAGS
391 CXXFLAGS="-fno-stack-protector"
392 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
393 [AC_MSG_RESULT([yes]); STACKPROT="DISABLE_STACK_PROT=1"],
394 [AC_MSG_RESULT([no]); STACKPROT=""])
396 CXXFLAGS=$SAVED_CXXFLAGS
398 if test "`echo $host_os | cut -b-3`" = "aix" ; then
403 AC_MSG_CHECKING([for 32-bit build environment])
404 SAVED_CXXFLAGS=$CXXFLAGS
406 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <signal.h>]], [[]])],
407 [AC_MSG_RESULT([yes]); BUILD32=""],
408 [AC_MSG_RESULT([no]); BUILD32="SKIP_BUILD_RTLIB_32=1"])
410 CXXFLAGS=$SAVED_CXXFLAGS
412 AC_MSG_CHECKING([whether to use MM timer])
414 ia64-*-*-*) MMTIMER=true ;;
417 AC_MSG_RESULT(${MMTIMER})
422 AC_ARG_ENABLE(testsuite, AS_HELP_STRING([--disable-testsuite], [Disable the Dyninst test suite (default is no)]),
423 [], [enable_testsuite=yes])
425 AS_IF([test "x$enable_testsuite" != xyes], [TESTSUITE="DONT_BUILD_NEWTESTSUITE=1"], [TESTSUITE=""])
426 AC_SUBST([TESTSUITE])
428 AC_CONFIG_FILES([make.config.local:autodyninst/make.config.local.in])