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";
35 LIBXML2_INC_DIR="${PACKAGE_BASE}/libxml2/include/libxml2"
36 LIBXML2_LIB_DIR="${PACKAGE_BASE}/libxml2/lib";
37 LIBUNWIND_INC_DIR="${PACKAGE_BASE}/libunwind/include";
38 LIBUNWIND_LIB_DIR="${PACKAGE_BASE}/libunwind/lib";
39 LIBFLEX_LIB_DIR="${PACKAGE_BASE}/libflex/lib";
41 # We fall back on these defaults if both --with-package-base and
42 # specific --with-<package> arguments are not provided.
43 TCLTK_INC_DIR="/usr/include";
44 TCLTK_LIB_DIR="/usr/lib";
45 LIBELF_INC_DIR="/usr/include";
46 LIBELF_LIB_DIR="/usr/lib";
47 LIBDWARF_INC_DIR="/usr/include";
48 LIBDWARF_LIB_DIR="/usr/lib";
49 LIBXML2_INC_DIR="/usr/include/libxml2"
50 LIBXML2_LIB_DIR="/usr/lib";
51 LIBUNWIND_INC_DIR="/usr/include";
52 LIBUNWIND_LIB_DIR="/usr/lib";
53 LIBFLEX_LIB_DIR="/usr/lib";
55 # 3/15/09: We don't include libiberty in the cs.wisc.edu package-base.
56 # Why? Putting these here for now...
57 LIBIBERTY_LIB_DIR="/usr/lib";
61 [AS_HELP_STRING([--with-tcl83],[Use Tcl/Tk 8.3])],
62 [TCL_VERSION="tcl8.3"; USE_TCL83="${withval}";],
63 [TCL_VERSION="tcl8.4"; USE_TCL83="false";])
64 AC_ARG_WITH(tcltk-incdir,
65 [AS_HELP_STRING([--with-tcltk-incdir],[TCL/TK include directory])],
66 [TCLTK_INC_DIR="${withval}";],)
67 AC_ARG_WITH(tcltk-libdir,
68 [AS_HELP_STRING([--with-tcltk-libdir],[TCL/TK library directory])],
69 [TCLTK_LIB_DIR="${withval}";],)
70 PD_SOFT_CHECK_INC_DIR($TCLTK_INC_DIR, [tcl.h], [tcl])
71 PD_SOFT_CHECK_LIB_DIR($TCLTK_LIB_DIR, $TCL_VERSION, [Tcl_Eval])
73 AC_SUBST(TCLTK_INC_DIR)
74 AC_SUBST(TCLTK_LIB_DIR)
78 if test "`echo $host_os | cut -b-3`" = "aix" ; then
79 AC_MSG_NOTICE([AIX system, skipping libelf...])
82 AC_ARG_WITH(libelf-incdir,
83 [AS_HELP_STRING([--with-libelf-incdir],[LIBELF include directory])],
84 [LIBELF_INC_DIR="${withval}";],)
85 AC_ARG_WITH(libelf-libdir,
86 [AS_HELP_STRING([--with-libelf-libdir],[LIBELF library directory])],
87 [LIBELF_LIB_DIR="${withval}";],)
89 CXXFLAGS_HOLD=$CXXFLAGS;
90 CXXFLAGS="$CXXFLAGS -I$LIBELF_INC_DIR";
91 CPPFLAGS_HOLD=$CPPFLAGS;
92 CPPFLAGS="$CPPFLAGS -I$LIBELF_INC_DIR";
94 AC_CHECK_HEADER([$LIBELF_INC_DIR/libelf.h], [AC_MSG_NOTICE(ELF include directory: $LIBELF_INC_DIR)],
95 [CXXFLAGS="$CXXFLAGS -I$LIBELF_INC_DIR/libelf";
96 CPPFLAGS="$CPPFLAGS -I$LIBELF_INC_DIR/libelf";
97 AC_CHECK_HEADER([$LIBELF_INC_DIR/libelf/libelf.h],
98 [LIBELF_INC_DIR+="/libelf";AC_MSG_NOTICE(ELF include directory: $LIBELF_INC_DIR)],
99 [AC_ERROR(couldn't find libelf.h)])])
100 CXXFLAGS=$CXXFLAGS_HOLD;
101 CPPFLAGS=$CPPFLAGS_HOLD;
102 PD_CHECK_LIB_DIR($LIBELF_LIB_DIR,[elf],[elf_memory])
103 PD_CHECK_LIB_TYPE($LIBELF_LIB_DIR, elf)
104 LIBELF_STATIC="$LIB_TYPE_STATIC"
105 LIBELF_DYNAMIC="$LIB_TYPE_DYNAMIC"
106 AC_SUBST(LIBELF_INC_DIR)
107 AC_SUBST(LIBELF_LIB_DIR)
108 AC_SUBST(LIBELF_STATIC)
109 AC_SUBST(LIBELF_DYNAMIC)
112 if test "`echo $host_os | cut -b-3`" = "aix" ; then
113 if test "`basename $CXX`" = "xlC" ; then
115 elif test "`basename $CC`" = "xlc" ; then
123 if test "`echo $host_os | cut -b-3`" = "aix" ; then
124 AC_MSG_NOTICE([AIX system, skipping libdwarf...])
127 AC_ARG_WITH(libdwarf-incdir,
128 [AS_HELP_STRING([--with-libdwarf-incdir],[LIBDWARF include directory])],
129 [LIBDWARF_INC_DIR="${withval}";],)
130 AC_ARG_WITH(libdwarf-libdir,
131 [AS_HELP_STRING([--with-libdwarf-libdir],[LIBDWARF library directory])],
132 [LIBDWARF_LIB_DIR="${withval}";],)
134 CXXFLAGS_HOLD=$CXXFLAGS;
135 CXXFLAGS="$CXXFLAGS -I$LIBDWARF_INC_DIR";
136 CPPFLAGS_HOLD=$CPPFLAGS;
137 CPPFLAGS="$CPPFLAGS -I$LIBDWARF_INC_DIR";
139 AC_CHECK_HEADER([$LIBDWARF_INC_DIR/libdwarf.h], [AC_MSG_NOTICE(DWARF include directory: $LIBDWARF_INC_DIR)],
140 [CXXFLAGS="$CXXFLAGS -I$LIBDWARF_INC_DIR/libdwarf";
141 CPPFLAGS="$CPPFLAGS -I$LIBDWARF_INC_DIR/libdwarf";
142 AC_CHECK_HEADER([$LIBDWARF_INC_DIR/libdwarf/libdwarf.h],
143 [LIBDWARF_INC_DIR+="/libdwarf";AC_MSG_NOTICE(DWARF include directory: $LIBDWARF_INC_DIR)],
144 [AC_ERROR(couldn't find libdwarf.h)])])
145 CXXFLAGS=$CXXFLAGS_HOLD;
146 CPPFLAGS=$CPPFLAGS_HOLD;
148 PD_CHECK_LIB_DIR($LIBDWARF_LIB_DIR,[dwarf],[dwarf_add_arange],$LIBELF_LIB_DIR,[-lelf])
149 PD_CHECK_LIB_TYPE($LIBDWARF_LIB_DIR, dwarf)
150 LIBDWARF_STATIC="$LIB_TYPE_STATIC"
151 LIBDWARF_DYNAMIC="$LIB_TYPE_DYNAMIC"
152 AC_SUBST(LIBDWARF_INC_DIR)
153 AC_SUBST(LIBDWARF_LIB_DIR)
154 AC_SUBST(LIBDWARF_STATIC)
155 AC_SUBST(LIBDWARF_DYNAMIC)
157 PD_CHECK_LIB_FEATURE($LIBDWARF_LIB_DIR,[dwarf],[dwarf_set_frame_cfa_value],$LIBELF_LIB_DIR,[-lelf])
158 LIBDWARF_HAS_SET_FRAME="$HAS_FEATURE"
159 AC_SUBST(LIBDWARF_HAS_SET_FRAME)
165 AC_ARG_WITH(libxml2-incdir,
166 [AS_HELP_STRING([--with-libxml2-incdir],[LIBXML2 include directory])],
167 [LIBXML2_INC_DIR="${withval}";],)
168 AC_ARG_WITH(libxml2-libdir,
169 [AS_HELP_STRING([--with-libxml2-libdir],[LIBXML2 library directory])],
170 [LIBXML2_LIB_DIR="${withval}";],)
171 PD_SOFT_CHECK_INC_DIR($LIBXML2_INC_DIR, [libxml/xmlschemas.h], [libxml])
172 PD_SOFT_CHECK_LIB_DIR($LIBXML2_LIB_DIR,[xml2],[xmlAddID])
173 AC_SUBST(LIBXML2_INC_DIR)
174 AC_SUBST(LIBXML2_LIB_DIR)
176 if test "`echo $host_os | cut -b-3`" = "aix" ; then
177 AC_MSG_NOTICE([AIX system, skipping libiberty...])
179 AC_ARG_WITH(libiberty-libdir,
180 [AS_HELP_STRING([--with-libiberty-libdir],[LIBIBERTY library directory])],
181 [LIBIBERTY_LIB_DIR="${withval}";],)
183 LIBS="-L$LIBIBERTY_LIB_DIR"
184 AC_CHECK_LIB([iberty], [cplus_demangle], [],
185 [AC_CHECK_FILE($LIBIBERTY_LIB_DIR/libiberty.a,
187 [AC_MSG_ERROR(Can't find libiberty in $LIBIBERTY_LIB_DIR)])])
189 AC_SUBST(LIBIBERTY_LIB_DIR)
190 PD_CHECK_LIB_TYPE($LIBIBERTY_LIB_DIR, iberty)
191 LIBIBERTY_STATIC="$LIB_TYPE_STATIC"
192 LIBIBERTY_DYNAMIC="$LIB_TYPE_DYNAMIC"
193 AC_SUBST(LIBIBERTY_STATIC)
194 AC_SUBST(LIBIBERTY_DYNAMIC)
197 if test "$host_cpu" != "ia64" ; then
198 AC_MSG_NOTICE([Not IA-64, skipping libunwind...])
200 AC_ARG_WITH(libunwind-incdir,
201 [AS_HELP_STRING([--with-libunwind-incdir],[LIBUNWIND include directory])],
202 [LIBUNWIND_INC_DIR="${withval}";],)
203 AC_ARG_WITH(libunwind-libdir,
204 [AS_HELP_STRING([--with-libunwind-libdir],[LIBUNWIND library directory])],
205 [LIBUNWIND_LIB_DIR="${withval}";],)
207 PD_CHECK_INC_DIR(${LIBUNWIND_INC_DIR}, [libunwind.h])
209 AC_SUBST(LIBUNWIND_INC_DIR)
210 AC_SUBST(LIBUNWIND_LIB_DIR)
213 AC_ARG_WITH(libflex-libdir,
214 [AS_HELP_STRING([--with-libflex-libdir],[Absolute path to flex library])],
215 [LIBFLEX_LIB_DIR="${withval}";],)
216 # 3/15/09: We are not checking for libflex sources and they are not in cs.wisc.edu package-base.
217 # What's the story here? Not needed?
218 PD_SOFT_CHECK_LIB_DIR(${LIBFLEX_LIB_DIR}, [fl], [yywrap])
219 AC_SUBST(LIBFLEX_LIB_DIR)
220 AC_PATH_PROG(NASM, nasm, "", "${PACKAGE_BASE}/nasm/bin:$PATH")
223 AC_MSG_CHECKING([for -fno-stack-protector])
224 SAVED_CXXFLAGS=$CXXFLAGS
225 CXXFLAGS="-fno-stack-protector"
226 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
227 [AC_MSG_RESULT([yes]); STACKPROT="DISABLE_STACK_PROT=1"],
228 [AC_MSG_RESULT([no]); STACKPROT=""])
230 CXXFLAGS=$SAVED_CXXFLAGS
232 AC_MSG_CHECKING([for -m32])
233 SAVED_CXXFLAGS=$CXXFLAGS
235 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
236 [AC_MSG_RESULT([yes]); BUILD32=""],
237 [AC_MSG_RESULT([no]); BUILD32="SKIP_BUILD_RTLIB_32=1"])
239 CXXFLAGS=$SAVED_CXXFLAGS
242 AC_MSG_CHECKING([whether to use MM timer])
244 ia64-*-*-*) MMTIMER=true ;;
247 AC_MSG_RESULT(${MMTIMER})
252 AC_ARG_ENABLE(testsuite, AS_HELP_STRING([--disable-testsuite], [Disable the Dyninst test suite (default is no)]),
253 [], [enable_testsuite=yes])
255 AS_IF([test "x$enable_testsuite" != xyes], [TESTSUITE="DONT_BUILD_TESTSUITE=1"], [TESTSUITE=""])
256 AC_SUBST([TESTSUITE])
258 AC_CONFIG_FILES([make.config.local:autodyninst/make.config.local.in])