2015-01-13 10:34:15 +00:00
|
|
|
m4_define([version_major], [1])
|
|
|
|
m4_define([version_minor], [0])
|
2013-05-07 10:42:53 +00:00
|
|
|
m4_define([version_revision],[0])
|
|
|
|
|
2013-02-28 10:42:57 +00:00
|
|
|
AC_INIT([libabigail],
|
2013-05-07 10:42:53 +00:00
|
|
|
[version_major.version_minor.version_revision],
|
2013-02-28 10:42:57 +00:00
|
|
|
[http://sourceware.org/bugzilla],
|
|
|
|
[libabigail],
|
|
|
|
[http://sourceware.org/libabigail])
|
|
|
|
|
|
|
|
AC_PREREQ([2.63])
|
2014-09-09 10:36:24 +00:00
|
|
|
AC_CONFIG_AUX_DIR([build-aux])
|
2013-02-28 10:42:57 +00:00
|
|
|
AC_CONFIG_HEADER([config.h])
|
|
|
|
AC_CONFIG_SRCDIR([README])
|
|
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
|
|
|
2014-12-27 11:54:28 +00:00
|
|
|
AM_INIT_AUTOMAKE([1.11.1 foreign subdir-objects tar-ustar parallel-tests])
|
2013-02-28 10:42:57 +00:00
|
|
|
AM_MAINTAINER_MODE([enable])
|
|
|
|
|
|
|
|
AM_SILENT_RULES([yes])
|
|
|
|
|
2013-05-07 10:42:53 +00:00
|
|
|
VERSION_MAJOR=version_major
|
|
|
|
VERSION_MINOR=version_minor
|
|
|
|
VERSION_REVISION=version_revision
|
|
|
|
|
|
|
|
AC_SUBST(VERSION_MAJOR)
|
|
|
|
AC_SUBST(VERSION_MINOR)
|
|
|
|
AC_SUBST(VERSION_REVISION)
|
|
|
|
|
2014-08-31 08:34:11 +00:00
|
|
|
AC_ARG_ENABLE(zip-archive,
|
|
|
|
AS_HELP_STRING([--enable-zip-archive=yes|no|auto],
|
|
|
|
[enable bundling of TUs in zip archives (default is auto)]),
|
|
|
|
ENABLE_ZIP_ARCHIVE=$enableval,
|
|
|
|
ENABLE_ZIP_ARCHIVE=auto)
|
|
|
|
|
|
|
|
|
2014-11-05 09:08:33 +00:00
|
|
|
AC_ARG_ENABLE(cxx11,
|
|
|
|
AS_HELP_STRING([--enable-cxx11=yes|no],
|
|
|
|
[enable features that use the C++11 compiler]),
|
|
|
|
ENABLE_CXX11=$enableval,
|
|
|
|
ENABLE_CXX11=no)
|
|
|
|
|
2014-11-19 16:08:10 +00:00
|
|
|
AC_ARG_ENABLE(apidoc,
|
|
|
|
AS_HELP_STRING([--enable-apidoc=yes|no|auto],
|
|
|
|
[enable generation of the apidoc in html]),
|
|
|
|
ENABLE_APIDOC=$enableval,
|
|
|
|
ENABLE_APIDOC=auto)
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(manual,
|
|
|
|
AS_HELP_STRING([--enable-manual=yes|no|auto],
|
|
|
|
[enable generation of the manual in html]),
|
|
|
|
ENABLE_MANUAL=$enableval,
|
|
|
|
ENABLE_MANUAL=auto)
|
|
|
|
|
Parse type-decl and namespace-decl elements
* configure.ac: Add libxml2 dependencies.
* src/abg-corpus.{h,cc}: New files.
* src/abg-hash.{h,cc}: Likewise.
* src/abg-libxml-utils.{h,cc}: Likewise.
* src/abg-reader.{h,cc}: Likewise.
* src/abg-serialize.{h,cc}: Likewise.
* src/abg-writer.h: Likewise.
* src/Makefile.am: Build the new files above.
* src/abg-ir.h (class location): Add public accessors for the value, and
a truth operator. Make the methods be inline.
(class decl_base): Renamed decl into this. Renamed what_decl_kind
into what_kind. Renamed get_context into get_scope. Add virtual
destructor, accessors for location and name.
(class {scope_decl, type_base, type_decl} ): Add virtual dtor.
Re-style.
(struct {decl_base_hash, type_decl_hash}): New hashing functors.
(class {scope_type_decl, namespace_decl}): Add virtual dtor.
* src/abg-ir.cc (location::*): Remove location definitions. There
are now inline in the header.
(class decl_base): Renamed decl into this. Remove most of the
definitions from here as their are now inline in the header.
(scope_decl::~scope_decl, type_base::~type_base)
(type_decl::~type_decl, scope_type_decl::~scope_type_decl): New
definitions.
2013-03-08 12:49:05 +00:00
|
|
|
dnl *************************************************
|
|
|
|
dnl Here is the list of versions of the dependencies
|
|
|
|
dnl *************************************************
|
|
|
|
|
2013-02-28 10:42:57 +00:00
|
|
|
AC_PROG_CXX
|
|
|
|
AC_USE_SYSTEM_EXTENSIONS
|
|
|
|
AC_PROG_INSTALL
|
|
|
|
|
|
|
|
LT_PREREQ([2.2])
|
|
|
|
LT_INIT
|
|
|
|
|
|
|
|
AC_LANG([C++])
|
|
|
|
AC_LANG_COMPILER_REQUIRE
|
|
|
|
|
2015-01-07 12:45:53 +00:00
|
|
|
dnl Check for dependency: libelf, libdw, libebl (elfutils)
|
|
|
|
ELF_LIBS=
|
|
|
|
AC_CHECK_LIB([elf], [elf_end], [ELF_LIBS="-lelf"])
|
|
|
|
AC_CHECK_HEADER([libelf.h],
|
|
|
|
[],
|
|
|
|
[AC_MSG_ERROR([could not find libelf.h])])
|
|
|
|
|
2013-12-07 07:07:54 +00:00
|
|
|
DW_LIBS=
|
|
|
|
AC_CHECK_LIB(dw, dwfl_begin, [DW_LIBS=-ldw])
|
|
|
|
AC_CHECK_HEADER(elfutils/libdwfl.h,
|
|
|
|
[],
|
|
|
|
[AC_MSG_ERROR([could not find elfutils/libdwfl.h installed])])
|
2015-01-07 12:45:53 +00:00
|
|
|
|
|
|
|
|
|
|
|
if test x$ELF_LIBS = x; then
|
|
|
|
AC_MSG_ERROR([could not find elfutils elf library installed])
|
|
|
|
fi
|
2013-12-07 07:07:54 +00:00
|
|
|
|
|
|
|
if test x$DW_LIBS = x; then
|
|
|
|
AC_MSG_ERROR([could not find elfutils dwarf library installed])
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_SUBST(DW_LIBS)
|
2014-09-09 12:53:41 +00:00
|
|
|
AC_SUBST([ELF_LIBS])
|
2013-12-07 07:07:54 +00:00
|
|
|
|
2013-03-27 19:07:03 +00:00
|
|
|
dnl Check for dependency: libxml
|
|
|
|
LIBXML2_VERSION=2.6.22
|
|
|
|
PKG_CHECK_MODULES(XML, libxml-2.0 >= $LIBXML2_VERSION)
|
2013-08-22 14:57:42 +00:00
|
|
|
|
|
|
|
AC_SUBST(LIBXML2_VERSION)
|
2013-03-27 19:07:03 +00:00
|
|
|
AC_SUBST(XML_LIBS)
|
|
|
|
AC_SUBST(XML_CFLAGS)
|
Parse type-decl and namespace-decl elements
* configure.ac: Add libxml2 dependencies.
* src/abg-corpus.{h,cc}: New files.
* src/abg-hash.{h,cc}: Likewise.
* src/abg-libxml-utils.{h,cc}: Likewise.
* src/abg-reader.{h,cc}: Likewise.
* src/abg-serialize.{h,cc}: Likewise.
* src/abg-writer.h: Likewise.
* src/Makefile.am: Build the new files above.
* src/abg-ir.h (class location): Add public accessors for the value, and
a truth operator. Make the methods be inline.
(class decl_base): Renamed decl into this. Renamed what_decl_kind
into what_kind. Renamed get_context into get_scope. Add virtual
destructor, accessors for location and name.
(class {scope_decl, type_base, type_decl} ): Add virtual dtor.
Re-style.
(struct {decl_base_hash, type_decl_hash}): New hashing functors.
(class {scope_type_decl, namespace_decl}): Add virtual dtor.
* src/abg-ir.cc (location::*): Remove location definitions. There
are now inline in the header.
(class decl_base): Renamed decl into this. Remove most of the
definitions from here as their are now inline in the header.
(scope_decl::~scope_decl, type_base::~type_base)
(type_decl::~type_decl, scope_type_decl::~scope_type_decl): New
definitions.
2013-03-08 12:49:05 +00:00
|
|
|
|
2013-08-27 13:18:59 +00:00
|
|
|
dnl Check for dependency: libzip
|
2015-04-24 17:59:19 +00:00
|
|
|
LIBZIP_VERSION=0.10.1
|
2013-08-27 13:18:59 +00:00
|
|
|
|
2014-08-31 08:34:11 +00:00
|
|
|
HAS_LIBZIP=no
|
|
|
|
# The below doesn't seem to work on my box for a reason. Let's write
|
|
|
|
# the damn thing by hand:
|
|
|
|
# PKG_CHECK_EXISTS([libzip >= $LIBZIP_VERSION], [HAS_LIBZIP=yes], [HAS_LIBZIP=no])
|
|
|
|
|
|
|
|
if $PKG_CONFIG --exists --print-errors "libzip >= $LIBZIP_VERSION"; then
|
|
|
|
AC_MSG_NOTICE(found libzip version $LIBZIP_VERSION)
|
|
|
|
HAS_LIBZIP=yes
|
|
|
|
else
|
|
|
|
AC_MSG_NOTICE(no libzip >= $LIBZIP_VERSION has been found)
|
|
|
|
HAS_LIBZIP=no
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test x$ENABLE_ZIP_ARCHIVE = xauto; then
|
|
|
|
if test x$HAS_LIBZIP = xyes; then
|
|
|
|
ENABLE_ZIP_ARCHIVE=yes;
|
|
|
|
else
|
|
|
|
ENABLE_ZIP_ARCHIVE=no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test x$ENABLE_ZIP_ARCHIVE = xyes; then
|
|
|
|
AC_MSG_NOTICE(the zip-archive feature is enabled)
|
|
|
|
else
|
|
|
|
AC_MSG_NOTICE(the zip-archive feature is disabled)
|
|
|
|
fi
|
|
|
|
|
|
|
|
FOUND_LIBZIP=no
|
|
|
|
if test x$ENABLE_ZIP_ARCHIVE = xyes; then
|
|
|
|
PKG_CHECK_MODULES(LIBZIP, libzip >= $LIBZIP_VERSION)
|
|
|
|
FOUND_LIBZIP=yes
|
|
|
|
AC_SUBST(LIBZIP_VERSION)
|
|
|
|
AC_SUBST(LIBZIP_LIBS)
|
|
|
|
AC_SUBST(LIBZIP_CFLAGS)
|
|
|
|
AC_DEFINE([WITH_ZIP_ARCHIVE], 1, [compile the zip archive support])
|
|
|
|
AC_DEFINE([HAVE_LIBZIP], 1, [Defined to 1 if the libzip library is available])
|
|
|
|
fi
|
2013-08-27 13:18:59 +00:00
|
|
|
|
2014-08-31 08:34:11 +00:00
|
|
|
AM_CONDITIONAL(ENABLE_ZIP_ARCHIVE, test x$ENABLE_ZIP_ARCHIVE = xyes)
|
2013-08-27 13:18:59 +00:00
|
|
|
DEPS_CPPFLAGS="$XML_CFLAGS $LIBZIP_CFLAGS"
|
|
|
|
AC_SUBST(DEPS_CPPFLAGS)
|
|
|
|
|
2014-11-05 09:08:33 +00:00
|
|
|
dnl Handle conditional use of a C++11 compiler
|
|
|
|
if test x$ENABLE_CXX11 = xyes; then
|
|
|
|
AC_DEFINE([WITH_CXX11], 1, [Defined to 1 if a C++11 compiler is used])
|
|
|
|
fi
|
|
|
|
|
|
|
|
AM_CONDITIONAL(ENABLE_CXX11, test x$ENABLE_CXX11 = xyes)
|
|
|
|
|
2014-11-19 16:08:10 +00:00
|
|
|
dnl Check for the presence of doxygen program
|
|
|
|
|
|
|
|
if test x$ENABLE_APIDOC != xno; then
|
|
|
|
AC_CHECK_PROG(FOUND_DOXYGEN, doxygen, yes, no)
|
|
|
|
if test x$ENABLE_APIDOC = xauto; then
|
|
|
|
if test x$FOUND_DOXYGEN = xyes; then
|
|
|
|
ENABLE_APIDOC=yes
|
|
|
|
else
|
|
|
|
ENABLE_APIDOC=no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL(ENABLE_APIDOC, test x$ENABLE_APIDOC = xyes)
|
|
|
|
|
|
|
|
dnl Check for the presence of the sphinx-build program
|
|
|
|
|
|
|
|
if test x$ENABLE_MANUAL != xno; then
|
|
|
|
AC_CHECK_PROG(FOUND_SPHINX_BUILD, sphinx-build, yes, no)
|
|
|
|
if test x$ENABLE_MANUAL = xauto; then
|
|
|
|
if test x$FOUND_SPHINX_BUILD = xyes; then
|
|
|
|
ENABLE_MANUAL=yes
|
|
|
|
else
|
|
|
|
ENABLE_MANUAL=no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL(ENABLE_MANUAL, test x$ENABLE_MANUAL = xyes)
|
|
|
|
|
|
|
|
dnl Set the list of libraries libabigail depends on
|
|
|
|
|
2015-01-26 21:08:54 +00:00
|
|
|
DEPS_LIBS="$XML_LIBS $LIBZIP_LIBS $ELF_LIBS $DW_LIBS"
|
2013-08-27 13:18:59 +00:00
|
|
|
AC_SUBST(DEPS_LIBS)
|
|
|
|
|
2013-03-21 22:42:41 +00:00
|
|
|
if test x$ABIGAIL_DEVEL != x; then
|
2014-09-09 10:52:07 +00:00
|
|
|
CFLAGS="-g -Wall -Wextra -Werror"
|
|
|
|
CXXFLAGS="-g -Wall -Wextra -Werror"
|
2013-03-21 22:42:41 +00:00
|
|
|
fi
|
|
|
|
|
2015-03-31 10:16:45 +00:00
|
|
|
HAS_EM_AARCH64=no
|
|
|
|
AC_CHECK_DECL([EM_AARCH64],
|
|
|
|
[HAS_EM_AARCH64=yes],
|
|
|
|
[HAS_EM_AARCH64=no],
|
|
|
|
[[#include <elf.h>]])
|
|
|
|
|
|
|
|
if test x$HAS_EM_AARCH64 = xyes; then
|
|
|
|
AC_DEFINE([HAVE_EM_AARCH64_MACRO],
|
|
|
|
1,
|
|
|
|
[Defined to 1 if elf.h has EM_AARCH64 macro defined])
|
|
|
|
fi
|
|
|
|
|
|
|
|
HAS_EM_TILEPRO=no
|
|
|
|
AC_CHECK_DECL([EM_TILEPRO],
|
|
|
|
[HAS_EM_TILEPRO=yes],
|
|
|
|
[HAS_EM_TILEPRO=no],
|
|
|
|
[[#include <elf.h>]])
|
|
|
|
|
|
|
|
if test x$HAS_EM_TILEPRO = xyes; then
|
|
|
|
AC_DEFINE([HAVE_EM_TILEPRO_MACRO],
|
|
|
|
1,
|
|
|
|
[Defined to 1 if elf.h has EM_TILEPR0 macro defined])
|
|
|
|
fi
|
|
|
|
|
|
|
|
HAS_EM_TILEGX=no
|
|
|
|
AC_CHECK_DECL([EM_TILEGX],
|
|
|
|
[HAS_EM_TILEGX=yes],
|
|
|
|
[HAS_EM_TILEGX=no],
|
|
|
|
[[#include <elf.h>]])
|
|
|
|
|
|
|
|
if test x$HAS_EM_TILEGX = xyes; then
|
|
|
|
AC_DEFINE([HAVE_EM_TILEGX_MACRO],
|
|
|
|
1,
|
|
|
|
[Defined to 1 if elf.h has EM_TILEGX macro defined])
|
|
|
|
fi
|
|
|
|
|
2013-02-28 10:42:57 +00:00
|
|
|
AC_CONFIG_FILES([Makefile
|
2013-08-22 14:57:42 +00:00
|
|
|
libabigail.pc
|
2014-11-18 22:32:50 +00:00
|
|
|
include/Makefile
|
|
|
|
include/abg-version.h
|
|
|
|
doc/Makefile
|
|
|
|
doc/manuals/Makefile
|
|
|
|
src/Makefile
|
|
|
|
tools/Makefile
|
2014-11-20 10:26:30 +00:00
|
|
|
tests/Makefile
|
|
|
|
tests/data/Makefile])
|
2013-02-28 10:42:57 +00:00
|
|
|
|
Canonicalize types either early or late after TU reading
While trying to diff two identical files (abidiff foo.so foo.so) it
appeared that canonicalizing types during e.g, the DWARF reading
process was leading to subtle errors because it's extremely hard to
know when a type is complete. That is, during the building of a class
type C, a pointer to C can be built before C is complete. Worse, even
after reading the DIE (from DWARF) of class C, there can be DIE seen
later in the translation unit that modifies type C. In these late
cases, one needs to wait -- not only until C is fully built, but also
sometimes, after the translation unit is fully built -- to
canonicalize C and then the pointer to C. This kind of things.
So now there are two possible points in time when canonicalization of
a type can happen. It can happen early, when the type is built. This
is the case for basic types and composite types for which all
sub-types are canonicalized already. It can happen late, right after
we've finished reading the debug info for the current translation
unit.
So this patch fixes the IR traversal and uses that to walk the
translation unit (or even types) after it's built. It does away with
the first attempt to perform early canonicalizing only.
The patch also handles type canonicalizing while reading xml-abi
format.
* include/abg-fwd.h (is_class_type)
(type_has_non_canonicalized_subtype): Declare new functions.
(is_member_type): Remove the overload that takes a decl_base_sptr.
It's superfluous. We just need the one that takes a
type_base_sptr.
* include/abg-ir.h (translation_unit::{is_constructed,
set_is_constructed}): Add new methods.
(class_decl::has_virtual_member_functions): Likewise.
(class decl_base): Makes it virtually inherit ir_traversable_base.
(class type_base): Make this virtually inherit traversable_base
too.
(type_base::canonicalize): Renamed enable_canonical_equality
into this.
(type_base::traverse): Declare new virtual method.
(canonicalize): Renamed enable_canonical_equality into this.
(scope_type_decl::traverse): Declare new virtual method.
(namespace_decl::get_pretty_representation): Declare new virtual
method.
(function_type::traverse): Likewise.
(class_decl::base_spec::traverse): Likewise.
(ir_node_visitor::visit): Remove the overloads and replace each of
them with a pair of ...
(ir_node_visitor::{visit_begin, visit_end}): ... of these.
* include/abg-traverse.h (traversable_base::visiting): New
method.
(traversable_base::visiting_): New data member.
(traversable_base::traversable_base): New constructor.
* src/abg-ir.cc ({scope_decl, type_decl, namespace_decl,
qualified_type_def, pointer_type_def, reference_type_def,
array_type_def, enum_type_decl, typedef_decl, var_decl,
function_decl, function_decl::parameter, class_decl,
class_decl::member_function_template,
class_decl::member_class_template, function_tdecl,
class_tdecl}::traverse): Fix this to properly set the
traversable_base::visiting_ flag and to reflect the new signatures
of the ir_node_visitor methods.
({type_base, scope_type_decl, function_type,
class_decl::base_spec}::traverse): New method.
(type_base::get_canonical_type_for): Handle the case of the type
already having a canonical type. Properly hash the type using the
dynamic type hasher. Look through declaration-only classes to
consider the definition of the class instead. Fix logic to have a
single pointer of return, to ease debugging.
(canonicalize): Renamed enable_canonical_equality into this.
(namespace_decl::get_pretty_representation): Define new method.
(ir_node_visitor::visit): Replace each of these overloads with a
pair of visit_begin/visit_end ones.
(translation_unit::priv::is_constructed_): New data member.
(translation_unit::priv::priv): Initialize it.
(translation_unit::{is_constructed, set_is_constructed}): Define
new methods.
(is_member_type(const decl_base_sptr)): Remove.
(is_class_type(decl_base *d)): Define new function.
(class_decl::has_virtual_member_functions): Define new method.
(equals(const class_decl&, const class_decl&, change_kind*)): If
the containing translation unit is not constructed yet, do not
take virtual member functions in account when comparing the
classes. This is because when reading from DWARF, there can be
DIEs that change the number of virtual member functions after the
DIE of the class. So one needs to start taking virtual members
into account only after the translation unit has been constructed.
(class non_canonicalized_subtype_detector): Define new type.
(type_has_non_canonicalized_subtype): Define new function.
* src/abg-corpus.cc (symtab_build_visitor_type::visit): Renamed
this into symtab_build_visitor_type::visit_end.
* src/abg-dwarf-reader.cc (die_type_map_type): New typedef.
(die_class_map_type): This is now a typedef on a map of
Dwarf_Off/class_decl_sptr.
(read_context::{die_type_map_, alternate_die_type_map_,
types_to_canonicalize_, alt_types_to_canonicalize_}): New data
members.
(read_context::{associate_die_to_decl,
associate_die_to_decl_primary}): Make these methods public.
(read_context::{associate_die_to_type,
lookup_type_from_die_offset, is_wip_class_die_offset,
types_to_canonicalize, schedule_type_for_canonicalization}):
Define new methods.
(build_type_decl, build_enum_type)
(build_class_type_and_add_to_ir, build_qualified_type)
(build_pointer_type_def, build_reference_type, build_array_type)
(build_typedef_type, build_function_decl): Do not canonicalize
types here.
(maybe_canonicalize_type): Define new function.
(build_ir_node_from_die): Take a new flag that says if the ir node
is a member type/function or not. Early-canonicalize base types.
Canonicalize composite types that have only canonicalized
sub-types. Schedule the other types for late canonicalizing. For
class types, early canonicalize those that are non-member types,
that are fully constructed and that have only canonicalized
sub-types. Adjust to the new signature of build_ir_node_from_die.
(get_scope_for_die, build_namespace_decl_and_add_to_ir)
(build_qualified_type, build_pointer_type_def)
(build_reference_type, build_array_type, build_typedef_type)
(build_var_decl, build_function_decl): Adjust for the new
signature of build_ir_node_from_die.
(build_translation_unit_and_add_to_ir): Likewise. Perform the
late canonicalizing of the types that have been scheduled for
that.
(build_class_type_and_add_to_ir): Return a class_decl_sptr, not a
decl_base_sptr. Adjust for the new signature of
build_ir_node_from_die. Early canonicalize member types that are
created and added to a given class, or schedule them for late
canonicalizing.
* src/abg-reader.cc (class read_context::{m_wip_classes_map,
m_types_to_canonicalize}): New data members.
(read_context::{clear_types_to_canonicalize,
clear_wip_classes_map, mark_class_as_wip, unmark_class_as_wip,
is_wip_class, maybe_canonicalize_type,
schedule_type_for_late_canonicalizing,
perform_late_type_canonicalizing}): Add new method definitions.
(read_context::clear_per_translation_unit_data): Call
read_context::clear_types_to_canonicalize().
(read_translation_unit_from_input): Call
read_context::perform_late_type_canonicalizing() at the end of the
function.
(build_function_decl): Fix the function type canonicalizing (per
translation) that was already in place. Do the canonicalizing of
these only when the type is fully built. Oops. This was really
brokend. Also, when the function type is constructed, consider it
for type canonicalizing.
(build_type_decl): Early canonicalize basic types.
(build_qualified_type_decl, build_pointer_type_def)
(build_pointer_type_def, build_reference_type_def)
(build_array_type_def, build_enum_type_decl, build_typedef_decl):
Handle the canonicalizing for these composite types: either early
or late.
(build_class_decl): Likewise. Also, mark this class a 'being
built' until it's fully built. This helps the canonicalizing code
to know that it should leave a class alone until it's fully built.
* tests/test-ir-walker.cc (struct name_printing_visitor): Adjust
to the visitor methods naming change.
* configure.ac: Generate the tests/runtestcanonicalizetypes.sh
testing script from tests/runtestcanonicalizetypes.sh.in.
* tests/runtestcanonicalizetypes.sh.in: Add the template for the
new runtestcanonicalizetypes.sh script that test for type
canonicalizing.
* tests/Makefile.am: Add the new runtestcanonicalizetypes.sh
regression testing script to the build system.
Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2015-02-13 19:20:57 +00:00
|
|
|
dnl Some test scripts are generated by autofoo.
|
|
|
|
AC_CONFIG_FILES([tests/runtestcanonicalizetypes.sh], [chmod +x tests/runtestcanonicalizetypes.sh])
|
|
|
|
|
2013-02-28 10:42:57 +00:00
|
|
|
AC_OUTPUT
|
2014-08-31 09:17:03 +00:00
|
|
|
|
|
|
|
AC_MSG_NOTICE([
|
|
|
|
=====================================================================
|
|
|
|
Libabigail: $VERSION_MAJOR.$VERSION_MINOR.$VERSION_REVISION
|
|
|
|
=====================================================================
|
|
|
|
|
|
|
|
Here is the configuration of the package:
|
|
|
|
|
|
|
|
Prefix : ${prefix}
|
|
|
|
Source code location : ${srcdir}
|
|
|
|
C Compiler : ${CC}
|
|
|
|
C++ Compiler : ${CXX}
|
|
|
|
|
|
|
|
OPTIONAL FEATURES:
|
|
|
|
Enable zip archives : ${ENABLE_ZIP_ARCHIVE}
|
2014-11-19 16:38:38 +00:00
|
|
|
Use a C++-11 compiler : ${ENABLE_CXX11}
|
2014-11-19 16:08:10 +00:00
|
|
|
Generate html apidoc : ${ENABLE_APIDOC}
|
|
|
|
Generate html manual : ${ENABLE_MANUAL}
|
2014-08-31 09:17:03 +00:00
|
|
|
])
|