Commit Graph

720 Commits

Author SHA1 Message Date
stas
9b4a1c7a67 - Partially revert r200417. config.h brings several definitions,
that appears to be actually used.  Without config.h included
  cross-build of world failed (at least for ARM).
2009-12-17 12:42:45 +00:00
delphij
815391c360 Remove unnecessary includes.
Reviewed by:	rodrigc
2009-12-11 23:20:02 +00:00
stefanf
cd137e08f9 Add a missing space to the error message when execvp() failed. 2009-12-05 13:12:04 +00:00
obrien
40d7e62509 Catch up with r144020's /Dir_FindFile/Path_FindFile/ 2009-11-17 19:35:39 +00:00
obrien
ee88dde1cb Garbage collect some old #ifdef'ed code from 1994 that causes vi's '%'
to be unable to find a match in Path_FindFile().
2009-11-17 16:26:45 +00:00
fjoe
8c2c0fd2b0 Reset UPTODATE gnodes after remaking makefiles when make
is not going to be restarted: such nodes could be marked UPTODATE
without doing rebuild due to remakingMakefiles being TRUE.
2009-10-18 11:28:31 +00:00
fjoe
8fb21c7ec5 Exit with non-zero error code in case of errors
when make is run with -k and not parallel (compat) make is run.
2009-10-18 11:26:09 +00:00
delphij
d9ff11dbb2 Use strlcpy() instead of manually setting the last byte of the array to \0. 2009-06-23 23:34:46 +00:00
des
b00c30b5ff Add volatile to sig_atomic_t where it was missing.
MFC after:	1 week
2009-06-14 21:39:52 +00:00
fjoe
aff2f6a35a Avoid infinite loops when remaking makefiles not only
for Makefile targets but also for targets they depend on.
2009-04-07 19:49:38 +00:00
obrien
86d5fdbc4b Partially revert r186559. 2009-02-03 15:27:29 +00:00
fjoe
3a68abc6f4 Remove duplicate OPTFLAGS definition. 2009-02-02 06:25:57 +00:00
imp
414d2060bb Sort the options, per style(9).
Reviewed by:	obrien@
2009-02-02 02:05:58 +00:00
imp
9333293735 David doesn't consider the prior -s behavior a bug. Back out this
change.
2009-01-31 23:17:33 +00:00
imp
0bdc05bc53 Unbreak make -s. There's about a 10% performance improvement with -s
in many environments.  The recent --- blah --- reintroduction has
killed.  That output makes almost no sense when all the other output
is silenced.
2009-01-30 16:12:32 +00:00
rdivacky
22410c51db Remove inlining of functions that are used mostly in different object files.
This gets rid of gnu89 style inlining. Also silence gcc by assigning two
variables NULL. This lets use to remove NO_WERROR.

Approved by:	kib (mentor)
Approved by:	harti
2009-01-20 17:15:12 +00:00
obrien
9b3fbd4704 Don't enable -Q by default - I've fixed the rescue build issue. 2009-01-13 06:53:53 +00:00
obrien
2fd77860b9 Note that r186713 also contained a change to VarAdd where we propagate the
newly created 'Var' back to the caller.
Also, back out an accidentally commented WIP comment.
2009-01-06 16:24:22 +00:00
obrien
a3f555f083 + Add the -Q be-quiet flag for parallel jobs.
- Enable -Q by default for the moment - there is something weird
  going on in the rescue build.
2009-01-03 10:14:01 +00:00
obrien
489c6b7af5 1. Add the ability to tweak the token output before targets in job mode.
E.g.,  .MAKE.JOB.PREFIX=${.newline}---[${.MAKE.PID}]
   would produce

   ---[1234] target ---

2. Added ${.newline} as a simple means of being able to include '\n' in the
   assignment of .MAKE.JOB.PREFIX

Obtained from:	NetBSD
2008-12-29 10:26:02 +00:00
obrien
5d8be9f4c7 Consistently use Var_SetGlobal(). 2008-12-29 08:05:49 +00:00
trhodes
a83406ae2e Fix up after last commit:
Bump doc date;
Kill hard sentence breaks;
Fix commas by moving them off their own line.
2008-12-27 00:17:41 +00:00
luigi
a371cf7a49 Clarify the behaviour of conditionals when dealing with comparisons.
In particular, point out that string comparison can only use != and ==
(how weird, given that the underlying call to strcmp returns more
information), that floating point values are correctly interpreted
as numbers, and that the left-hand side must be a variable expansion.

MFC after:	3 weeks
2008-12-26 22:31:45 +00:00
fjoe
95c5b12c17 Exit with error code 2 when run with -k (continue if errors) and build failed. 2008-12-18 12:16:51 +00:00
ache
536d05c2a2 Since in some cases (when found obsolete) 'make' can be builded earlier
at 'upgrade_checks' target, put arc4random_uniform() into
__FreeBSD_version ifdef.
2008-09-29 16:13:28 +00:00
ache
714809ddf1 Use arc4random_uniform(3) 2008-08-07 22:22:41 +00:00
ed
7383a7e483 Add POSIX -p flag to make(1).
This article [1] describes the -p flag for make(1):

	Write to standard output the complete set of macro definitions and
	target descriptions. The output format is unspecified.

We already support a similar flag (-d g1), but unlike -p, it still
executes commands. Our implementation just turns it into -d g1, but also
sets flag `printGraphOnly', which will cause make(1) to skip execution.

[1] http://www.opengroup.org/onlinepubs/009695399/utilities/make.html

Reviewed by:	imp
PR:		standards/99960
2008-07-30 21:18:38 +00:00
obrien
a889941894 Note that the .POSIX special target disables the "Remaking Makefiles" feature. 2008-06-27 14:35:33 +00:00
ru
98fbc814ae Fix splitting into words of the .for expression to allow for
spaces in values.  Without this change, the following valid
call broke due to parsing of .MAKEFLAGS in bsd.symver.mk:

cd /usr/src/lib/libc && make -n DEBUG_FLAGS="-DFOO -DBAR"

Spotted by:	Igor Sysoev
Submitted by:	Maxim Dounin, ru
MFC after:	1 week
2008-03-24 12:33:28 +00:00
ru
430a85c91d Fix bugs in the previous revision. 2008-03-24 09:47:44 +00:00
obrien
2095d4da4d If the special target .MAKEFILEDEPS exists, then enable the
"remaking makefiles" feature.  Otherwise, follow traditional Pmake behavior.
2008-03-12 14:51:47 +00:00
obrien
7658c18ee9 If the special target .MAKEFILEDEPS exists, then enable the
"remaking makefiles" feature.  Otherwise, follow traditional Pmake behavior.
(hash table will be regenerated and committed follow this commit)
2008-03-12 14:50:58 +00:00
yar
979862c6e0 The non-POSIX environment variable MAKE was superseded
by MAKEFLAGS ages ago, so don't mention it in comments.

Tested with:	cmp(1)
2008-03-05 20:24:38 +00:00
yar
4905cb8cf9 Don't forget to set MAKEFLAGS in the childs' environment
from the .MAKEFLAGS global variable even if it's empty or
unset.  This means setting MAKEFLAGS to just an empty string
in the latter case.

If not doing so, make(1) behaved inconsistently WRT MAKEFLAGS.
In particular, it would let a `-f foo' option down to sub-makes
if .MAKEFLAGS was unset.  E.g.,

	env MAKEFLAGS="-f mymakefile" make

would pass `-f mymakefile' down to sub-makes via their environment
(unless mymakefile added something to .MAKEFLAGS).
But any additional options appearing would change this behaviour to
not passing `-f mymakefile' to sub-makes, as in:

	env MAKEFLAGS="-f mymakefile" make -D DUMMY

or

	env MAKEFLAGS="-f mymakefile -D DUMMY" make

(unless mymakefile cleared .MAKEFLAGS).

Also make(1) would leave MAKEFLAGS at its initial value if the
makefile set .MAKEFLAGS to an empty value.  I.e., it was impossible
to override MAKEFLAGS with an empty value.  (Note well that makefiles
are not to touch MAKEFLAGS directly, they alter .MAKEFLAGS instead.
So make(1) can filter out things such as -f when copying MAKEFLAGS
to .MAKEFLAGS at startup.  Direct modifications to MAKEFLAGS just go
nowhere.)

While the original intentions of the BSD make authors are somewhat
unclear here, the bug proves that NOT passing -f options down is
the settled behaviour because the opposite behaviour is totally
unreliable in the presence of any other options.  In addition, not
passing down -f's found in the environment is consistent with doing
so WRT the command line.

Update the manpage accordingly and make the whole description of
MAKEFLAGS and .MAKEFLAGS more consistent as this change indeed
brings more consistency into the reliable behaviour of make(1).

Submitted by:	ru (main.c)
Tested with:	make world
2008-03-05 20:11:04 +00:00
obrien
8571c9adeb It seems some don't care for the anchient joke. Add WITHOUT_OLD_JOKE
to your CFLAGS if you fall into this camp.
2008-03-04 22:51:37 +00:00
obrien
62d1b85d68 No need to tell make to DTRT with "make love", just do it.
Also remove the 2002/08/31 bootstrapping aid for upgrades from
year old (mid-2001) systems.
2008-03-04 22:32:58 +00:00
imp
e66572500e <limits.h> is necessary for using INT_MIN, so included it here
explicitly rather than relying on name space pollution to pull it in
for us.

NB: The usage of INT_MIN is somewhat bogus and suspect to my eye, but this
commit doesn't address that issue.
2008-03-04 15:56:17 +00:00
yar
80cc01776a Move a stray paragraph on .Ev MAKEFLAGS to where it belongs. 2008-03-04 11:28:54 +00:00
yar
cc0a8f6a98 Revise the description of how .Ev MAKEFILE and .Va .MAKEFILE relate.
The most important point is that -f option(s) are never copied from
.Ev MAKEFILE to .Va .MAKEFILE by make(1), which is consistent with
handling the command line.  (-f silently sit in .Ev MAKEFILE and go
to make's children unless overwritten via .Va .MAKEFILE)

Bump .Dd.
2008-03-04 11:25:23 +00:00
yar
3f9aa32684 Split descriptions of .Ev MAKEFILE and .Va .MAKEFLAGS for clarity. 2008-03-04 10:33:42 +00:00
imp
fd2e9a5305 Note 7.0 was the first version that FreeBSD/pc98 had a MACHINE of pc98
instead of i386.
2008-03-04 06:08:59 +00:00
imp
f532107bdc Linux requires -D__dead2= and -D__unused= to get rid of the
sys/cdef.h-isms in the make source.  The variant of linux I tried it
on doesn't have arc4random, so -Darc4random=random too.
2008-03-04 05:35:27 +00:00
imp
3f2bc4767d Use a clever definition of __FBSDID to allow building on !FreeBSD systems. 2007-12-09 16:48:51 +00:00
fjoe
5864a96165 Fix -jX when makefiles are remade. 2007-11-25 20:43:27 +00:00
yar
402e21e0f9 Give more details on the following topics:
o How global, command-line, and environment variables relate.
o What peculiarities the -f option has WRT ${MAKEFLAGS}.
2007-10-31 08:20:09 +00:00
fjoe
a91466a709 Change directory back to ${.CURDIR} when remaking Makefiles.
Pointed out by:	ru
2007-06-01 04:20:19 +00:00
fjoe
711037246e Improve logging when -dm is specified: if the node is considered
out-of-date print not only "modified before source" message
but also the path of youngest source.
2007-04-20 06:33:25 +00:00
fjoe
5abc85136d When remaking makefiles check that mtime has actually changed.
This fixes infinite restart in the following case:

Makefile: foo

foo: bar
	do-something

Unlike GNU make, BSD make considers "Makefile" node as remade even
if "foo" is up-to-date and was not actually rebuilt.
GNU make does not consider nodes without commands as remade if child nodes
were not actually rebuilt.

Most probably, more proper fix would be to bring BSD make behaviour in-line
with GNU make but this would be more intrusive change.
2007-04-20 06:25:45 +00:00
ru
fc751b701f In .error and .warning, prefer command-line variables
to globals, as per documentation.

Nudged by:	Jeremie Le Hen
2007-04-12 18:14:00 +00:00
fjoe
f13438e457 Better English. 2007-03-08 14:05:45 +00:00