History log of /freebsd-9.3-release/share/mk/bsd.obj.mk
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 267654 19-Jun-2014 gjb

Copy stable/9 to releng/9.3 as part of the 9.3-RELEASE cycle.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation

# 252048 20-Jun-2013 sjg

share/mk: merge: r241298,243393,249057,251506 from head for bmake support.

Makefile: buildworld etc will be done with make from src tree,
make sure that bmake's -J 15,16 are not passed to it.

Reviewed by: obrien


# 225736 22-Sep-2011 kensmith

Copy head to stable/9 as part of 9.0-RELEASE release cycle.

Approved by: re (implicit)


# 144893 11-Apr-2005 harti

Make sure the only thing that follows .endif or .else is a comment.


# 139761 06-Jan-2005 krion

Remove trailing spaces.


# 139103 21-Dec-2004 ru

Start the dreaded NOFOO -> NO_FOO conversion.

OK'ed by: core


# 128188 13-Apr-2004 ru

Mark the "obj" target with the .PHONY attribute.


# 124503 13-Jan-2004 green

Clarify revision 1.49. Specifically, using ${MAKE} target instead of
depending on a target will cause ${MAKE} to have been "reset" to
the initial value by make(1). This breaks, for example,
make MAKE="make -f subMakefile" clean. The supported way to pass
these sorts of make flags is actually the .MAKEFLAGS variable.


# 124061 02-Jan-2004 green

Fix a very corner case when you want to make cleandir SUBDIRs which
are built using a ${MAKE} that's not just "make".

Test by: make universe (followed by cleandirs)


# 102660 31-Aug-2002 kris

test -h is deprecated; use -L instead.

Submitted by: april <april@oublinet.net>
PR: misc/38724 (part of)
MFC after: 3 days


# 99875 12-Jul-2002 ru

Moved the `distribute' target from bsd.obj.mk to bsd.subdir.mk,
to make it call `install' in the bsd.subdir.mk-driven makefiles
too. (share/examples/Makefile,v 1.29 changed the bsd.prog.mk
to bsd.subdir.mk and many stuff was lost during "make release".
I then merged this change in rev. 1.28.2.2 to work around the
namespace pollution (FILES) in this makefile.)

There was an added complexity here. Both the `distribute' and
`install' targets are recursive (they propagate to SUBDIRs).
So `distribute' first calls `install' in the ${.CURDIR}, then
calls `distribute' in each SUBDIR, etc. The problem is that
`install' (being also recursive) causes the stuff from SUBDIR
to be installed twice, first time thru `install' in ${.CURDIR}
triggered by `distribute', second time by `distribute' run in
the SUBDIR. This problem is not new, but it became apparent
only after I moved the `distribute' target from bsd.obj.mk to
bsd.subdir.mk. My first attempt testing the fix failed due to
this, because the whole world was distributed twice, causing
all the imaginable mess (kerberos5 stuff was installed into both
"base" and "krb5" dists, there was /sbin/init.bak, etc.)
I say the problem is not new because bsd.prog.mk and bsd.lib.mk
makefiles with SUBDIR (even without this fix) had this problem
for years. Try e.g. running ``make distribute DISTDIR=/foo''
from usr.bin/bzip2 or from lib/libcom_err (without the fix) and
watch the output.

So the solution was to make `install' behave non-recursive when
executed by `distribute'. My first attempt in passing SUBDIR=
to the `install' in the `distribute' body failed because of the
way how src/Makefile and src/Makefile.inc1 communicate with each
other. SUBDIR='s assignment precedence on the "make install
SUBDIR=" command line is lowered after src/Makefile wrapper calls
"make ... -f ${.CURDIR}/Makefile.inc1 install" because SUBDIR=
is moved into environment, and Makefile.inc1's assignments now
take higher precedence. This may be fixed someday when we merge
Makefile with Makefile.inc1. For now, this is implemented as a
NO_SUBDIR knob.

Spotted by: Dmitry Pryanishnikov <dmitry@atlantis.dp.ua>
Prodded by: des
MFC after: 3 days


# 99344 03-Jul-2002 ru

Moved checkdpadd target to where it logically belongs.


# 99202 01-Jul-2002 ru

Fixed typos.


# 98546 21-Jun-2002 ru

Quiet ``make objlink'' when NOOBJ is defined.

PR: bin/21142
Submitted by: Craig Leres <leres@ee.lbl.gov>


# 95368 24-Apr-2002 ru

Abuse bsd.obj.mk for defining default distribute target.


# 95306 23-Apr-2002 ru

Merge bsd.obj.mk's version of the _SUBDIR target with bsd.subdir.mk.

Ensure all standard targets honor SUBDIR. Now `make obj' descends into
SUBDIRs even if NOOBJ is set (some descendants may still need an object
directory, but we do not have such precedents). Now `make install' in
non-bsd.subdir.mk makefiles runs `afterinstall' target _after_ `install'
in SUBDIRs, like we do in bsd.subdir.mk. Nothing depended on the wrong
order anyway.

Fixed `distribute' targets (except for the bsd.subdir.mk version) so that
they do not depend on _SUBDIR; `distribute' calls `install' which already
depends on _SUBDIR.

De-standardize `maninstall', otherwise manpages would be installed twice.
(To be revised later.)


# 95254 22-Apr-2002 ru

Fixed _SUBDIR.

Obtained from: bsd.subdir.mk


# 94940 17-Apr-2002 ru

Don't include bsd.own.mk from sys.mk, this makes it impossible
to use ``.if defined()'' inside bsd.own.mk to test for defines
in individual makefiles. For example, setting DEBUG_FLAGS in
Makefile didn't take the desired effect on the STRIP assignment.

Added bsd.init.mk (like in NetBSD) that handles the inclusion
of ../Makefile.inc and bsd.own.mk from all bsd.*.mk files that
"build something".

Back out bsd.own.mk,v 1.15: moved OBJFORMAT initialization back
to sys.mk (several source tree makefiles want to check it early)
and removed MACHINE_ARCH initialization (it's hard to see from
looking at the commitlogs what the problem was at the time, but
now it serves no purpose).

Prohibit the direct inclusion of bsd.man.mk and bsd.libnames.mk.

Protect bsd.obj.mk from repetitive inclusion. Prohibiting the
direct inclusion of bsd.obj.mk might be a good idea too.


# 94410 11-Apr-2002 ru

Really finish the removal of ${LDDESTDIR} in bsd.lib.mk,v 1.55.
bsd.lib.mk,v 1.101 only did that partly.


# 90312 06-Feb-2002 ru

Neither .depend nor ${DEPENDFILE} depend on _SUBDIR.
(One step closer to _SUBDIR <-> _SUBDIRUSE merge.)


# 76896 20-May-2001 ru

Fixed `objwarn' so that it doesn't issue spurious warnings,
especially now that ${.OBJDIR} is canonicalized by make(1).

Urged by: bde
Reviewed by: bde


# 76021 26-Apr-2001 ru

... and do it make(1) way.


# 75867 23-Apr-2001 ru

Fix the fix in rev.1.34.

Makes `cleandir' DTRT if MAKEOBJDIRPREFIX set and not empty,
like in `buildworld' case.


# 68151 01-Nov-2000 obrien

Use test -z rather than -n.

Submitted by: bde


# 64843 19-Aug-2000 markm

Fix the arguments to [(1) (AKA test(1)). If the string being tested
by -n is nonexistant, then the following -d was misinterpreted with
a strange error. By putting double quotes (") around the argument,
we can be sure there is _something_ there that we can check a zero
length against.


# 64784 17-Aug-2000 sheldonh

The previous delta was wrong; an empty MAKEOBJDIRPREFIX should
cause the working directory to be used. Make it so.

When we're more convinced that it'll work, we might try this
to avoid a shell invocation:

.if defined(MAKEOBJDIRPREFIX) && !empty(MAKEOBJDIRPREFIX) &&
exists(${CANONICALOBJDIR}/)

Reported by: bde


# 64712 16-Aug-2000 sheldonh

Do not allow the cleandir target to blow away the entire source
directory when MAKEOBJDIRPREFIX is defined but empty.

Reported by: Vernon Schryver <vjs@calcite.rhyolite.com>


# 53152 14-Nov-1999 marcel

${MACHINE} -> ${MACHINE_ARCH}

All Makefiles now use MACHINE_ARCH for the target architecture.
Unification is required for cross-building.

Tags added to:
sys/boot/Makefile
sys/boot/arc/loader/Makefile
sys/kern/Makefile
usr.bin/cpp/Makefile
usr.bin/gcore/Makefile
usr.bin/truss/Makefile

usr.bin/gcore/Makefile:
fixed typo: MACHINDE -> MACHINE_ARCH


# 50476 27-Aug-1999 peter

$Id$ -> $FreeBSD$


# 44922 21-Mar-1999 bde

Restored objlink. The previous commit was confused about the difference
between OBJLINK and objlink.


# 44755 14-Mar-1999 markm

Bitrot. Remove objlink as it is not pleasant to be downwind.

PR: 8071
Reviewed by: Sheldon Hearn <sheldonh@iafrica.com>


# 38655 30-Aug-1998 jb

BINFORMAT -> OBJFORMAT ready for E-day.


# 36641 04-Jun-1998 peter

Make the whereobj target print it's output without the overhead of
starting another make..
Besides, make -V is broken, since it will print unexpanded variables.


# 35789 06-May-1998 bde

Only include bsd.dep.mk in `mk'files that handle C sources. Abuse
bsd.obj.mk instead of bsd.dep.mk for defining the _SUBDIR target
and a default tags target. Abuse bsd.obj.mk for defining default
cleandepend and depend targets.


# 34576 14-Mar-1998 bde

Improved comparison of ${DPADD} with ${LDADD} for the checkdpadd target.
`BINFORMAT=foo make checkdpadd' in /usr/src now reports only 2 false
negatives (in libss and init). (BINFORMAT=foo is to turn off better
handling of the a.out case.)


# 33815 25-Feb-1998 bde

Remove ${CLEANDIRS} in the default clean rule, so that bsd.prog.mk can
use the default without losing any (currently unused) features.
(CLEANDIRS is only used by for libgmp and libmp via bsd.lib.mk, and
only documented everywhere it is supported except of course where it
is actually used.)


# 31859 19-Dec-1997 bde

Only remove ${CLEANFILES} in the default clean rule. In particular,
don't remove a.out explicitly. a.out should only be generated for
libraries and is removed in the non-default rule in bsd.lib.mk.

Removed undocumented cleanfiles target. It was the same as the
default clean target except it didn't descend into subdirs. It was
different from special clean targets in other ways. This feature
hasn't been missed for more important targets.

Removed unused default cleandepend target. bsd.dep.mk has a better
version which is always used.

Use a better rule for checkdpadd in the BINFORMAT=aout case. This
mainly checks that ld -f is working correctly. The old rule is
still available via `make BINFORMAT=foo checkdpadd' and should be
used to check for regressions under 2.2 where ld -f is not available.


# 25316 30-Apr-1997 bde

Added trailing slash to ${CANONICALOBJDIR} in tests for directories,
so that /usr/obj can be a symlink to an existing directory.


# 22988 22-Feb-1997 peter

Revert $FreeBSD$ to $Id$


# 22700 14-Feb-1997 jdp

In the "cleanobj" target, always remove the old-style "${.CURDIR}/obj"
links if they exist. The old-style links confused make and caused
problems when upgrading from a 2.1.5 or 2.1.6 system.

I will merge this into -2.2.


# 21673 14-Jan-1997 jkh

Make the long-awaited change from $Id$ to $FreeBSD$

This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore. This update would have been
insane otherwise.


# 18566 29-Sep-1996 bde

Don't warn about non-canonical object directories if they have been
forced in any of the standard ways (MAKEOBJDIR was lost in the
previous commit). Simplified the conditionals for this.

Restored comment about MAKEOBJDIR from rev.1.4.

Improved English in comments.


# 18545 28-Sep-1996 nate

The warning was triggering off the unused variable MAKEOBJDIR, instead
of the variable OBJLINK which is used in /etc/make.conf to build 'obj'
links in the current directory. This caused lots of useless warnings
since if OBJLINK is defined ./obj will be created and used.


# 18483 24-Sep-1996 ache

Back out my brackets change, it is definitely make bug, (recently
introduced) because old make version I check do the right job.


# 18481 24-Sep-1996 ache

Add brackets to change bogus make expression priority, i.e.
!defined(X) && $(A) != $(B)
parsed as
(!defined(X) && $(A)) != $(B)
and not as
!defined(X) && ($(A) != $(B))
Probably it should be fixed in make


# 18427 20-Sep-1996 bde

Added a `checkdpadd' target to help check that ${DPADD} is consistent with
${LDADD}. It doesn't handle internal libraries very well yet.


# 18426 20-Sep-1996 bde

Fixed and simplified `whereobj' rule. Use the not-so-new -V feature.
Echoing ${.OBJDIR} would work. but -V is more general.


# 18373 19-Sep-1996 peter

disable the objwarn warning if NOOBJ is set.. We have quite a few places
in the tree that use things like bsd.prog.mk just to get the default
targets like install, tags, obj, clean, cleandir, cleandepend, but do not
actually build anything there.


# 18340 18-Sep-1996 swallace

.TARGETOBJDIR has been removed from make and CANONICALOBJDIR set in
bsd.obj.mk. Also, a make target called objwarn checks to see
if ${.OBJDIR} != ${.CURDIR} and ${.OBJDIR} != ${CANONICALOBJDIR}
and outputs a warning. (No warning for the latter if MAKEOBJDIR or MAKEOBJDIRP
REFIX is set). objwarn is called from all targets in bsd.prog.mk, bsd.kmod.mk,
and bsd.lib.mk.

Reviewed by: bde


# 18051 05-Sep-1996 bde

Fixed `make objlink' (and `make obj' in the (non-default) OBJLINK case).
Running them twice usually destroyed the target binary. E.g., the
second `make objlink' in `make objlink; make; make objlink' replaced
the `cat' binary by a symlink cat@ -> /usr/obj/usr/src/bin/cat.

`ln -fs' is unusable when the target might be a symlink that resolves
to a directory. Then -f applies to a file in the directory and not
to the symlink. This seems to be the standard (and sometimes useful)
behaviour.


# 17168 14-Jul-1996 peter

Fix the recently added whereobj target.

Add missing end-of-line backslash
Remove two extra @ characters


# 17116 12-Jul-1996 pst

Add whereobj target to find that pesky obj dir


# 16663 24-Jun-1996 jkh

Bring in my changes for removing the pestilent obj links (unless you
really want them) from /usr/src. This is the final version of the
patches, incorporating the feedback I've received from -current.


# 15948 27-May-1996 wosch

Add a note that MAKEOBJDIR is an enviroment variable
and does work proper only if set as enviroment variable,
not as global or command line variable.


# 15353 22-Apr-1996 wosch

New variable NOOBJLINK
Create 'obj' directory in current directory instead
a symbolic link to the 'obj' tree if defined. [not set]

Print a warning if 'obj' tree (/usr/obj) does not exist.

Change default 'obj' directory from ``obj.${MACHINE}'' back to
``obj'', unfortunately many Makefiles are wired with the name ``obj''.

Add some comments for variables and targets.


# 15166 09-Apr-1996 wosch

Add targets cleanfiles/clean, cleandir


# 14801 24-Mar-1996 wosch

Obtained from: NetBSD

"obj" directory stuff work