libabigail/include/abg-config.h
Matthias Maennich ade58f9c49 Add (undocumented) support for version suffixes
Allow appending arbitrary text to the libabigail version string
representation. That is useful to identify custom versions of the
library (e.g. development versions or versions of a particular origin).

The feature can be enabled by passing VERSION_SUFFIX to `configure`,
e.g.

  $ configure VERSION_SUFFIX="-dev"

That will extend the version string to (currently) 1.7.0-dev.
The behaviour before this patch remains the default behaviour of not
appending any additional text.

The feature stays intentionally undocumented as the main release of
libabigail will usually not carry a version suffix.

	* configure.ac: add substitution for VERSION_SUFFIX
	* include/abg-version.h.in: add define for ABIGAIL_VERSION_SUFFIX
	* include/abg-config.h(abigail_get_library_version): add support
	for a version suffix
	* src/abg-config.cc(abigail_get_library_version): Likewise.
	* src/abg-tools-utils.cc(get_library_version_string): Likewise.

Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
Signed-off-by: Matthias Maennich <maennich@google.com>
2020-01-09 17:06:31 +00:00

95 lines
2.3 KiB
C++

// -*- Mode: C++ -*-
//
// Copyright (C) 2013-2019 Red Hat, Inc.
//
// This file is part of the GNU Application Binary Interface Generic
// Analysis and Instrumentation Library (libabigail). This library is
// free software; you can redistribute it and/or modify it under the
// terms of the GNU Lesser General Public License as published by the
// Free Software Foundation; either version 3, or (at your option) any
// later version.
// This library is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Lesser Public License for more details.
// You should have received a copy of the GNU Lesser General Public
// License along with this program; see the file COPYING-LGPLV3. If
// not, see <http://www.gnu.org/licenses/>.
/// @file
#ifndef __ABG_CONFIG_H__
#define __ABG_CONFIG_H__
#include <string>
namespace abigail
{
/// This type abstracts the configuration information of the library.
class config
{
std::string m_format_minor;
std::string m_format_major;
unsigned m_xml_element_indent;
std::string m_tu_instr_suffix;
std::string m_tu_instr_archive_suffix;
public:
config();
const std::string&
get_format_minor_version_number() const;
void
set_format_minor_version_number(const std::string& v);
const std::string&
get_format_major_version_number() const;
void
set_format_major_version_number(const std::string& v);
unsigned
get_xml_element_indent() const;
void
set_xml_element_indent(unsigned);
const std::string&
get_tu_instr_suffix() const;
void
set_tu_instr_suffix(const std::string&);
const std::string&
get_tu_instr_archive_suffix() const;
void
set_tu_instr_archive_suffix(const std::string&);
};
extern "C"
{
/// Return the relevant version numbers of the library.
///
/// \param maj the major version number of the library.
///
/// \param min the minor version number of the library.
///
/// \param rev the revision version number of the library.
///
/// \param suf the version suffix of the library.
void
abigail_get_library_version(std::string& maj,
std::string& min,
std::string& rev,
std::string& suf);
}
}//end namespace abigail
#endif //__ABG_CONFIG_H__