Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 Nov 2014 15:33:40 +0000
From:      Brooks Davis <brooks@freebsd.org>
To:        Baptiste Daroussin <bapt@freebsd.org>
Cc:        Konstantin Belousov <kostikbel@gmail.com>, arch@freebsd.org, "Simon J. Gerraty" <sjg@juniper.net>
Subject:   Re: Overlinking in base
Message-ID:  <20141106153340.GB76675@spindle.one-eyed-alien.net>
In-Reply-To: <20141106130555.GP10388@ivaldir.etoilebsd.net>
References:  <20141105113839.GG10388@ivaldir.etoilebsd.net> <20141105125431.GD53947@kib.kiev.ua> <20141105125931.GJ10388@ivaldir.etoilebsd.net> <20141105133029.GH53947@kib.kiev.ua> <20141105134006.GL10388@ivaldir.etoilebsd.net> <3912.1415233494@chaos> <20141106130555.GP10388@ivaldir.etoilebsd.net>

next in thread | previous in thread | raw e-mail | index | archive | help

--ZPt4rx8FFjLCG7dd
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Thu, Nov 06, 2014 at 02:05:55PM +0100, Baptiste Daroussin wrote:
> On Wed, Nov 05, 2014 at 04:24:54PM -0800, Simon J. Gerraty wrote:
> > Baptiste Daroussin <bapt@freebsd.org> wrote:
> > > In the second case we could do it via make(1)
> > > LIBADD=3D	liba libc libc
> > > this will open something like a ${PATHTOTHELIB}/link.mk which will de=
fine
> > > DYNAMIC_ADD
> > > STATIC_ADD
> > >=20
> > > And this could be recursive.
> >=20
> > We do something like that in the Junos build
> >=20
> > prog makefile might have DPLIBS+=3D ${LIBFOO}
> > which is exactly equivalent to
> >=20
> > LDADD+=3D -lfoo
> > DPADD+=3D ${LIBFOO}
> >=20
> > but ensures that they stay in sync (not so important now with meta
> > mode).
> >=20
> > bsd.libnames.mk can then have
> >=20
> > DPLIBS_libfoo +=3D ${LIBGOO}
> > DPLIBS_libgoo +=3D ${LIBZOO}
> >=20
> > All of which is processed by dpadd.mk which you can find in
> > contrib/bmake/mk
> > Though dpadd.mk ignores DPLIBS_libgoo +=3D ${LIBZOO} if LIBZOO has alre=
ady
> > been added.
> >=20
> I'am about to add something based on the following principle:
> https://people.freebsd.org/~bapt/plop.diff
>=20
> With a bit more changes
>=20
> The version I have now (a bit different from the patch now :)) allows mul=
tiple
> things:
>=20
> 1/ simplify the Makefile for users:
> LIBADD=3D m archive util
> instead of
> DPADD=3D ${LIBM} ${LIBARCHIVE} ${LIBUTIL}
> LDADD=3D -lm -larchive -lutil

For the list, the reason I proposed LIBADD=3Dfoo initially vs the
DPLIBS model is that I need the library name is a format I can use for
other things such as linking programs to a combination of an archive
containing native code and a collection of llvm bitcode.  In the tesla
branch in perforce I'm using this to perform whole program analysis.
I use this snipit to add entries to both llvm-link command line and the
final ld comamnd.

+.if ${MK_LLVM_INSTRUMENTED} !=3D "no"
+LLVM_LINK_ADD+=3D        ${LIBADD:@L@${LLVM_IR_FILE_${L:tu}:U"No LLVM_IR_F=
ILE_${L:tu} variable defined"}@}
+LLVM_LDADD+=3D   ${LIBADD:@L@${LLVM_IR_FILE_${L:tu}:U"No LLVM_NATIVE_FILE_=
${L:tu} variable defined"}@}
+.endif

Thinking about this in the context of overlinking.  There's an argument we
should use LIBADD to produce an _LIBADD which is a pure list of actual
libraries to be linked so uses like this can use it.  That would also
provide a place to do sorting hacks if required.

-- Brooks

--ZPt4rx8FFjLCG7dd
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iEYEARECAAYFAlRblNQACgkQXY6L6fI4GtRBTACgyw/ih1IJNtIPj+WrbkvUfx9J
PAsAoMGipViAAobjES31kZUxZaAuzoks
=MlnA
-----END PGP SIGNATURE-----

--ZPt4rx8FFjLCG7dd--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20141106153340.GB76675>