All of lore.kernel.org
 help / color / mirror / Atom feed
From: aduskett at gmail.com <aduskett@gmail.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v14 1/5] package/libiberty: new package
Date: Mon, 21 Oct 2019 13:04:34 -0700	[thread overview]
Message-ID: <20191021200438.97453-2-aduskett@gmail.com> (raw)
In-Reply-To: <20191021200438.97453-1-aduskett@gmail.com>

From: Adam Duskett <Aduskett@gmail.com>

Some packages, like prelink-cross, will want to use libiberty but do
not bundle their own instance (which is good!).

However, libiberty is made for being bundled in packages: all GNU
packages that use libiberty (gcc, binutils, gdb et al...) all have
their own bundled variant. This means that there is no official
upstream for libiberty; the closest being as part of the
combined binutils-gdb tree.

So we introduce a new host-only package, that installs just libiberty
from a binutils released tarball.

Again, as libiberty is usually bundled in packages, it usually only
install a static version. Furthermore, it does not obey to the usual
--enable-shared and --disable-static flags; it only ever builds a
static version.

Furthermore, this library is not built with -fPIC, but some packages
may pick it to build shared objects. This is the case for host-gdb,
for example, which accidentally picks that library instead of its
internal one.

So, rather than fix the various gdb versions and variants we can use,
we ensure that the libiberty we install is usable in shared objects,
and we ensure it is always built before host-gdb.

Signed-off-by: Adam Duskett <Aduskett@gmail.com>
---
Changes v1 -> v11:
  - Add this patch to the series

 DEVELOPERS                       |  1 +
 package/libiberty/libiberty.hash |  2 ++
 package/libiberty/libiberty.mk   | 27 +++++++++++++++++++++++++++
 3 files changed, 30 insertions(+)
 create mode 100644 package/libiberty/libiberty.hash
 create mode 100644 package/libiberty/libiberty.mk

diff --git a/DEVELOPERS b/DEVELOPERS
index 906ccae006..f10711ee6a 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2426,6 +2426,7 @@ F:	package/keyutils/
 F:	package/libbsd/
 F:	package/libedit/
 F:	package/libgsm/
+F:	package/libiberty/
 F:	package/libinput/
 F:	package/libiscsi/
 F:	package/libpri/
diff --git a/package/libiberty/libiberty.hash b/package/libiberty/libiberty.hash
new file mode 100644
index 0000000000..270f38dfa7
--- /dev/null
+++ b/package/libiberty/libiberty.hash
@@ -0,0 +1,2 @@
+# From ftp://gcc.gnu.org/pub/binutils/releases/sha512.sum
+sha512  d326408f12a03d9a61a9de56584c2af12f81c2e50d2d7e835d51565df8314df01575724afa1e43bd0db45cfc9916b41519b67dfce03232aa4978704492a6994a  binutils-2.32.tar.xz
diff --git a/package/libiberty/libiberty.mk b/package/libiberty/libiberty.mk
new file mode 100644
index 0000000000..17976fdd4f
--- /dev/null
+++ b/package/libiberty/libiberty.mk
@@ -0,0 +1,27 @@
+################################################################################
+#
+# libiberty
+#
+################################################################################
+
+LIBIBERTY_VERSION = 2.32
+LIBIBERTY_SOURCE = binutils-$(LIBIBERTY_VERSION).tar.xz
+LIBIBERTY_SITE = $(BR2_GNU_MIRROR)/binutils
+LIBIBERTY_DL_SUBDIR = binutils
+LIBIBERTY_SUBDIR = libiberty
+
+# We explicitly disable multilib, as we do in binutils.
+# By default, libiberty installs nothing, so we must force it.
+HOST_LIBIBERTY_CONF_OPTS = \
+	--disable-multilib \
+	--enable-install-libiberty
+
+# Some packages (e.g. host-gdb) will pick this library and build shared
+# objects with it. But libiberty does not honour the --enable-shared and
+# --disable-static flags; it only ever builds a static library no matter
+# what. So we must force -fPIC in build flags.
+HOST_LIBIBERTY_CONF_ENV = \
+	CFLAGS="$(HOST_CFLAGS) -fPIC" \
+	LDFLAGS="$(HOST_LDFLAGS) -fPIC"
+
+$(eval $(host-autotools-package))
-- 
2.21.0

  reply	other threads:[~2019-10-21 20:04 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-21 20:04 [Buildroot] [PATCH v14 0/5] gobject-introspection: New package aduskett at gmail.com
2019-10-21 20:04 ` aduskett at gmail.com [this message]
2020-01-16 10:33   ` [Buildroot] [PATCH v14 1/5] package/libiberty: new package Yegor Yefremov
2019-10-21 20:04 ` [Buildroot] [PATCH v14 2/5] package/prelink-cross: " aduskett at gmail.com
2019-10-21 20:04 ` [Buildroot] [PATCH v14 3/5] package/gdb: depend on libiberty aduskett at gmail.com
2019-10-21 20:04 ` [Buildroot] [PATCH v14 4/5] package/pkg-meson.mk: set Python sysconfigdata aduskett at gmail.com
2019-10-22 20:59   ` Thomas Petazzoni
2019-10-22 21:58     ` Arnout Vandecappelle
2019-10-22 22:19       ` Arnout Vandecappelle
2019-10-23 19:48         ` Adam Duskett
2019-10-23 20:42         ` Adam Duskett
2019-10-23 20:50           ` Thomas Petazzoni
2019-10-23 21:03             ` Arnout Vandecappelle
2019-10-23 21:27               ` Arnout Vandecappelle
2019-10-24 16:22                 ` Adam Duskett
2020-01-27 16:55   ` Giulio Benetti
2019-10-21 20:04 ` [Buildroot] [PATCH v14 5/5] package/gobject-introspection: new package aduskett at gmail.com
2020-02-04 10:53   ` Arnout Vandecappelle
2020-01-26 20:42 ` [Buildroot] [PATCH v14 0/5] gobject-introspection: New package Giulio Benetti

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191021200438.97453-2-aduskett@gmail.com \
    --to=aduskett@gmail.com \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.