Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Mar 1999 08:47:02 +1100
From:      Bruce Evans <bde@zeta.org.au>
To:        current@FreeBSD.ORG, sheldonh@iafrica.com
Subject:   Re: Proposal: Drop OBJLINK option
Message-ID:  <199903142147.IAA18464@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>I have a proposal regarding the OBJLINK option; let's drop it.

No, it is quite useful for actually working with the objects (it saves
some `make whereobj's...).

>Currently, OBJLINK breaks world when NOAOUT is undefined -- that is, for
>the legacy build.  This is because making the objlink target for aout
>libraries blows away the existing objlinks that have already been
>created for building ELF libraries.

OBJLINK is not useful for `make world' or `make aout-to-elf' so don't
use it for them.  In particular, don't put it in sys.mk, /etc/make.conf
or /etc/make.conf.local so that it gets used for all invocations of `make'.

>The result is that a.out libraries are installed where ELF libraries
>should be, and their ELF counterparts aren't installed at all.

This is unfortunate, but it's a deficiency of the legacy build, not of
OBJLINK.  The build can't be expected to handle all types of junk that
may be in the source directories.  obj subdirectories may also break
it.  Some of these problems can be solved by running `make cleandir'
once or twice as mentioned in your followup to the PR.  `make world'
doesn't do this automatically because it would usually just double the
amount of time required for cleaning.

>I've spoken to some folks who've been around a while (my FreeBSD mentor
>and a colleague who's into NetBSD) and have an understanding of why the
>objlink functionality exists... hysterical raisins only.

Not quite.  obj links were originally used to permit building objects
in a separate tree.  `make' only supported building in the current
directory, or in the obj subdirectory (which may be a symlink to to
the actual directory), or in a machine-dependent subdirectory.  The
obj symlink case was used (unconditionally for `make world') to build
the objects in /usr/obj.  This was bad because it required writing to
the source tree, and for other reasons.  Then when `make' was changed
to support building objects in a separate obj directly, the OBJLINK
macro was added to support building the links anyway, since they are
useful for working with the objects.

>If it were simply tautologous, there'd be no reason to remove it. But
>since it's blowing up in people's faces (two PR's at least) and since we
>have "a better way" that _doesn't_ blow up, I vote to retire the beast.

People shouldn't use it if they don't know what it is for.

The links should be named differently so that they aren't treated specially
by `make'.

Bruce


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




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