| # Autoconf script for oprofile |
| # |
| # Copyright 1999 Olaf Titz <olaf@bigred.inka.de> |
| # Adapted for oprofile |
| # |
| # This program is free software; you can redistribute it and/or |
| # modify it under the terms of the GNU General Public License |
| # as published by the Free Software Foundation; either version |
| # 2 of the License, or (at your option) any later version. |
| # |
| |
| AC_PREREQ(2.13) |
| |
| AC_INIT(libop/op_config.h) |
| AM_INIT_AUTOMAKE(oprofile, 0.9.7) |
| AM_CONFIG_HEADER(config.h) |
| |
| AC_CHECK_DECLS([basename], [], [], [[#include <libgen.h>]]) |
| AC_PROG_RANLIB |
| AC_PROG_LIBTOOL |
| PKG_PROG_PKG_CONFIG |
| |
| dnl for the man page |
| DATE="`date '+%a %d %B %Y'`" |
| AC_SUBST(DATE) |
| |
| dnl needed for module build |
| OPROFILE_DIR=`pwd` |
| AC_SUBST(OPROFILE_DIR) |
| |
| # this needs to come before --with-gcc so we link with binutil's version |
| # of libiberty ... sigh |
| AC_ARG_WITH(binutils, |
| [ --with-binutils=dir Path to binutils installation to use], BINUTILSDIR=$withval) |
| |
| if test "$BINUTILSDIR" != ""; then |
| LD="$BINUTILSDIR/ld" |
| if test "$CFLAGS" = ""; then |
| CFLAGS="-g -O2" |
| fi |
| if test "$CXXFLAGS" = ""; then |
| CXXFLAGS="-g -O2" |
| fi |
| CFLAGS="$CFLAGS -I$BINUTILSDIR/include" |
| CXXFLAGS="$CXXFLAGS -I$BINUTILSDIR/include" |
| AC_ARG_WITH(binutils-libname, |
| [ --with-binutils-libname Lib dir name under binutils installation; @<:@lib@:>@]], |
| BINUTILSLIB=$withval) |
| if test "$BINUTILSLIB" = ""; then |
| BINUTILSLIB="lib" |
| fi |
| LDFLAGS="$LDFLAGS -L$BINUTILSDIR/$BINUTILSLIB -Xlinker -R -Xlinker $BINUTILSDIR/$BINUTILSLIB" |
| fi |
| |
| AC_ARG_WITH(gcc, |
| [ --with-gcc=dir Path to GCC installation to use], GCCDIR=$withval) |
| |
| if test "$GCCDIR" != ""; then |
| CC="$GCCDIR/bin/gcc" |
| CXX="$GCCDIR/bin/g++" |
| LDFLAGS="$LDFLAGS -L$GCCDIR/lib -Xlinker -R -Xlinker $GCCDIR/lib" |
| fi |
| |
| AC_PROG_CC |
| AC_PROG_CPP |
| AC_PROG_CXX |
| AC_CHECK_PROG(LD,ld,ld,) |
| test "$LD" || AC_ERROR(ld not found) |
| |
| AX_FIND_KERNEL |
| |
| if test "$OPROFILE_26" = "no"; then |
| AX_CONFIG_MODULE |
| fi |
| |
| AC_ARG_WITH(module-dir, |
| [ --with-module-dir=dir Path to module installation directory], MODINSTALLDIR=$withval) |
| AC_SUBST(MODINSTALLDIR) |
| |
| AC_ARG_WITH(java, |
| [ --with-java=java-home Path to Java home directory (default is "no"; "yes" will use /usr as Java home)], |
| JAVA_HOMEDIR=$with_java, [with_java=no]) |
| |
| if test "x$with_java" = "xyes"; then |
| JAVA_HOMEDIR="/usr" |
| else if test "x$with_java" = "xno"; then |
| JAVA_HOMEDIR= |
| fi |
| fi |
| AC_SUBST(JAVA_HOMEDIR) |
| |
| if test -n "$JAVA_HOMEDIR"; then |
| AC_CHECK_FILE("$JAVA_HOMEDIR/include/jvmti.h",JVMTI_H_EXISTS="yes",) |
| AC_CHECK_FILE("$JAVA_HOMEDIR/include/jvmpi.h",JVMPI_H_EXISTS="yes",) |
| fi |
| |
| AM_CONDITIONAL(BUILD_JVMTI_AGENT, test -n "$JVMTI_H_EXISTS") |
| AM_CONDITIONAL(BUILD_JVMPI_AGENT, test -n "$JVMPI_H_EXISTS") |
| |
| AX_MALLOC_ATTRIBUTE |
| AX_BUILTIN_EXPECT |
| |
| AC_SUBST(EXTRA_CFLAGS_MODULE) |
| |
| topdir=`pwd` |
| AC_SUBST(topdir) |
| |
| AX_EXTRA_DIRS |
| |
| ORIG_SAVE_LIBS="$LIBS" |
| |
| dnl advanced glibc features which we need but may not be present |
| AC_CHECK_FUNCS(sched_setaffinity perfmonctl) |
| |
| AC_CHECK_LIB(popt, poptGetContext,, AC_MSG_ERROR([popt library not found])) |
| AX_BINUTILS |
| AX_CELL_SPU |
| |
| # C++ tests |
| |
| AC_LANG_CPLUSPLUS |
| |
| AX_POPT_CONST |
| AX_CHECK_SSTREAM |
| |
| dnl bfd.h pre 1998 check only for gnu 2.xx series, so gcc 3.0 can't compile it |
| AC_MSG_CHECKING([whether bfd defines bool]) |
| AC_TRY_COMPILE([#include <bfd.h>], [], |
| AC_MSG_RESULT([no]);, |
| AC_MSG_RESULT([yes]); AC_DEFINE(TRUE_FALSE_ALREADY_DEFINED, 1, [whether bfd.h defines bool values])) |
| |
| dnl smart demangler need to know what are the underlined type for some typedef |
| AX_TYPEDEFED_NAME(size_t, "unsigned" "unsigned long", SIZE_T_TYPE) |
| AC_SUBST(SIZE_T_TYPE) |
| AX_TYPEDEFED_NAME(ptrdiff_t, "int" "long", PTRDIFF_T_TYPE) |
| AC_SUBST(PTRDIFF_T_TYPE) |
| |
| AC_PATH_XTRA |
| ORIG_X_SAVE_LIBS="$LIBS" |
| LIBS="$X_PRE_LIBS $LIBS $X_LIBS -lX11 $X_EXTRA_LIBS" |
| X_LIBS="$LIBS" |
| AC_SUBST(X_LIBS) |
| |
| AC_ARG_ENABLE(gui,[ --enable-gui compile with gui component (qt3|qt4|yes|no), |
| if not given or set to yes, gui defaults to qt3],, enable_gui=qt3) |
| |
| if test "x$enable_gui" = "xqt3" || test "x$enable_gui" = "xyes"; then |
| QT_VERSION=3 |
| QT_DO_IT_ALL |
| if test -n "$QT_LIB"; then |
| QT_LIBS="$QT_LIB $QT_LDFLAGS" |
| fi |
| QT_CFLAGS="$QT_INCLUDES" |
| fi |
| |
| if test "x$enable_gui" = "xqt4"; then |
| QT_VERSION=4 |
| PKG_CHECK_MODULES(QT, Qt3Support QtGui QtCore ,,[ |
| echo "You requested QT4 but its build files are not available. Exiting now." |
| exit |
| ]) |
| MOC=$(pkg-config --variable=moc_location QtCore) |
| UIC=$(pkg-config --variable=uic_location QtCore)3 |
| QT_VERSION=$(pkg-config --modversion QtCore) |
| |
| dnl following are some sanity tests and workarounds for buggy QtCore.pc files |
| if test "x$MOC" = "x"; then |
| echo "WARNING: Your QtCore.pc file is buggy, it doesn't provide the variable 'moc_location'" |
| echo "WARNING: I will try to find it in your PATH ..." |
| AC_CHECK_PROG(MOC, moc, moc) |
| if test "x$MOC" = "x"; then |
| echo "WARNING: You can fix this by adding the location of moc to your path." |
| echo "WARNING: Exiting now." |
| exit |
| fi |
| fi |
| |
| if test "x$UIC" = "x3"; then |
| echo "WARNING: Your QtCore.pc file is buggy, it doesn't provide the variable 'uic_location'" |
| echo "WARNING: I will try to find it in your PATH ..." |
| AC_CHECK_PROG(UIChelp, uic3, uic3) |
| if test "x$UIChelp" = "x"; then |
| echo "WARNING: You can fix this by adding the location of uic3 to your path." |
| echo "WARNING: Exiting now." |
| exit |
| else |
| UIC="$UIChelp" |
| fi |
| fi |
| |
| flags_has_qt3support=$(echo $QT_CFLAGS | grep QT3_SUPPORT) |
| if test "x$flags_has_qt3support" = "x" ; then |
| echo "WARNING: Your Qt3Support package is buggy; it dosn't include the 'QT3_SUPPORT' flag" |
| echo "WARNING: adding it manually" |
| QT_CFLAGS="$QT_CFLAGS -DQT3_SUPPORT" |
| fi |
| fi |
| AM_CONDITIONAL(have_qt, test -n "$QT_LIBS") |
| |
| LIBS="$ORIG_X_SAVE_LIBS" |
| |
| dnl enable pch for c++ |
| AC_ARG_ENABLE(pch, |
| [ --enable-pch enable precompiled header (default is disabled)], |
| enable_pch=$enableval, enable_pch=no) |
| if test "$enable_pch" = yes; then |
| AX_CHECK_PRECOMPILED_HEADER(OP_CXXFLAGS) |
| fi |
| |
| AX_CHECK_DOCBOOK |
| |
| dnl finally restore the original libs setting |
| LIBS="$ORIG_SAVE_LIBS" |
| LIBERTY_LIBS="-liberty $DL_LIB $INTL_LIB" |
| BFD_LIBS="-lbfd -liberty $DL_LIB $INTL_LIB $Z_LIB" |
| POPT_LIBS="-lpopt" |
| AC_SUBST(LIBERTY_LIBS) |
| AC_SUBST(BFD_LIBS) |
| AC_SUBST(POPT_LIBS) |
| |
| # do NOT put tests here, they will fail in the case X is not installed ! |
| |
| |
| AX_CFLAGS_OPTION(OP_CFLAGS,[-W]) |
| AX_CXXFLAGS_OPTION(OP_CXXFLAGS,[-W]) |
| AX_CFLAGS_OPTION(OP_CFLAGS,[-Wall]) |
| AX_CXXFLAGS_OPTION(OP_CXXFLAGS,[-Wall]) |
| AX_CFLAGS_OPTION(OP_CFLAGS,[-fno-common]) |
| AX_CXXFLAGS_OPTION(OP_CXXFLAGS,[-fno-common]) |
| AX_CXXFLAGS_OPTION(OP_CXXFLAGS,[-ftemplate-depth-50]) |
| AX_CFLAGS_OPTION(OP_CFLAGS,[-Wdeclaration-after-statement]) |
| |
| dnl enable option to use GCC test coverage |
| AC_ARG_ENABLE(gcov, |
| [ --enable-gcov enable option for gcov coverage testing (default is disabled)], |
| enable_gcov=$enableval, enable_gcov=no) |
| if test "$enable_gcov" = yes; then |
| AX_CFLAGS_OPTION(OP_CFLAGS,[-fprofile-arcs]) |
| AX_CXXFLAGS_OPTION(OP_CXXFLAGS,[-fprofile-arcs]) |
| AX_CFLAGS_OPTION(OP_CFLAGS,[-ftest-coverage]) |
| AX_CXXFLAGS_OPTION(OP_CXXFLAGS,[-ftest-coverage]) |
| fi |
| |
| AC_ARG_ENABLE(werror, |
| [ --disable-werror disable -Werror flag (default is enabled for non-release)], |
| enable_werror=$enableval, enable_werror=yes) |
| if test "$enable_werror" = yes; then |
| # enable -Werror for non-release versions. |
| if echo "$VERSION" | grep git >/dev/null; then |
| AX_CFLAGS_OPTION(OP_CFLAGS,[-Werror]) |
| AX_CXXFLAGS_OPTION(OP_CXXFLAGS,[-Werror]) |
| fi |
| fi |
| |
| AC_ARG_ENABLE(optimization, |
| [ --disable-optimization disable optimization flags (default is enabled)], |
| enable_optimization=$enableval, enable_optimisation=yes) |
| if test "$enable_optimization" = "no"; then |
| CFLAGS=`echo $CFLAGS | sed 's/-O2//g'` |
| CXXFLAGS=`echo $CXXFLAGS | sed 's/-O2//g'` |
| fi |
| |
| AC_ARG_ENABLE(account-check, |
| [ --disable-account-check disable account check (default is enabled)], |
| enable_account_check=$enableval, enable_account_check=yes) |
| |
| AM_CONDITIONAL(CHECK_ACCOUNT, test "x$enable_account_check" = "xyes") |
| |
| AC_SUBST(OP_CFLAGS) |
| AC_SUBST(OP_CXXFLAGS) |
| |
| # fixups for config.h |
| if test "$prefix" = "NONE"; then |
| my_op_prefix="$ac_default_prefix" |
| else |
| my_op_prefix="$prefix" |
| fi |
| my_op_datadir="$my_op_prefix/share" |
| |
| if test "$exec_prefix" = "NONE"; then |
| my_op_exec_prefix="$my_op_prefix" |
| else |
| my_op_exec_prefix="$exec_prefix" |
| fi |
| my_op_bindir="$my_op_exec_prefix/bin" |
| |
| OP_DATADIR=`eval echo "$my_op_datadir/$PACKAGE/"` |
| AC_DEFINE_UNQUOTED(OP_DATADIR, "$OP_DATADIR", [package data directory]) |
| OP_BINDIR=`eval echo "$my_op_bindir/"` |
| AC_DEFINE_UNQUOTED(OP_BINDIR, "$OP_BINDIR", [package binary directory]) |
| OP_DOCDIR=`eval echo "${my_op_prefix}/share/doc/$PACKAGE/"` |
| AC_SUBST(OP_DOCDIR) |
| |
| AC_OUTPUT(Makefile \ |
| m4/Makefile \ |
| libutil/Makefile \ |
| libutil/tests/Makefile \ |
| libutil++/Makefile \ |
| libutil++/tests/Makefile \ |
| libop/Makefile \ |
| libop/tests/Makefile \ |
| libopagent/Makefile \ |
| libopt++/Makefile \ |
| libdb/Makefile \ |
| libdb/tests/Makefile \ |
| libabi/Makefile \ |
| libabi/tests/Makefile \ |
| libregex/Makefile \ |
| libregex/tests/Makefile \ |
| libregex/stl.pat \ |
| libregex/tests/mangled-name \ |
| daemon/Makefile \ |
| daemon/liblegacy/Makefile \ |
| events/Makefile \ |
| utils/Makefile \ |
| doc/Makefile \ |
| doc/xsl/catalog-1.xml \ |
| doc/oprofile.1 \ |
| doc/opcontrol.1 \ |
| doc/ophelp.1 \ |
| doc/opreport.1 \ |
| doc/opannotate.1 \ |
| doc/opgprof.1 \ |
| doc/oparchive.1 \ |
| doc/opimport.1 \ |
| doc/srcdoc/Doxyfile \ |
| libpp/Makefile \ |
| opjitconv/Makefile \ |
| pp/Makefile \ |
| gui/Makefile \ |
| gui/ui/Makefile \ |
| module/Makefile \ |
| module/x86/Makefile \ |
| module/ia64/Makefile \ |
| agents/Makefile \ |
| agents/jvmti/Makefile \ |
| agents/jvmpi/Makefile) |
| |
| AX_COPY_IF_CHANGE(doc/xsl/catalog-1.xml, doc/xsl/catalog.xml) |
| |
| if test "x$enable_gui" = "xno" ; then |
| echo "No GUI will be built as it was explicitly disabled." |
| else |
| if test -z "$QT_LIBS"; then |
| echo "Warning: QT version $QT_VERSION was requested but not found. No GUI will be built." |
| else |
| echo "Building GUI with QT $QT_VERSION" |
| fi |
| fi |
| |
| if ! test "x$enable_account_check" = "xyes"; then |
| : |
| elif test "`getent passwd oprofile 2>/dev/null`" == "" || \ |
| test "`getent group oprofile 2>/dev/null`" == ""; then |
| if test `id -u` != "0"; then |
| echo "Warning: The user account 'oprofile:oprofile' does not exist on the system." |
| echo " To profile JITed code, this special user account must exist." |
| echo " Please ask your system administrator to add the following user and group:" |
| echo " user name : 'oprofile'" |
| echo " group name: 'oprofile'" |
| echo " The 'oprofile' group must be the default group for the 'oprofile' user." |
| else |
| echo "Warning: The user account 'oprofile:oprofile' does not exist on the system." |
| echo " To profile JITed code, this special user account must exist." |
| echo " Please add the following user and group:" |
| echo " user name : 'oprofile'" |
| echo " group name: 'oprofile'" |
| echo " The 'oprofile' group must be the default group for the 'oprofile' user." |
| fi |
| fi |
| |