164 lines
4.5 KiB
Plaintext
164 lines
4.5 KiB
Plaintext
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
#
|
|
# Copyright (C) 2013-2020 Red Hat, Inc
|
|
#
|
|
# Author: Dodji Seketeli <dodji@redhat.com>
|
|
|
|
#
|
|
# ABIGAIL_INIT
|
|
#
|
|
# Handle the detection of the libabigail header and library files on
|
|
# the system. If these are present, set the 'abigailinc' variable to
|
|
# the compiler option necessary to locate the headers of the library;
|
|
# also set the 'abigaillibs' variable to the compiler/linker option
|
|
# necessary to locate the library.
|
|
#
|
|
# Note that this macro defines the handling of --with-abigail,
|
|
# --with-abigail-include, --with-abigail-lib and
|
|
# --enable-abigail-version-check switches to the configure script.
|
|
#
|
|
# If libabigail has been found, this macro sets the variable
|
|
# HAVE_LIBABIGAIL to 'yes', otherwise, it sets it to 'no'.
|
|
AC_DEFUN([ABIGAIL_INIT],
|
|
[
|
|
AC_ARG_WITH([abigail],
|
|
[AS_HELP_STRING([--with-abigail],
|
|
[Prefix directory for abigail library])],
|
|
[],
|
|
[])
|
|
|
|
AC_ARG_WITH([abigail-include],
|
|
[AS_HELP_STRING([--with-abigail-include],
|
|
[Directory for installed abigail include files])],
|
|
[],
|
|
[])
|
|
|
|
AC_ARG_WITH([abigail-lib],
|
|
[AS_HELP_STRING([--with-abigail-lib],
|
|
[Directory for installed abigail library])],
|
|
[],
|
|
[])
|
|
|
|
AC_ARG_ENABLE(abigail-version-check,
|
|
[AS_HELP_STRING([--enable-abigail-version-check],
|
|
[Enable check for libabigail version])],
|
|
[ENABLE_ABIGAIL_VERSION_CHECK=$enableval],
|
|
[ENABLE_ABIGAIL_VERSION_CHECK=yes])
|
|
|
|
if test x$with_abigail != x -a x$with_abigail != xno; then
|
|
abigailinc="-I$with_abigail/include/libabigail"
|
|
abigaillibs="-L$with_abigail/lib"
|
|
found_abigail_lib=yes
|
|
found_abigail_inc=yes
|
|
fi
|
|
|
|
if test x$with_abigail_include != x -a x$with_abigail != xno; then
|
|
abigailinc="-I$with_abigail_include"
|
|
found_abigail_inc=yes
|
|
fi
|
|
|
|
if test x$with_abigail_lib != x -a x$with_abigail != xno; then
|
|
abigaillibs="-L$with_abigail_lib"
|
|
found_abigail_lib=yes
|
|
fi
|
|
|
|
if test x$abigaillibs = x; then
|
|
AC_CHECK_LIB(abigail, abigail_get_library_version,
|
|
[found_abigail_lib=yes], [], [])
|
|
fi
|
|
|
|
if test x$abigailinc = x; then
|
|
AC_LANG_PUSH(C++)
|
|
AC_CHECK_HEADER([libabigail/abg-version.h],
|
|
[found_abigail_inc=yes], [], [])
|
|
AC_LANG_POP(C++)
|
|
fi
|
|
|
|
if test x$found_abigail_lib = xyes -a x$found_abigail_inc = xyes; then
|
|
HAVE_LIBABIGAIL=yes
|
|
else
|
|
HAVE_LIBABIGAIL=no
|
|
fi
|
|
|
|
#Test whether libabigail is in the gcc source tree.
|
|
if test x$HAVE_LIBABIGAIL != xyes; then
|
|
if test -d $srcdir/libabigail -a -f $srcdir/gcc/gcc.c; then
|
|
libpath='$$r/$(HOST_SUBDIR)/libabigail/src/'"${lt_cv_objdir}"
|
|
abigaillibs="-L$libpath ${abigaillibs}"
|
|
abigailinc='-I${srcdir}/libabigail/include '"${abigailinc}"
|
|
found_abigail_lib=yes
|
|
found_abigail_inc=yes
|
|
HAVE_LIBABIGAIL=yes
|
|
AC_MSG_WARN([using in-tree libabigail, disabling version check]);
|
|
ENABLE_ABIGAIL_VERSION_CHECK=no
|
|
fi
|
|
fi
|
|
|
|
if test x$found_abigail_lib = xyes; then
|
|
abigaillibs="$abigaillibs -Wl,-Bstatic -labigail -Wl,-Bdynamic"
|
|
fi
|
|
|
|
]
|
|
)
|
|
|
|
# IF_ABIGAIL_PRESENT(ACTION-IF-PRESENT)
|
|
AC_DEFUN([IF_ABIGAIL_PRESENT],
|
|
[
|
|
AC_REQUIRE([ABIGAIL_INIT])
|
|
|
|
if test x$HAVE_LIBABIGAIL = xyes; then
|
|
$1
|
|
fi
|
|
]
|
|
)
|
|
|
|
# IF_ABIGAIL_NOT_PRESENT(ACTION-IF-NOT-PRESENT)
|
|
AC_DEFUN([IF_ABIGAIL_NOT_PRESENT],
|
|
[
|
|
AC_REQUIRE([ABIGAIL_INIT])
|
|
if test x$HAVE_LIBABIGAIL != xyes; then
|
|
$1
|
|
fi
|
|
]
|
|
)
|
|
|
|
# ABIGAIL_CHECK_VERSION(MAJOR, MINOR)
|
|
#
|
|
# Test the whether the found major and minor version numbers of the
|
|
# found abigail library is compatible with the MAJOR.MINOR version
|
|
# number given in argument. The result of the test ('yes' or 'no') is
|
|
# put in the variable has_right_abigail_version.
|
|
AC_DEFUN([ABIGAIL_CHECK_VERSION],
|
|
[
|
|
AC_REQUIRE([ABIGAIL_INIT])
|
|
|
|
if test x$ENABLE_ABIGAIL_VERSION_CHECK = xyes; then
|
|
_abigail_saved_CXXFLAGS=$CXXFLAGLS
|
|
_abigail_saved_LDFLAGS=$LDFLAGS
|
|
|
|
CXXFLAGS="$abigailinc"
|
|
LDFLAGS="$abigaillibs"
|
|
|
|
AC_MSG_CHECKING([for version $1.$2 of libabigail])
|
|
AC_LANG_PUSH(C++)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include "abg-version.h"],
|
|
[#if ABIGAIL_VERSION_MAJOR != $1 || ABIGAIL_VERSION_MINOR < $2
|
|
choke here
|
|
#endif
|
|
])
|
|
],
|
|
has_right_abigail_version=yes,
|
|
has_right_abigail_version=no)
|
|
AC_LANG_POP(C++)
|
|
AC_MSG_RESULT([$has_right_abigail_version])
|
|
|
|
CXXFLAGS=$_abigail_saved_CXXFLAGS
|
|
LDFLAGS=$_abigail_saved_LDFLAGS
|
|
else
|
|
# Version checking was disabled, so assume we have the right
|
|
# version of libabigail.
|
|
has_right_abigail_version=yes
|
|
fi
|
|
]
|
|
)
|