]> sourceware.org Git - systemtap.git/blob - configure.ac
Merge remote-tracking branch 'origin/master' into dsmith/interactive
[systemtap.git] / configure.ac
1 dnl configure.ac --- autoconf input file for systemtap
2 dnl Process this file with autoconf to produce a configure script.
3
4 AC_INIT([systemtap], 2.9, systemtap@sourceware.org, systemtap)
5 dnl ^^^ see also NEWS, systemtap.spec, testsuite/configure.ac
6 dnl doc/SystemTap_Beginners_Guide/en-US/Book_Info.xml
7
8 dnl Get the target arch for libHelperSDT.so
9 AC_CANONICAL_TARGET
10
11 AC_PREREQ(2.63)
12 dnl We don't maintain a ChangeLog, which makes us non-GNU -> foreign.
13 AM_INIT_AUTOMAKE([no-dist foreign])
14 AM_MAINTAINER_MODE
15
16 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
17
18 AC_USE_SYSTEM_EXTENSIONS
19 AC_PROG_MKDIR_P
20 AC_SUBST(MKDIR_P)
21 AC_PROG_LN_S
22 AC_PROG_CC
23 AC_PROG_CXX
24 AC_PROG_CPP
25 AM_PROG_CC_STDC
26 AM_PROG_CC_C_O
27 AC_PROG_RANLIB
28 AC_OBJEXT
29 AC_EXEEXT
30 AC_PROG_INSTALL
31 AC_PROG_MAKE_SET
32 AC_SUBST(CFLAGS)
33 AC_SUBST(CXXFLAGS)
34 AC_SYS_LARGEFILE
35 AC_CHECK_FUNCS(ppoll)
36 AC_CHECK_FUNCS(openat)
37 AM_GNU_GETTEXT(external)
38 AM_GNU_GETTEXT_VERSION([0.19.4])
39
40 if test "x$GMSGFMT" = "x:"; then
41 AC_MSG_ERROR([missing gnu /usr/bin/msgfmt])
42 fi
43
44 dnl Handle the prologues option.
45 dnl
46 dnl If the user didn't specify --enable-prologues/--disable-prologues
47 dnl and the x86 system has a version of gcc less than version 4,
48 dnl automatically enable prologues.
49 if test "${enable_prologues+set}" != set; then
50 AC_MSG_CHECKING([to see if prologue searching should be the default])
51 if { echo '#if __i386__ == 1 && __GNUC__ < 4'
52 echo ' yes '
53 echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
54 enable_prologues=yes
55 AC_MSG_RESULT([yes])
56 else
57 AC_MSG_RESULT([no])
58 fi
59 fi
60 AC_ARG_ENABLE([prologues],
61 AS_HELP_STRING([--enable-prologues], [make -P prologue-searching default]),
62 [
63 if test "$enable_prologues" = yes; then
64 AC_DEFINE([ENABLE_PROLOGUES],[],[make -P prologue-searching default])
65 fi])
66
67 dnl Handle the disable-sdt-probes option.
68 dnl
69 dnl Default to --disable-sdt-probes if --enable-sdt-probes/--disable-prologues
70 dnl was not specified and the gcc version is less than version 4,
71
72 if test "${enable_sdt_probes+set}" != set; then
73 AC_MSG_CHECKING([to see if sdt probes should be the default])
74 if { echo '#if __GNUC__ < 4'
75 echo ' yes '
76 echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
77 enable_sdt_probes=no
78 AC_MSG_RESULT([no])
79 else
80 AC_MSG_RESULT([yes])
81 fi
82 fi
83 AC_ARG_ENABLE([sdt-probes],
84 [AS_HELP_STRING([--disable-sdt-probes],
85 [disable process.mark probes in stap, staprun, stapio])])
86 AS_IF([test "x$enable_sdt_probes" != xno], [
87 AC_DEFINE([ENABLE_SDT_PROBES], [1],
88 [Define to 1 to enable process.mark probes in stap, staprun, stapio.])
89 ])
90
91 AC_ARG_ENABLE([ssp],
92 [AS_HELP_STRING([--disable-ssp], [disable gcc stack-protector])])
93 AS_IF([test "x$enable_ssp" != xno],[
94 save_CFLAGS="$CFLAGS"
95 save_CXXFLAGS="$CXXFLAGS"
96 CXXFLAGS="$CXXFLAGS -Werror -fstack-protector-all -D_FORTIFY_SOURCE=2"
97 CFLAGS="$CFLAGS -Werror -fstack-protector-all -D_FORTIFY_SOURCE=2"
98 AC_COMPILE_IFELSE([AC_LANG_SOURCE([int something ();])], [
99 AC_MSG_NOTICE([Compiling with gcc -fstack-protector-all et al.])
100 CFLAGS="$save_CFLAGS -fstack-protector-all -D_FORTIFY_SOURCE=2"
101 CXXFLAGS="$save_CXXFLAGS -fstack-protector-all -D_FORTIFY_SOURCE=2"],[
102 AC_MSG_NOTICE([Compiler does not support -fstack-protector-all et al.])
103 CFLAGS="$save_CFLAGS"
104 CXXFLAGS="$save_CXXFLAGS"])])
105
106
107 dnl Link with gold if possible
108 dnl but: https://bugzilla.redhat.com/show_bug.cgi?id=636603
109 dnl
110 dnl AC_PATH_PROG(GOLD, [ld.gold], [no])
111 dnl if test "x$GOLD" != "xno"
112 dnl then
113 dnl mkdir -p Bdir
114 dnl ln -sf $GOLD Bdir/ld
115 dnl LDFLAGS="$LDFLAGS -B`pwd`/Bdir/"
116 dnl AC_MSG_NOTICE([using ld.gold to link])
117 dnl fi
118
119
120 # Compiling without fPIE by default (see PR 9922)
121 AC_ARG_ENABLE([pie],
122 [AS_HELP_STRING([--enable-pie], [enable position-independent-executable])])
123 AS_IF([test "x$enable_pie" == xyes],[
124 PIECFLAGS='-fPIE'
125 PIECXXFLAGS='-fPIE'
126 PIELDFLAGS='-pie -Wl,-z,relro -Wl,-z,now'
127 save_CFLAGS="$CFLAGS"
128 save_CXXFLAGS="$CXXFLAGS"
129 save_LDFLAGS="$LDFLAGS"
130 CFLAGS="$CFLAGS $PIECFLAGS"
131 CXXFLAGS="$CXXFLAGS $PIECXXFLAGS"
132 LDFLAGS="$LDFLAGS $PIELDFLAGS"
133 AC_LINK_IFELSE([AC_LANG_SOURCE([void main () {}])], [
134 AC_MSG_NOTICE([Compiling with gcc pie et al.])
135 ], [
136 AC_MSG_NOTICE([Compiler does not support -pie et al.])
137 PIECFLAGS=""
138 PIECXXFLAGS=""
139 PIELDFLAGS=""
140 ])
141 CFLAGS="$save_CFLAGS"
142 CXXFLAGS="$save_CXXFLAGS"
143 LDFLAGS="$save_LDFLAGS"
144 ])
145 AC_SUBST(PIELDFLAGS)
146 AC_SUBST(PIECFLAGS)
147 AC_SUBST(PIECXXFLAGS)
148
149 dnl Handle optional sqlite support. If enabled/disabled by the user,
150 dnl do the right thing. If not specified by the user, use it if
151 dnl present.
152 AC_ARG_ENABLE([sqlite],
153 AS_HELP_STRING([--enable-sqlite], [build with sqlite support]),
154 [], dnl ACTION-IF-GIVEN
155 [enable_sqlite=check]) dnl ACTION-IF-NOT-GIVEN
156 sqlite3_LIBS=
157 AS_IF([test "x$enable_sqlite" != xno],
158 [AC_CHECK_LIB([sqlite3], [sqlite3_open],
159 [AC_SUBST([sqlite3_LIBS], [-lsqlite3])
160 AC_DEFINE([HAVE_LIBSQLITE3], [1], [Define to 1 if you have the 'sqlite3' library (-lsqlite3).])],
161 [if test "x$enable_sqlite" != xcheck; then
162 AC_MSG_FAILURE([--enable-sqlite was given, but test for sqlite failed])
163 fi])])
164
165 dnl Handle the option to only build runtime
166 AC_ARG_ENABLE([translator],
167 AS_HELP_STRING([--disable-translator], [build only runtime utilities]),
168 [],
169 [enable_translator="yes"])
170 AM_CONDITIONAL([BUILD_TRANSLATOR], [test "$enable_translator" == "yes"])
171
172 dnl Handle the option to build the crash extension
173 AC_ARG_ENABLE([crash],
174 AS_HELP_STRING([--enable-crash@<:@=DIRECTORY@:>@],
175 [enable crash extension (default is disabled). Optional DIRECTORY
176 is the path to the crash header file (needed if installed in a
177 non-standard location).]),
178 [if test "$enable_crash" != "no"; then
179 dnl Handle custom install dir (if needed)
180 save_CPPFLAGS="$CPPFLAGS"
181 if test "$enable_crash" != "yes"; then
182 staplog_CPPFLAGS=-I$enable_crash
183 CPPFLAGS="${staplog_CPPFLAGS} $CPPFLAGS"
184 AC_SUBST([staplog_CPPFLAGS])
185 fi
186 AC_CHECK_HEADERS([crash/defs.h], [],
187 [AC_MSG_ERROR([cannot find required crash header (crash-devel may need to be installed)])],
188 [
189 #define NR_CPUS 256
190 ])
191 CPPFLAGS="$save_CPPFLAGS"
192 fi],
193 [enable_crash="no"])
194 AM_CONDITIONAL([BUILD_CRASHMOD], [test "$enable_crash" != "no"])
195
196 dnl Handle the option to build the documentation
197 building_docs="no"
198 AC_ARG_ENABLE([docs],
199 AS_HELP_STRING([--enable-docs],
200 [enable building documentation (default on if latex etc. found).]),
201 [enable_docs=$enableval],
202 [enable_docs="check"])
203 AC_CHECK_PROG(have_latex, latex, yes, no)
204 AC_CHECK_PROG(have_dvips, dvips, yes, no)
205 AC_CHECK_PROG(have_ps2pdf, ps2pdf, yes, no)
206 AC_CHECK_PROG(have_latex2html, latex2html, yes, no)
207 if test "x${have_latex}${have_dvips}${have_ps2pdf}${have_latex2html}" != "xyesyesyesyes"; then
208 if test "$enable_docs" == "yes"; then
209 AC_MSG_ERROR([cannot find all tools for building documentation])
210 fi
211 if test "$enable_docs" == "check"; then
212 AC_MSG_WARN([will not build documentation, cannot find all tools])
213 fi
214 fi
215 if test "x${have_latex}${have_dvips}${have_ps2pdf}${have_latex2html}" == "xyesyesyesyes" -a "$enable_docs" != "no"; then
216 building_docs="yes"
217 fi
218 AM_CONDITIONAL([BUILD_DOCS], [test "$building_docs" == "yes"])
219
220
221 dnl Handle the option to build the reference documentation
222 building_refdocs="no"
223 AC_ARG_ENABLE([refdocs],
224 AS_HELP_STRING([--enable-refdocs],
225 [enable building reference documentation (default on if xmlto etc. found and other documentation built).]),
226 [enable_refdocs=$enableval],
227 [enable_refdocs="check"])
228 if test "$building_docs" == "no" -a "$enable_refdocs" == "yes" ; then
229 AC_MSG_ERROR([must use --enable-docs with --enable-refdocs])
230 fi
231 AC_CHECK_PROG(have_xmlto, xmlto, yes, no)
232 if test "$enable_refdocs" == "yes"; then
233 if test "x${have_xmlto}" != "xyes"; then
234 AC_MSG_ERROR([cannot find xmlto for building reference documentation])
235 fi
236 fi
237 if test "x${have_xmlto}" == "xyes" -a "$enable_refdocs" != "no" -a "${building_docs}" == "yes"; then
238 building_refdocs="yes"
239 fi
240 AM_CONDITIONAL([BUILD_REFDOCS], [test "$building_refdocs" == "yes"])
241
242 AC_CHECK_PROG(have_fop, fop, yes, no)
243 if test "x${have_fop}" == "xyes"; then
244 # Due to rhbz505364 / 830266, we must actually test-run fop, not just
245 # hope that it works.
246 AC_MSG_CHECKING([to see if xmlto --with-fop actually works])
247 if xmlto --with-fop pdf ${srcdir}/doc/SystemTap_Tapset_Reference/dummy-tapsets.xml >/dev/null 2>&1; then
248 AC_MSG_RESULT([yes])
249 else
250 AC_MSG_RESULT([it's dead, Jim])
251 have_fop="broken"
252 fi
253 rm -f dummy-tapsets.pdf
254 fi
255 AM_CONDITIONAL([HAVE_FOP], [test "$have_fop" == "yes"])
256 AM_CONDITIONAL([HAVE_XMLTO], [test "$have_xmlto" == "yes"])
257
258 dnl There is a strange bug in older versions of xmlto when generating pdf.
259 dnl https://bugzilla.redhat.com/show_bug.cgi?id=526273
260 dnl So make sure to have a chapter title starting with L plus an refentry.
261 dnl This will make sure the xmlto pdf support test fails on buggy versions.
262 cat > conftest.xml << 'EOF'
263 <?xml version="1.0" encoding="UTF-8"?>
264 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
265 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
266 <book lang="en">
267 <bookinfo><title>foo</title></bookinfo>
268 <chapter id="logging.stp"><title>Logging Tapset</title>
269 <refentry id="API-log"><refnamediv><refname>log</refname>
270 <refpurpose>logging</refpurpose></refnamediv>
271 <refsect1><title>Description</title>
272 <para>baz</para></refsect1></refentry></chapter>
273 </book>
274 EOF
275
276 if test "x${have_xmlto}" == "xyes"; then
277 AC_MSG_CHECKING([for xmlto --stringparam support])
278 xmlto --stringparam man.authors.section.enabled=0 html-nochunks conftest.xml >/dev/null 2>&1
279 if test $? == 0; then
280 have_xmlto_stringparam="yes"
281 AC_MSG_RESULT([yes])
282 else
283 AC_MSG_RESULT([no])
284 fi
285 rm -f conftest.html
286 fi
287 AM_CONDITIONAL([XMLTO_STRINGPARAM], [test "$have_xmlto_stringparam" == "yes"])
288
289 if test "x${building_refdocs}" == "xyes"; then
290 AC_MSG_CHECKING([for xmlto pdf support])
291 # xmlto pdf may work *only* with --with-fop
292 # XXX: To an extent this test is redundant in that the --with-fop test
293 # already ran xmlto --with-fop pdf ....
294 if test "x$have_fop" == "xyes"; then
295 XMLTOPDF_FOP=--with-fop
296 else
297 XMLTOPDF_FOP=
298 fi
299 xmlto $XMLTOPDF_FOP pdf conftest.xml >& /dev/null
300 if test $? == 0; then
301 have_xmlto_pdf="yes"
302 AC_MSG_RESULT([yes])
303 else
304 AC_MSG_RESULT([no])
305 AC_MSG_WARN([Not building reference documentation in PDF format])
306 fi
307 rm -f conftest.pdf
308 fi
309 AM_CONDITIONAL([BUILD_PDFREFDOCS], [test "$have_xmlto_pdf" == "yes"])
310
311 rm -f conftest.xml
312
313 dnl See if we have the nss/nspr headers and libraries
314 AC_ARG_WITH([nss],
315 AS_HELP_STRING([--without-nss],
316 [Do not use NSS even if present]))
317
318 AS_IF([test "x$with_nss" != "xno"], [
319 PKG_CHECK_MODULES([nss], [nss >= 3],
320 [have_nss=yes
321 AC_DEFINE([HAVE_NSS], [1], [Define to 1 if you have the nss libraries.])
322 ], [have_nss=no])
323 ], [have_nss=no])
324
325 AM_CONDITIONAL([HAVE_NSS], [test "${have_nss}" = "yes"])
326
327 dnl Handle dracut directory configuration. Note we hard-code /usr by default,
328 dnl instead of $prefix, because dracut is a system service that doesn't listen
329 dnl at relocatable directories.
330 AC_ARG_WITH([dracutstap],
331 AS_HELP_STRING([--with-dracutstap=DIR],
332 [Install dracut module files in DIR]))
333 AS_IF([test "x$with_dracutstap" != "x"],[dracutstap="$with_dracutstap"],
334 [dracutstap=/usr/lib/dracut/modules.d/99stap])
335 AC_MSG_NOTICE([using dracut module directory $dracutstap])
336 AC_SUBST(dracutstap)
337
338 dnl Handle the option to build the compile server.
339 AC_ARG_ENABLE([server],
340 AS_HELP_STRING([--enable-server],
341 [enable building of stap-server (default on if nss etc. found).]),
342 [enable_server=$enableval],
343 [enable_server="check"])
344
345 if test "$enable_server" != "no"; then
346 dnl See if we have enough libraries and tools to build the compile server
347 if test "x${have_nss}" != "xyes"; then
348 AC_MSG_WARN([will not build systemtap compile server, cannot find nss headers])
349 fi
350 fi
351 AM_CONDITIONAL([BUILD_SERVER], [test "${have_nss}" == "yes" -a "$enable_server" != "no"])
352
353 if test "${have_nss}" != "yes"; then
354 AC_MSG_WARN([compile-server client functionality will be disabled, cannot find nss development files])
355 fi
356
357 dnl See if we have the avahi libraries and headers
358 AC_ARG_WITH([avahi],
359 AS_HELP_STRING([--without-avahi],
360 [Do not use Avahi even if present]))
361
362 AS_IF([test "x$with_avahi" != "xno"], [
363 PKG_CHECK_MODULES([avahi], [avahi-client],
364 [have_avahi=yes
365 AC_DEFINE([HAVE_AVAHI], [1], [Define to 1 if you have the avahi libraries.])
366 ], [have_avahi=no])
367 ], [have_avahi=no])
368
369 AM_CONDITIONAL([HAVE_AVAHI], [test "${have_avahi}" = "yes"])
370
371 if test "${have_avahi}" != "yes"; then
372 AC_MSG_WARN([some compile-server functionality will be restricted, cannot find avahi development files])
373 fi
374
375
376 dnl Look for librpm.
377 AC_ARG_WITH([rpm],
378 [AS_HELP_STRING([--with-rpm],
379 [query rpm database for missing debuginfos])], [], [with_rpm="auto"])
380 if test "$with_rpm" != "no"; then
381 AC_CHECK_LIB(rpm, rpmtsInitIterator, [
382 AC_DEFINE([HAVE_LIBRPM],[1],[have librpm])
383 stap_LIBS="$stap_LIBS -lc -lrpm"
384 have_librpm="yes"], [have_librpm="no"])
385 AC_CHECK_LIB(rpmio, rpmFreeCrypto, [
386 AC_DEFINE([HAVE_LIBRPMIO],[1],[have librpmio])
387 stap_LIBS="$stap_LIBS -lc -lrpmio"
388 have_librpmio="yes"], [have_librpmio="no"])
389 if test "x$have_librpm" != "xyes" -a "$with_rpm" == "yes"; then
390 AC_MSG_ERROR([cannot find librpm])
391 fi
392 if test "x$have_librpmio" != "xyes" -a "$with_rpm" == "yes"; then
393 AC_MSG_WARN([cannot find librpmio])
394 fi
395 fi
396
397 dnl Look for readline.
398 dnl
399 dnl First save the orignal value of LIBS.
400 LIBS_no_readline=$LIBS
401
402 dnl Check how for readline presence and how to link with it. On some
403 dnl systems you need to add a termcap compatible library.
404 have_libreadline="no"
405 AC_MSG_CHECKING([how to link readline libs])
406 for libtermcap in "" tinfo ncursesw ncurses curses termcap; do
407 if test -z "$libtermcap"; then
408 READLINE_LIBS="-lreadline"
409 else
410 READLINE_LIBS="-lreadline -l$libtermcap"
411 fi
412 LIBS="$READLINE_LIBS $LIBS_no_readline"
413 AC_LINK_IFELSE(
414 [AC_LANG_CALL([],[readline])],
415 [have_libreadline="yes"])
416 if test "$have_libreadline" = "yes"; then
417 break
418 fi
419 done
420 if test "$have_libreadline" = "no"; then
421 AC_MSG_RESULT([none])
422 READLINE_LIBS=""
423 else
424 AC_MSG_RESULT([$READLINE_LIBS])
425 AC_DEFINE(HAVE_LIBREADLINE, [1],
426 [Define if you have the readline library (-lreadline).])
427 fi
428 AC_SUBST([READLINE_LIBS])
429 AM_CONDITIONAL([HAVE_LIBREADLINE], [test "$have_libreadline" == "yes"])
430
431 dnl End of readline checks: restore LIBS
432 LIBS=$LIBS_no_readline
433
434 dnl Allow user to choose python3 for /usr/bin/dtrace
435 AC_ARG_WITH([python3],
436 AS_HELP_STRING([--with-python3],[prefer /usr/bin/python3]))
437 AS_IF([test "x$with_python3" = "xyes"],
438 [AC_SUBST(python,[python3])],
439 [AC_SUBST(python,[python])])
440
441 dnl Handle elfutils. If '--with-elfutils=DIR' wasn't specified, used
442 dnl the system's elfutils.
443 build_elfutils=no
444 AC_ARG_WITH([elfutils],
445 AS_HELP_STRING([--with-elfutils=DIRECTORY],
446 [find elfutils source code in DIRECTORY]),
447 [
448 case "$with_elfutils" in
449 yes) AC_MSG_ERROR([--with-elfutils requires an argument]) ;;
450 ''|no) ;;
451 *) build_elfutils=yes ;;
452 esac])
453 AM_CONDITIONAL(BUILD_ELFUTILS, test $build_elfutils = yes)
454 AC_SUBST(elfutils_abs_srcdir, `AS_IF([test $build_elfutils = yes],
455 [cd $with_elfutils && pwd])`)
456
457 if test $enable_translator = yes; then
458 if test $build_elfutils = no; then
459 # Need libdwfl-capable recent elfutils http://elfutils.fedorahosted.org/
460
461 # On modern debian/ubuntu, libebl has been merged into libdw
462 # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=457543
463 save_LIBS="$LIBS"
464 AC_CHECK_LIB(ebl, ebl_get_elfmachine,[ebl_LIBS=-lebl],[ebl_LIBS=])
465 LIBS="$save_LIBS"
466
467 save_LIBS="$LIBS"
468 AC_CHECK_LIB(dw, dwfl_module_getsym,[],[
469 AC_MSG_ERROR([missing elfutils development headers/libraries (install elfutils-devel, libebl-dev, libdw-dev and/or libebl-devel)])],
470 [-Wl,--start-group -ldw $ebl_LIBS -Wl,--end-group -lelf])
471 AC_CHECK_LIB(dw, dwarf_next_unit,[],[
472 AC_MSG_ERROR([elfutils, libdw too old, need 0.148+])],
473 [-Wl,--start-group -ldw $ebl_LIBS -Wl,--end-group -lelf])
474 stap_LIBS="$stap_LIBS -Wl,--start-group -ldw $ebl_LIBS -Wl,--end-group -lelf"
475 LIBS="$save_LIBS"
476 else
477 # We built our own and stap_LDFLAGS points at the install.
478 stap_LIBS="$stap_LIBS -Wl,--start-group -ldw -lebl -Wl,--end-group -lelf"
479 fi
480 fi
481
482 AC_SUBST(stap_LIBS)
483 AC_MSG_NOTICE([stap will link $stap_LIBS])
484
485 # staprun has more modest libelf needs
486 if test $build_elfutils = no; then
487 save_LIBS="$LIBS"
488 dnl this will only succeed with elfutils 0.142+
489 AC_CHECK_LIB(elf,elf_getshdrstrndx,[],[
490 AC_MSG_FAILURE([libelf too old, need 0.142+])])
491 staprun_LIBS="$staprun_LIBS -lelf"
492 LIBS="$save_LIBS"
493 else
494 # We built our own and staprun_LDFLAGS points at the install.
495 staprun_LIBS="$staprun_LIBS -lelf"
496 fi
497
498 AC_SUBST(staprun_LIBS)
499 AC_MSG_NOTICE([staprun will link $staprun_LIBS])
500
501
502 dnl Plop in the build (configure) date
503 date=`date +%Y-%m-%d`
504 AC_DEFINE_UNQUOTED(DATE, "$date", [Configuration/build date])
505 AC_SUBST(DATE, "$date")
506
507 # Before PR4037, we used to arrange to pass CFLAGS+=-m64 for a staprun
508 # being compiled on 32-bit userspace but running against 64-bit kernels.
509 # This is no longer necessary.
510
511 # Use tr1/unordered_map if available
512 AC_LANG_PUSH(C++)
513 AC_CHECK_HEADERS([tr1/unordered_map])
514 AC_CHECK_HEADERS([tr1/memory])
515 AC_CHECK_HEADERS([boost/shared_ptr.hpp])
516 AC_CHECK_HEADERS([boost/utility/string_ref.hpp])
517 AC_LANG_POP(C++)
518
519
520 # Check for Dyninst headers and libraries
521 AC_ARG_WITH([dyninst],
522 AS_HELP_STRING([--with-dyninst=DIRECTORY],
523 [find dyninst headers/libraries in DIRECTORY]))
524
525 case "$with_dyninst" in
526 no) ;;
527 ''|yes) # Try a simple-minded distro search
528 DYNINST_CXXFLAGS="-I/usr/include/dyninst"
529 DYNINST_LDFLAGS="-L/usr/lib64/dyninst -L/usr/lib/dyninst" # XXX both lib paths!?!
530 ;;
531 *) # Use paths in the user-specified prefix
532 DYNINST_CXXFLAGS="-I$with_dyninst/include"
533 DYNINST_LDFLAGS="-L$with_dyninst/lib/" # XXX need lib64 too?
534 ;;
535 esac
536 if test "$with_dyninst" != "no"; then
537 AC_LANG_PUSH(C++)
538 old_CPPFLAGS="$CPPFLAGS"
539 CPPFLAGS="$CPPFLAGS $DYNINST_CXXFLAGS"
540 AC_MSG_NOTICE([checking dyninst support])
541 AC_CHECK_HEADERS([BPatch_object.h], [
542 AC_SUBST(DYNINST_CXXFLAGS)
543 AC_SUBST(DYNINST_LDFLAGS)
544 AC_DEFINE([HAVE_DYNINST],[1],[Define to 1 if Dyninst is enabled])
545 have_dyninst=yes
546 AC_MSG_NOTICE([dyninst support available])])
547 if test -n "$with_dyninst" -a "$have_dyninst" != "yes"; then
548 AC_MSG_ERROR([Dyninst does not appear to be usable])
549 fi
550 CPPFLAGS="$old_CPPFLAGS"
551 AC_LANG_POP(C++)
552 fi
553 AM_CONDITIONAL([HAVE_DYNINST], [test "${have_dyninst}" = "yes"])
554
555
556 dnl Check for the libvirt and libxml2 devel packages
557
558 AC_ARG_ENABLE([virt],
559 AS_HELP_STRING([--enable-virt],
560 [enable building of stapvirt support (default on if libvirt etc. found).]),
561 [enable_virt=$enableval],
562 [enable_virt="check"])
563
564 dnl We require libvirt >= 1.0.2 because stapvirt relies on the
565 dnl virDomainOpenChannel function, which was implemented in 1.0.2.
566 PKG_CHECK_MODULES([libvirt], [libvirt >= 1.0.2], [
567 have_libvirt=yes
568 AC_DEFINE([HAVE_LIBVIRT],[1],[Define to 1 if libvirt development libraries are installed])
569 ], [have_libvirt=no])
570 AM_CONDITIONAL([HAVE_LIBVIRT], [test "${have_libvirt}" = "yes"])
571 PKG_CHECK_MODULES([libxml2], [libxml-2.0], [
572 have_libxml2=yes
573 AC_DEFINE([HAVE_LIBXML2],[1],[Define to 1 if libxml2 development libraries are installed])
574 ], [have_libxml2=no])
575 AM_CONDITIONAL([HAVE_LIBXML2], [test "${have_libxml2}" = "yes"])
576
577 if test "$enable_virt" != "no"; then
578 dnl See if we have enough libraries and tools to build the virt server
579 if test "x${have_libvirt}" != "xyes"; then
580 AC_MSG_WARN([will not build systemtap virt support, cannot find libvirt headers])
581 fi
582 if test "x${have_libxml2}" != "xyes"; then
583 AC_MSG_WARN([will not build systemtap virt support, cannot find xml2 headers])
584 fi
585 fi
586 AM_CONDITIONAL([BUILD_VIRT], [test "${have_libvirt}" == "yes" -a "${have_libxml2}" == "yes" -a "$enable_virt" != "no"])
587
588
589 AC_CACHE_CHECK([for assembler .section "?" flags support], stap_cv_sectionq, [
590 old_CFLAGS="$CFLAGS"
591 CFLAGS="$CFLAGS -Wa,--fatal-warnings"
592 AC_COMPILE_IFELSE([AC_LANG_SOURCE([asm(".section .note.foo,\"?\",\"note\"\n"
593 ".byte 1, 2, 3\n"
594 ".previous\n"
595 ".section .text,\"axG\",\"progbits\",foogroup,comdat\n"
596 ".byte 1\n"
597 ".pushsection .note.foo,\"?\",\"note\"\n"
598 ".byte 4, 5, 6\n"
599 ".popsection\n"
600 ".byte 2\n");])],
601 stap_cv_sectionq=yes, stap_cv_sectionq=no)
602 CFLAGS="$old_CFLAGS"])
603 AC_SUBST(support_section_question)
604 support_section_question=0
605 if test $stap_cv_sectionq = yes; then
606 support_section_question=1
607 fi
608 AC_CONFIG_FILES([includes/sys/sdt-config.h po/Makefile.in])
609
610 if test $build_elfutils = yes -a $enable_translator = yes; then
611 here=`pwd`
612 case "$with_elfutils" in
613 /*) elfutils_srcdir="$with_elfutils" ;;
614 *) elfutils_srcdir="${here}/$with_elfutils" ;;
615 esac
616
617 if ! test -f ${elfutils_srcdir}/configure; then
618 AC_MSG_ERROR([No ${elfutils_srcdir}/configure, forgot to run autoreconf -i?])
619 fi
620 AC_MSG_NOTICE([running ${elfutils_srcdir}/configure])
621
622 save_CFLAGS="$CFLAGS"
623 save_CXXFLAGS="$CXXFLAGS"
624 CXXFLAGS="$CXXFLAGS -fgnu89-inline"
625 CFLAGS="$CFLAGS -fgnu89-inline"
626 gnu89_inline_flag=""
627 AC_COMPILE_IFELSE([AC_LANG_SOURCE([int something ();])], [
628 AC_MSG_NOTICE([Compiling elfutils with gcc -fgnu89-inline])
629 gnu89_inline_flag="-fgnu89-inline"],[
630 AC_MSG_NOTICE([Compiler does not support -fgnu89-inline])])
631 CFLAGS="$save_CFLAGS"
632 CXXFLAGS="$save_CXXFLAGS"
633
634 # Our libdw.so's libebl will look in $ORIGIN/../lib/... but that
635 # $ORIGIN is where libdw.so resides, which is not where there is a ../lib.
636 # Note that $libdir might be using a quoted use of $exec_prefix or $prefix.
637 # So we must make sure to pass those settings to elfutils configure.
638 elfutils_rpath="-Wl,--enable-new-dtags,-rpath,${libdir}/${PACKAGE_NAME}"
639 # Check whether this is a source release, or a source checkout.
640 # We need --enable-maintainer-mode if it isn't a source release.
641 # elfutils.spec is only distributed in source releases.
642 if test -f ${elfutils_srcdir}/elfutils.spec; then
643 need_maintainer_option=""
644 else
645 need_maintainer_option="--enable-maintainer-mode"
646 fi
647 (mkdir -p build-elfutils && cd build-elfutils &&
648 bash ${elfutils_srcdir}/configure --enable-libebl-subdir=${PACKAGE_NAME} \
649 --includedir="${here}/include-elfutils" \
650 --libdir="${here}/lib-elfutils" \
651 --exec-prefix="$exec_prefix" \
652 --prefix="$prefix" \
653 --enable-dwz \
654 ${need_maintainer_option} \
655 CFLAGS="${CFLAGS/-Wall/} $gnu89_inline_flag -fexceptions" \
656 LDFLAGS="$LDFLAGS $elfutils_rpath" &&
657 if test -f ${elfutils_srcdir}/config/version.h.in; then
658 echo Found elfutils/version.h header...
659 else
660 echo elfutils/version.h header not found, need elfutils 0.142+...
661 exit -1
662 fi
663 )
664 if test $? != 0; then exit -1; fi
665 fi
666
667 dnl Optional libselinux support allows stapdyn to check
668 dnl for booleans that would prevent Dyninst from working.
669 AC_ARG_WITH([selinux],
670 AS_HELP_STRING([--without-selinux],
671 [Do not use libselinux even if present]))
672
673 AS_IF([test "x$with_selinux" != "xno"], [
674 PKG_CHECK_MODULES([selinux], [libselinux],
675 [have_selinux=yes
676 AC_DEFINE([HAVE_SELINUX], [1], [Define to 1 if you have the SELinux libraries.])
677 ], [have_selinux=no])
678 ], [have_selinux=no])
679
680 AM_CONDITIONAL([HAVE_SELINUX], [test "${have_selinux}" = "yes"])
681
682 dnl Handle java+byteman support
683 AC_CHECK_PROG(have_javac, javac, yes, no)
684 AC_CHECK_PROG(have_jar, jar, yes, no)
685 if test "$have_javac" != no -a "$have_jar" != no; then
686 echo java found, will try to configure Byteman support
687
688 AC_ARG_WITH([java],
689 [AS_HELP_STRING([--with-java=DIRECTORY],
690 [Specify JDK directory to compile libHelperSDT.so against (default is /usr/lib/jvm/java)])],
691 [],
692 [with_java=/usr/lib/jvm/java])
693 dnl don't use AC_CHECK_FILE here, as that blocks cross-compiling
694 if test ! -d "$with_java"; then
695 with_java=no
696 fi
697 AC_SUBST(JAVADIR, "${with_java}") # always needed to compile
698
699 if test "$with_java" != "no"; then
700 AC_DEFINE_UNQUOTED(HAVE_JAVA, "1", [Flag indicating that libHelperSDT.so is available (can be found in PKGLIBDIR)])
701 fi
702
703 AM_CONDITIONAL([HAVE_JAVA], [test "$with_java" != "no"])
704
705 else
706 AC_MSG_WARN([will not run per-method java probing, missing byteman or java requirements])
707 AM_CONDITIONAL([HAVE_JAVA],false)
708 fi # java+byteman support
709
710 AC_SUBST(ENABLE_NLS, "$USE_NLS")
711 AC_SUBST(localedir, "$localedir")
712 AC_SUBST(LOCALEDIR, "$localedir")
713
714 AC_ARG_WITH([extra-version],
715 AS_HELP_STRING([--with-extra-version=STRING],
716 [Add STRING to stap -V version]))
717 AS_IF([test "x$with_extra_version" != "xno"], [
718 stap_extra_version="$with_extra_version"
719 AC_MSG_NOTICE([Adding extra version $stap_extra_version])], [
720 stap_extra_version=""])
721 AC_DEFINE_UNQUOTED(STAP_EXTRA_VERSION, "$stap_extra_version", [extra stap version code])
722 AC_SUBST(STAP_EXTRA_VERSION, "$stap_extra_version")
723
724 dnl The stap translator stringtable benefits performance-wise from c++11 constructs.
725 AX_CHECK_COMPILE_FLAG([-std=c++11],[cxx11="-std=c++11"],[cxx11=""])
726 AS_IF([test "x$cxx11" != "x"],[
727 AC_MSG_NOTICE([Compiling parts of systemtap with -std=c++11])])
728 AC_SUBST(cxx11)
729
730 dnl This is here mainly to make sure that configure --prefix=... changes
731 dnl the config.h files so files depending on it are recompiled
732 dnl prefix is passed through indirectly in the Makefile.am AM_CPPFLAGS.
733 dnl Formerly: Don't use this directly (when not given it is set to NONE).
734 dnl Currently: inline autoconf's later defaulting
735
736 stap_prefix=$prefix
737 test "$stap_prefix" = NONE && stap_prefix=$ac_default_prefix
738 AC_DEFINE_UNQUOTED(STAP_PREFIX, "$stap_prefix", [configure prefix location])
739 AC_SUBST(STAP_PREFIX, "$stap_prefix")
740
741 AC_CONFIG_HEADERS([config.h:config.in])
742 AC_CONFIG_FILES([Makefile doc/Makefile man/Makefile \
743 doc/beginners/Makefile doc/SystemTap_Tapset_Reference/Makefile \
744 man/stappaths.7 man/systemtap.8 \
745 initscript/config.systemtap initscript/config.stap-server \
746 initscript/systemtap initscript/stap-server \
747 initscript/99stap/module-setup.sh ])
748 AC_CONFIG_SUBDIRS(testsuite)
749 if test $enable_translator == "yes"; then
750 AC_CONFIG_FILES([run-stap], [chmod +x run-stap])
751 fi
752 AC_CONFIG_FILES([dtrace], [chmod +x dtrace])
753 AC_CONFIG_FILES(stapdyn/Makefile)
754 AC_CONFIG_FILES(java/Makefile)
755 AC_CONFIG_FILES([java/stapbm], [chmod +x java/stapbm])
756 AC_CONFIG_FILES(staprun/Makefile)
757 AC_CONFIG_FILES([staprun/run-staprun], [chmod +x staprun/run-staprun])
758 AC_CONFIG_FILES([staprun/guest/stapshd], [chmod +x staprun/guest/stapshd])
759 AC_CONFIG_FILES([staprun/guest/stapsh-daemon], [chmod +x staprun/guest/stapsh-daemon])
760 AC_CONFIG_FILES([staprun/guest/stapsh@.service])
761
762 # Setup "shadow" directory doc/beginners that has the basic directories setup for
763 # xmlto in one directory (through directory links if necessary).
764 # It would be nice to use AC_CONFIG_LINKS, but automake complains when
765 # the src is a directory and not a file.
766 AC_CONFIG_COMMANDS([doc/beginners],
767 [rm -f $ac_abs_top_builddir/doc/beginners/en-US $ac_abs_top_builddir/doc/beginners/build/en-US/testsuite && mkdir -p $ac_abs_top_builddir/doc/beginners/build/en-US && ln -s $ac_abs_top_srcdir/doc/SystemTap_Beginners_Guide/en-US $ac_abs_top_builddir/doc/beginners/en-US && ln -s $ac_abs_top_srcdir/testsuite $ac_abs_top_builddir/doc/beginners/build/en-US/testsuite])
768
769 AC_OUTPUT
770
771 if test "${prefix}" = "/usr/local"; then
772 AC_MSG_NOTICE([])
773 AC_MSG_NOTICE([For a private or temporary build of systemtap, we recommend])
774 AC_MSG_NOTICE([configuring with a prefix. For example, try])
775 AC_MSG_NOTICE([$0 $ac_configure_args --prefix=$HOME/systemtap-${PACKAGE_VERSION}-$$])
776 AC_MSG_NOTICE([Running systemtap uninstalled, entirely out of the build tree,])
777 AC_MSG_NOTICE([is not supported.])
778 fi
This page took 0.067644 seconds and 6 git commands to generate.