Overlinking in base

Baptiste Daroussin bapt at freebsd.org
Thu Nov 6 13:06:02 UTC 2014


On Wed, Nov 05, 2014 at 04:24:54PM -0800, Simon J. Gerraty wrote:
> Baptiste Daroussin <bapt at freebsd.org> wrote:
> > In the second case we could do it via make(1)
> > LIBADD=	liba libc libc
> > this will open something like a ${PATHTOTHELIB}/link.mk which will define
> > DYNAMIC_ADD
> > STATIC_ADD
> > 
> > And this could be recursive.
> 
> We do something like that in the Junos build
> 
> prog makefile might have DPLIBS+= ${LIBFOO}
> which is exactly equivalent to
> 
> LDADD+= -lfoo
> DPADD+= ${LIBFOO}
> 
> but ensures that they stay in sync (not so important now with meta
> mode).
> 
> bsd.libnames.mk can then have
> 
> DPLIBS_libfoo += ${LIBGOO}
> DPLIBS_libgoo += ${LIBZOO}
> 
> All of which is processed by dpadd.mk which you can find in
> contrib/bmake/mk
> Though dpadd.mk ignores DPLIBS_libgoo += ${LIBZOO} if LIBZOO has already
> been added.
> 
I'am about to add something based on the following principle:
https://people.freebsd.org/~bapt/plop.diff

With a bit more changes

The version I have now (a bit different from the patch now :)) allows multiple
things:

1/ simplify the Makefile for users:
LIBADD= m archive util
instead of
DPADD= ${LIBM} ${LIBARCHIVE} ${LIBUTIL}
LDADD= -lm -larchive -lutil

2/ ensure dependencies are automatically tracked
For example -lucl needs -lm adding LIBADD= ucl does the magic by itself

3/ allow to build any single binary statically so far I'm able to build
everything is bin sbin usr.bin and usr.sbin statically (which wasn't doable
before)

3/ hides the private/internal lib from the final user
Do more need to say USEPRIVATELIB because I do use a libunbound it is automatic

regards,
Bapt
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-arch/attachments/20141106/cc0f610c/attachment.sig>


More information about the freebsd-arch mailing list