view agent/configure.ac @ 46:faa4f10212da 1.0.3

Bump to 1.0.3 review-thread: http://icedtea.classpath.org/pipermail/heapstats/2014-August/000431.html
author KUBOTA Yuji <kubota.yuji@lab.ntt.co.jp>
date Fri, 22 Aug 2014 10:14:25 +0900
parents d7859e0788f6
children c1862433d438
line wrap: on
line source

                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.59)
AC_INIT([HeapStats],[1.0.3],[heapstats@icedtea.classpath.org],[heapstats_agent])
AC_CONFIG_SRCDIR([./src])
AC_CONFIG_AUX_DIR([./m4])
AC_CONFIG_MACRO_DIR([./m4])
AM_INIT_AUTOMAKE
AM_MAINTAINER_MODE
AC_CACHE_SAVE
AC_DISABLE_OPTION_CHECKING

LDFLAGS+=" -Wl,-z,noexecstack"

# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
AM_PROG_AS
AC_DISABLE_STATIC
AM_DISABLE_STATIC
AC_PROG_LIBTOOL
AC_SUBST(LIBTOOL_DEPS)
AC_PROG_AWK
AC_CACHE_SAVE

# Checks for libraries.
AC_CHECK_LIB([pcre],[main],,AC_MSG_ERROR([PCRE library was not found.]))
AC_CHECK_LIB([netsnmp],[main],,AC_MSG_ERROR([Net-SNMP library was not found.]))
AC_CACHE_SAVE

# Checks for header files.
AC_HEADER_STDC
AC_HEADER_DIRENT
AC_HEADER_SYS_WAIT
AC_HEADER_TIME
AC_HEADER_STDBOOL
AC_CHECK_HEADERS([ \
  stddef.h stdint.h stdlib.h stdio.h link.h \
  fcntl.h limits.h string.h \
  unistd.h sys/time.h sys/socket.h \
  ], [], [AC_MSG_ERROR([Header files to need were not found.])])
AC_CHECK_HEADERS([pcre.h],
  [], [AC_MSG_ERROR([Header files of PCRE were not found.])])
AC_CHECK_HEADERS([net-snmp/net-snmp-config.h],
  [], [AC_MSG_ERROR([Header files of Net-SNMP were not found.])])
AC_CHECK_HEADERS([net-snmp/net-snmp-includes.h],
  [], [AC_MSG_ERROR([Header files of Net-SNMP were not found.])],
  [#include <net-snmp/net-snmp-config.h>])
AC_CHECK_HEADERS([bfd.h],
  [], [AC_MSG_ERROR([Header files of binutils were not found.])])
AC_CACHE_SAVE

# Checks for compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_C_VOLATILE
AC_C_BIGENDIAN()
AC_CACHE_SAVE

# Checks for typedefs, structures.
AC_TYPE_OFF_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_STRUCT_TM
AC_CHECK_TYPES([ptrdiff_t])
AC_CACHE_SAVE

# Checks for library functions.
AC_FUNC_MEMCMP
AC_FUNC_STRFTIME
AC_FUNC_FORK
AC_FUNC_STAT
AC_FUNC_CLOSEDIR_VOID
AC_FUNC_MALLOC
AC_FUNC_MMAP
AC_CHECK_FUNCS([ gettimeofday localtime_r \
  memmove memset \
  strchr strrchr strstr strdup strtol \
  realpath mkdir rmdir unlink \
  socket uname \
  madvise posix_fadvise munmap \
  ],,AC_MSG_ERROR([Header files to need were not found.]))

AC_CHECK_FUNCS([netsnmp_transport_open_client],
  [
    AC_DEFINE(HAVE_NETSNMP_TRANSPORT_OPEN_CLIENT)
  ]
  ,[
    AC_CHECK_FUNCS([netsnmp_tdomain_transport],,[
      AC_MSG_ERROR([Functions to need were not found in Net-SNMP library.])
    ])
  ])
AC_CACHE_SAVE

# get JDK path -----------------------------------------------------------------

AC_ARG_WITH([jdk],AC_HELP_STRING([--with-jdk@<:@=PATH@:>@],
  [Path to JDK home directory (JAVA_HOME). @<:@default=/usr/lib/jvm/java-openjdk@:>@]))

AC_MSG_CHECKING([for JAVA_HOME])
if test "$with_jdk" != ""; then
  JDK_DIR="$with_jdk"
  AC_MSG_RESULT($JDK_DIR)
else
  AC_MSG_RESULT(none)
  AC_MSG_CHECKING([for default openjdk home directory])
  if test -d /usr/lib/jvm/java-openjdk && test -r /usr/lib/jvm/java-openjdk ; then
    JDK_DIR=/usr/lib/jvm/java-openjdk
    AC_MSG_RESULT($JDK_DIR)
  else
    AC_MSG_RESULT(none)
    AC_PATH_PROG(JAVA_PATH, java , : , /etc/alternatives)
    AC_MSG_CHECKING([for java configured by alternatives])
    if test -L $JAVA_PATH; then
      JDK_DIR=`/bin/ls "$JAVA_PATH" -l | $AWK '{print $11;}' | sed -e 's:bin/java::g'`
      AC_MSG_RESULT($JDK_DIR)
    else
      AC_MSG_RESULT(none)
    fi
  fi
fi

AC_MSG_CHECKING([for JAVA_HOME])
if test "($JDK_DIR)" = "" || test ! -d $JDK_DIR || test ! -r $JDK_DIR || test ! -d $JDK_DIR/include/ || test ! -r $JDK_DIR/include/ ; then
  AC_MSG_RESULT(no)
  AC_MSG_ERROR([JDK directory (JAVA_HOME) was not found.])
fi

AC_MSG_RESULT(yes)
AC_SUBST(JDK_DIR)

# end JDK path -----------------------------------------------------------------

# VMStructs --------------------------------------------------------------------

AC_ARG_ENABLE(VMStructs, AC_HELP_STRING([--enable-vmstructs@<:@=yes/no@:>@],
  [Use symbol of VMStructs in libjvm.so . @<:@default=no@:>@]))

VMSTRUCTS_CXX_FLAGS=""
JVM_LIB_DIR=""
if test "$enable_vmstructs" = "yes" ; then

  AC_MSG_CHECKING([for symbol of VMStructs in jvm shared-library])

  for archPath in i386 amd64 ; do
    if test -d $JDK_DIR/jre/lib/$archPath/ ; then
      JVM_LIB_DIR=`echo $JDK_DIR/jre/lib/$archPath`
      break
    fi
  done
  
  if test "$JVM_LIB_DIR" = "" ; then
    AC_MSG_RESULT(no)
    AC_MSG_ERROR([JDK shared-library arch directory was not found.])
  fi

  if test -d $JVM_LIB_DIR/server/ ; then
    JVM_LIB_DIR+=`echo /server`
  elif test -d $JVM_LIB_DIR/client/ ; then
    JVM_LIB_DIR+=`echo /client`
  else
    AC_MSG_RESULT(no)
    AC_MSG_ERROR([JDK shared-library directory was not found.])
  fi

  RESULT_SYMBOL=`$NM -D $JVM_LIB_DIR/libjvm.so 2>/dev/null | grep gHotSpotVMStructs`
  if test $? -ne 0 || test "$RESULT_SYMBOL" = "" ; then
    AC_MSG_RESULT(no)
    AC_MSG_ERROR([Symbol of VMStructs was not found in libjvm.so .])
  fi

  VMSTRUCTS_CXX_FLAGS="-DUSE_VMSTRUCTS"
  AC_MSG_RESULT(yes)
fi

AC_SUBST(VMSTRUCTS_CXX_FLAGS)

# end VMStructs ----------------------------------------------------------------

# get Net-SNMP-Config ----------------------------------------------------------

AC_PATH_PROGS(NET_SNMP_CFG_PATH, net-snmp-config-x86_64 net-snmp-config, :, 
  /bin:/sbin/:/usr/bin)

NET_SNMP_LIB_FLAGS=`$NET_SNMP_CFG_PATH --agent-libs`
if test $? -ne 0 ; then
  AC_MSG_ERROR([Could not get LDFLAGS from net-snmp-cfg.])
fi
AC_SUBST(NET_SNMP_LIB_FLAGS)

# end Net-SNMP-Config ----------------------------------------------------------

# check bfd --------------------------------------------------------------------

AC_ARG_WITH([bfd],AC_HELP_STRING([--with-bfd@<:@=PATH@:>@],
  [Path to libbfd library. @<:@default=autosearch@:>@]))
AC_ARG_WITH([bfd],AC_HELP_STRING([--with-iberty@<:@=PATH@:>@],
  [Path to libiberty library. @<:@default=autosearch@:>@]))

BFD_PATH=""
IBERTY_FLAG=0
IBERTY_PATH=""

BFD_SYMBOL="bfd_openr"
IBERTY_SYMBOL="hex_value"

AC_MSG_CHECKING([for BFD library])
if test "$with_bfd" != ""; then
  BFD_PATH="$with_bfd"
  AC_MSG_RESULT($BFD_PATH)
  
  AC_MSG_CHECKING([for symbol in BFD library])
  # search symbol for shared library
  RESULT_SYMBOL=`$NM -D $BFD_PATH 2>/dev/null | grep $BFD_SYMBOL`
  if test $? -ne 0 || test "$RESULT_SYMBOL" = "" ; then
    
    # search symbol for static library
    RESULT_SYMBOL=`$NM -g $BFD_PATH 2>/dev/null | grep $BFD_SYMBOL`
    if test $? -ne 0 || test "$RESULT_SYMBOL" = "" ; then
      AC_MSG_RESULT(none)
      AC_MSG_ERROR([Symbol to need was not found in bfd library.])
    fi
  fi
  AC_MSG_RESULT(ok)
  
  # Check designated library is static library
  RESULT_SYMBOL=`$NM -g $BFD_PATH 2>/dev/null | grep $IBERTY_SYMBOL`
  if test $? -eq 0 && test "$RESULT_SYMBOL" != "" ; then
    IBERTY_FLAG=1
  fi
else
  AC_MSG_RESULT(none)
  AC_MSG_CHECKING([for symbol in BFD library])
  
  BFD_TARGET=`ls --sort=extension {/usr,/usr/local,}/lib*/libbfd*.{a,so}* 2>/dev/null`
  for tmpPath in $BFD_TARGET; do
    if test -f $tmpPath ; then
      
      # search symbol for shared library
      RESULT_SYMBOL=`$NM -D $tmpPath 2>/dev/null | grep $BFD_SYMBOL`
      if test $? -eq 0 && test "$RESULT_SYMBOL" != "" ; then
        AC_MSG_RESULT($tmpPath)
        BFD_PATH=`echo $tmpPath`
        break
      fi
      
      # search symbol for static library
      RESULT_SYMBOL=`$NM -g $tmpPath 2>/dev/null | grep $BFD_SYMBOL`
      if test $? -eq 0 && test "$RESULT_SYMBOL" != "" ; then
        AC_MSG_RESULT($tmpPath)
        BFD_PATH=`echo $tmpPath`
        IBERTY_FLAG=1
        break
      fi
    fi
  done
fi

AC_MSG_CHECKING([for BFD library])
if test "$BFD_PATH" = "" || test ! -f $BFD_PATH ; then
  AC_MSG_RESULT(no)
  AC_MSG_ERROR([BFD library was not found.])
fi
AC_MSG_RESULT(yes)

if test $IBERTY_FLAG -ne 0 ; then
  AC_MSG_NOTICE([BFD library designate need iberty library.])
  
  AC_MSG_CHECKING([for iberty])
  if test "$with_iberty" != "" ; then
    IBERTY_PATH="$with_iberty"
    AC_MSG_RESULT($IBERTY_PATH)
  else
    AC_MSG_RESULT(none)
    
    AC_MSG_CHECKING([for symbol in iberty library])
    IBERTY_TARGET=`ls --sort=extension {/usr,/usr/local,}/lib*/libiberty*.{a,so}* 2>/dev/null`
    for tmpPath in $IBERTY_TARGET; do
      
      # search symbol for shared library
      RESULT_SYMBOL=`$NM -D $tmpPath 2>/dev/null | grep $IBERTY_SYMBOL`
      if test $? -eq 0 && test "$RESULT_SYMBOL" != "" ; then
        AC_MSG_RESULT($tmpPath)
        IBERTY_PATH=`echo $tmpPath`
        
        break
      fi
      
      # search symbol for static library
      RESULT_SYMBOL=`$NM -g $tmpPath 2>/dev/null | grep $IBERTY_SYMBOL`
      if test $? -eq 0 && test "$RESULT_SYMBOL" != "" ; then
        AC_MSG_RESULT($tmpPath)
        IBERTY_PATH=`echo $tmpPath`
        
        break
      fi
    done
  fi
  
  AC_MSG_CHECKING([for iberty library])
  if test "$IBERTY_PATH" = "" || test ! -f $IBERTY_PATH ; then
    AC_MSG_RESULT(no)
    AC_MSG_ERROR([iberty library was not found.])
  fi
  AC_MSG_RESULT(yes)
fi

MASK_LIBNAME="s:.*/\?lib\(.*\)\.\(so\|a\):\1:g"
MASK_LIBPATH="s:\(.*\)/\?lib.*\.\(so\|a\):\1:g"

LIB_NAME=`eval "echo $BFD_PATH | sed -e \`echo \'$MASK_LIBNAME\'\`"`
LIB_PATH=`eval "echo $BFD_PATH | sed -e \`echo \'$MASK_LIBPATH\'\`"`
LDFLAGS+=`echo " -L$LIB_PATH -l$LIB_NAME"`

if test $IBERTY_FLAG -ne 0; then
  LIB_NAME=`eval "echo $IBERTY_PATH | sed -e \`echo \'$MASK_LIBNAME\'\`"`
  LIB_PATH=`eval "echo $IBERTY_PATH | sed -e \`echo \'$MASK_LIBPATH\'\`"`
  LDFLAGS+=`echo " -L$LIB_PATH -l$LIB_NAME"`
fi

# end bfd ----------------------------------------------------------------------

CXXFLAGS=" -g -Wall -Wno-strict-aliasing"

# set sse2 --------------------------------------------------------------------

AC_ARG_ENABLE(PerfomFlag, AC_HELP_STRING([--enable-sse2@<:@=yes/no@:>@],
  [Enable sse2 compile flags. @<:@default=no@:>@]))

if test "$enable_sse2" = "yes" ; then
  CXXFLAGS+=" -msse2 -DSSE2"
  CCASFLAGS+=" -DSSE2"
fi

# end sse2 --------------------------------------------------------------------

# set sse3 --------------------------------------------------------------------

AC_ARG_ENABLE(PerfomFlag, AC_HELP_STRING([--enable-sse3@<:@=yes/no@:>@],
  [Enable sse3 compile flags. @<:@default=no@:>@]))

if test "$enable_sse3" = "yes" ; then
  CXXFLAGS+=" -msse3 -DSSE3 -DSSE2"
  CCASFLAGS+=" -DSSE2"
fi

# end sse3 --------------------------------------------------------------------

# set sse4.1 ------------------------------------------------------------------

AC_ARG_ENABLE(PerfomFlag, AC_HELP_STRING([--enable-sse4@<:@=yes/no@:>@],
  [Enable sse4 compile flags. @<:@default=no@:>@]))

if test "$enable_sse4" = "yes" ; then
  CXXFLAGS+=" -msse4.1 -DSSE4_1 -DSSE3 -DSSE2"
  CCASFLAGS+=" -DSSE2 -DSSE4_1"
fi

# end sse4.1 ------------------------------------------------------------------

# set avx --------------------------------------------------------------------

AC_ARG_ENABLE(PerfomFlag, AC_HELP_STRING([--enable-avx@<:@=yes/no@:>@],
  [Enable intel-avx compile flags. @<:@default=no@:>@]))

if test "$enable_avx" = "yes" ; then
  CXXFLAGS+=" -mavx -DAVX -DSSE4_1 -DSSE3 -DSSE2"
  CCASFLAGS+=" -DSSE2 -DSSE4_1 -DAVX"
fi

# end avx --------------------------------------------------------------------

# set debug --------------------------------------------------------------------

AC_ARG_ENABLE(DebugFlag, AC_HELP_STRING([--enable-debugflag@<:@=yes/no@:>@],
  [Enable debug compile flags. @<:@default=no@:>@]))

if test "$enable_debugflag" = "yes" ; then
  CXXFLAGS+=" -fprofile-arcs -ftest-coverage"
  LDFLAGS+=" -lgcov "
else
  CXXFLAGS+=" -O2"
fi

# end debug --------------------------------------------------------------------

AC_CONFIG_FILES([Makefile src/Makefile])
AC_CONFIG_FILES([heapstats.conf])

AC_OUTPUT