From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH] bzip2: Rearrange build order
Date: Wed, 5 Jun 2013 17:22:07 +0200 [thread overview]
Message-ID: <20130605172207.7251ce79@skate> (raw)
In-Reply-To: <8738swej95.fsf@dell.be.48ers.dk>
Dear Peter Korsgaard,
On Wed, 05 Jun 2013 16:15:34 +0200, Peter Korsgaard wrote:
> Thomas> Are you sure there are not already many packages that build
> Thomas> things only once with -fPIC and use that for both the static
> Thomas> and the shared library?
>
> Thomas> What you're proposing here is quite the opposite to what you
> Thomas> merged (from me) in a33baa1ef9dadbec8e45d411c30d636fa6b8872a
> Thomas> (icu: don't build object files twice).
>
> I've never claimed I was consistent ;) What I'm saying is simply that
> the "correct" way to do this, is to build the object files twice similar
> to how E.G. libtool does it.
>
> For something as small (and possibly performance sensitive) as bzip2 I
> think it is worthwhile doing it.
I'm not sure I agree with your idea of making a different decision
depending on the package. Either we decide that all static libraries
should not be built with -fPIC, and we apply this rule on all packages,
or we decide that all static libraries are built with -fPIC, so that we
actually build object files only once.
In fact, I hadn't realized that libtool was building each and every .c
file twice, once without -fPIC for the static library, and once with
-fPIC for the shared library.
I believe we have three choices:
(1) When !BR2_PREFER_STATIC_LIB, pass --enable-shared --disable-static
instead of the current --enable-shared --enable-static. When I did
009d8fceab4db7815502e4b0565fe0ef531d512c, I wasn't aware that
having --enable-static was causing a double build of source files.
Had I realized that, I would have probably suggested a different
solution. If someone builds with !BR2_PREFER_STATIC_LIB, it's
pretty unlikely that the static version of the libraries will be
needed. There might be a few exceptions, but they can be handled
by the user by adding --enable-static to the CONF_OPT of the
specific packages he is interested in.
(2) When !BR2_PREFER_STATIC_LIB, find a way of telling libtool not to
build object files twice, and generate static libraries using the
-fPIC capable object files. It's slightly less efficient, but if
you're building !BR2_PREFER_STATIC_LIB, you're using shared
libraries for most of your applications anyway, so having a small
hit with the few static libraries isn't going to be really
noticeable.
(3) When !BR2_PREFER_STATIC_LIB, keep --enable-shared and
--enable-static as we have today, and make sure that object files
are always built twice, once without -fPIC, and once with. I
believe this is making the build time longer, for situations
(usage of static libraries when !BR2_PREFER_STATIC_LIB) that are
fairly uncommon.
In any case, the solution of "some packages have their static library
objects built without -fPIC, some other packages have their static
library objects built with -fPIC" is not really nice. Where's the
boundary between the first and second category of packages?
Best regards,
Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
next prev parent reply other threads:[~2013-06-05 15:22 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-05 12:56 [Buildroot] [PATCH] bzip2: Rearrange build order Markos Chandras
2013-06-05 13:08 ` Thomas Petazzoni
2013-06-05 13:50 ` Peter Korsgaard
2013-06-05 14:02 ` Markos Chandras
2013-06-05 14:04 ` Thomas Petazzoni
2013-06-05 14:08 ` Markos Chandras
2013-06-05 14:15 ` Peter Korsgaard
2013-06-05 14:25 ` Markos Chandras
2013-06-05 14:48 ` Peter Korsgaard
2013-06-05 15:01 ` Markos Chandras
2013-06-05 15:22 ` Thomas Petazzoni [this message]
2013-06-05 21:56 ` Peter Korsgaard
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=20130605172207.7251ce79@skate \
--to=thomas.petazzoni@free-electrons.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.