diff options
Diffstat (limited to 'gprofng/configure.ac')
-rw-r--r-- | gprofng/configure.ac | 229 |
1 files changed, 229 insertions, 0 deletions
diff --git a/gprofng/configure.ac b/gprofng/configure.ac new file mode 100644 index 00000000000..80bbc8569f5 --- /dev/null +++ b/gprofng/configure.ac @@ -0,0 +1,229 @@ +dnl Process this file with autoconf to produce a configure script. +dnl +dnl Copyright (C) 2021 Free Software Foundation, Inc. +dnl +dnl This file is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 3 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; see the file COPYING3. If not see +dnl <http://www.gnu.org/licenses/>. + +m4_include([../bfd/version.m4]) +m4_include([../config/zlib.m4]) +AC_INIT([gprofng], BFD_VERSION) +AC_CANONICAL_TARGET +AM_INIT_AUTOMAKE([subdir-objects]) +AM_MAINTAINER_MODE + +AC_USE_SYSTEM_EXTENSIONS +AC_PROG_CC +AC_PROG_CXX +AC_PROG_INSTALL +AC_PROG_RANLIB +AM_PROG_AR +gl_PROG_BISON([BISON],[3.0.4]) +if test x$BISON = "x:"; then + AC_MSG_ERROR([Building gprofng requires bison 3.0.4 or later.]) +fi + +AC_DISABLE_SHARED +LT_INIT + +GPROFNG_LIBADD="-L../../libiberty -liberty" +if test "$enable_shared" = "yes"; then + GPROFNG_LIBADD="-L../../libiberty/pic -liberty" +fi +AC_SUBST(GPROFNG_LIBADD) + +# Figure out what compiler warnings we can enable. +# See config/warnings.m4 for details. + +ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual]) +ACX_PROG_CC_WARNING_OPTS([-Wall], [gprofng_cflags]) +ACX_PROG_CC_WARNING_OPTS([-Wno-format-truncation], [GPROFNG_NO_FORMAT_TRUNCATION_CFLAGS]) +ACX_PROG_CC_WARNING_OPTS([-Wno-switch], [GPROFNG_NO_SWITCH_CFLAGS]) +gprofng_cppflags="-U_ASM" +build_collector= +build_src= + +# This is annoying: it means we have to pass --enable-shared explicitly to +# get gprofng, while the configure default is supposed to be that shared libs +# are on by default. But as long as libiberty has code like this, so must +# we... + + case "${target}" in + x86_64-*-linux*) + build_src=true + build_collector=true + ;; + i?86-*-linux*) + build_collector=true + build_collector=true + ;; + aarch64-*-linux*) + build_src=true + build_collector=true + ;; + esac + AC_ARG_ENABLE(gprofng-tools, + AS_HELP_STRING([--disable-gprofng-tools], [do not build gprofng/src directory]), + build_src=$enableval) + +AM_CONDITIONAL([BUILD_COLLECTOR], [test x$build_collector = xtrue]) +AM_CONDITIONAL([BUILD_SRC], [test x$build_src = xtrue]) + +run_tests=false +if test x$build_collector = xtrue; then + AC_CONFIG_SUBDIRS([libcollector]) + if test x${host} = x${target}; then + run_tests=true + fi +fi +AM_CONDITIONAL([RUN_TESTS], [test x$run_tests = xtrue]) +AX_PTHREAD + +# Specify a location for JDK +enable_gprofng_jp= +jdk_inc= +AC_ARG_WITH(jdk, +[AS_HELP_STRING([--with-jdk=PATH], + [specify prefix directory for installed JDK.])]) + +if test "x$with_jdk" != x; then + jdk_inc="-I$with_jdk/include -I$with_jdk/include/linux" + enable_gprofng_jp=yes +else + AC_PATH_PROG([JAVAC], [javac], [javac]) + if test -f $JAVAC; then + x=`readlink -f $JAVAC` + x=`dirname $x` + x=`dirname $x` + if ! test -f $x/include/jni.h; then + x=`dirname $x` + fi + if test -f $x/include/jni.h; then + jdk_inc="-I$x/include -I$x/include/linux" + enable_gprofng_jp=yes + fi + fi +fi +if test "x$enable_gprofng_jp" = x; then + AC_PATH_PROG([JAVA], [java], [java]) + if test -f $JAVA; then + x=`readlink -f $JAVA` + x=`dirname $x` + x=`dirname $x` + if ! test -f $x/include/jni.h; then + x=`dirname $x` + fi + if test -f $x/include/jni.h; then + jdk_inc="-I$x/include -I$x/include/linux" + enable_gprofng_jp=yes + fi + fi +fi +if test "x$enable_gprofng_jp" = x; then + AC_CHECK_HEADER([jni.h], [ enable_gprofng_jp=yes ], [], [] ) +fi +GPROFNG_BROKEN_JAVAC=no +if test "x$enable_gprofng_jp" = x; then + AC_MSG_WARN([ Cannot find the JDK include directory. + gprofng will be build without support for profiling Java applications. + Use --with-jdk=PATH to specify directory for the installed JDK]) +else + AC_DEFINE(GPROFNG_JAVA_PROFILING, 1, [Enable java profiling]) + if test "x$JAVAC" != x; then + cat > configtest.java << EOF +class Simple{ + public static void main(String args[]){ + System.out.println("Hello Java"); + } +} +EOF + if AC_TRY_COMMAND($JAVAC conftest.java &AS_MESSAGE_LOG_FD 2>&1); then + GPROFNG_BROKEN_JAVAC=no + else + GPROFNG_BROKEN_JAVAC=yes + fi + rm -f configtest.* + fi +fi +AC_SUBST(GPROFNG_BROKEN_JAVAC) +AC_SUBST(jdk_inc) + +DEBUG= +GCC_ENABLE([gprofng-debug], [no], [], [Enable debugging output]) +if test "${enable_gprofng_debug}" = yes; then + AC_DEFINE(DEBUG, 1, [Enable debugging output.]) +fi + +# Check if linker supports --as-needed and --no-as-needed options. +AC_CACHE_CHECK(linker --as-needed support, bfd_cv_ld_as_needed, + [bfd_cv_ld_as_needed=no + if $LD --help 2>/dev/null | grep as-needed > /dev/null; then + bfd_cv_ld_as_needed=yes + fi + ]) + +no_as_needed= +if test x"$bfd_cv_ld_as_needed" = xyes; then + no_as_needed='-Wl,--no-as-needed' +fi + +AC_PATH_PROG([EXPECT], [expect]) +AC_CACHE_CHECK([for Tcl supporting try/catch], [ac_cv_libctf_tcl_try], + [ac_cv_libctf_tcl_try=`if test -z $EXPECT; then echo no; else $EXPECT << EOF +if @<:@llength @<:@info commands try@:>@@:>@ then { puts yes } else { puts no } +EOF +fi` +]) +AM_CONDITIONAL(TCL_TRY, test "${ac_cv_libctf_tcl_try}" = yes) + +AM_ZLIB + +# Generate manpages, if possible. +if test $cross_compiling = no; then + AM_MISSING_PROG(HELP2MAN, help2man) + build_man=true +else + build_man=false +fi +AM_CONDITIONAL([BUILD_MAN], [test x$build_man = xtrue]) + +AC_SUBST(LD_NO_AS_NEEDED, [${no_as_needed}]) +AC_SUBST(GPROFNG_CFLAGS, [${gprofng_cflags}]) +AC_SUBST(GPROFNG_NO_FORMAT_TRUNCATION_CFLAGS) +AC_SUBST(GPROFNG_NO_SWITCH_CFLAGS) +AC_SUBST(GPROFNG_CPPFLAGS, [${gprofng_cppflags}]) + +AC_CHECK_DECLS([basename]) +AC_CHECK_FUNCS(clock_gettime strsignal) + +clock_gettime_link= +# At least for glibc, clock_gettime is in librt. But don't +# pull that in if it still doesn't give us the function we want. This +# test is copied from libgomp, and modified to not link in -lrt as +# we're using this for test timing only. +if test "$ac_cv_func_clock_gettime" = no; then + AC_CHECK_LIB(rt, clock_gettime, + [CLOCK_GETTIME_LINK=-lrt + AC_DEFINE(HAVE_CLOCK_GETTIME, 1, + [Define to 1 if you have the `clock_gettime' function.])]) +fi +AC_SUBST(CLOCK_GETTIME_LINK) + +AC_SUBST(BUILD_SUBDIRS) + +AC_CONFIG_FILES([Makefile src/Makefile gp-display-html/Makefile doc/Makefile]) +AC_CONFIG_HEADERS([config.h:common/config.h.in]) + +AC_OUTPUT + |