Commit Graph

740 Commits

Author SHA1 Message Date
sjg 401ecd47f5 Allow .PATH<suffix> to be used for .include "". 2007-10-22 15:36:13 +00:00
sjg 1d55b1afc4 If we don't have emalloc, we won't have strndup either.
Allows building current make on 2.0.
2007-10-15 01:07:34 +00:00
apb d15c1edea0 Make it easier for the build environment (such as a configure script)
to override the default shell:

* Rename _BASENAME_DEFSHELL to DEFSHELL_CUSTOM, because it's no longer
  always a basename, it might be a full path;
* Rename DEFSHELL to DEFSHELL_INDEX, because it's actually an index into
  an array;
* Provide symbolic names for the possible values if DEFSHELL_INDEX;
* Document how the build environment may set DEFSHELL_INDEX or
  DEFSHELL_CUSTOM to choose the default shell;
* Move the fallback definition of DEFSHELL_INDEX from config.h to job.c,
  because it's used only in job.c.

Discussed with sjg.
2007-10-14 20:22:53 +00:00
apb ec2d191f5e Revert to revision 1.128. Now that the Var* functions no longer try to
write into const strings, it's safe to pass a truly constant string to
Var_Subst.
2007-10-13 20:01:33 +00:00
apb 7da86686ca Don't write into const strings; not even if we intend to
reinstate the original contents later.
2007-10-13 19:59:52 +00:00
christos a59b81d6d8 strlen returns size_t 2007-10-13 18:28:35 +00:00
apb 67bb324312 * Convert all uses of strdup() to estrdup();
* Use estrndup() in a few cases where it simplifies the code;
* Provide compatibility definitions of strndup and estrndup;
2007-10-13 16:16:41 +00:00
apb 781e1efd0c Oops, missed a few more comments in previous. 2007-10-13 14:32:18 +00:00
apb a8bf2a2f8a Correct documentation for Var_Parse's freePtr arg. It's a pointer to
the thing to be freed (or NULL if nothing to free), not to a pointer to
boolean saying whether or not to free the result.
2007-10-13 13:54:06 +00:00
dsl 5dc59d0d4b When processing .include "../../foo.mk" lexically process the leading ../
against the directory name of the makefile being processed.
Shortens a lot of pathnames (especially in pkgsrc) and significantly
reduces the number of duplicate entries in .MAKE.MAKEFILES
2007-10-13 11:08:05 +00:00
dsl 5651920158 The 'job_prefix' string can be static but not const 'hi xtos'. 2007-10-13 08:58:48 +00:00
dsl fad077a68d If we are going to save the names of all opened makefiles, do so when files
are first processed, not for every line of every loop inside the file.
When (attempting) to check for duplicate names, use the spaces between names
as separators rather than using strstr() - which is slow and wont find
duplicates after an incorect early match.
However the duplicate check is rather broken (especially for pkgsrc) where
names like ../../devel/atk/../../devel/glib2/../../devel/gettext-lib/ \
../../devel/gettext-lib/../../mk/buildlink3/../../mk/bsd.prefs.mk
which need (some form of) realpath() processing.
'cd pkgsrc/xaa/gtk2; make show-var VARNAME=.MAKE.MAKEFILES' shows the problem.
2007-10-12 23:38:27 +00:00
christos 0f19d8c420 static a const string. 2007-10-12 23:13:16 +00:00
christos 31bed26f71 improve on previous 2007-10-12 23:07:04 +00:00
dsl bb4beef604 Var_Subst() seems to write into its input string! So we do need a copy. 2007-10-12 22:49:36 +00:00
dsl 215593ad6c Remove tmp[] buffer and strncpy() call. 2007-10-12 21:47:25 +00:00
sjg 1050c04a22 If _BASENAME_DEFSHELL is defined, it might be a full path,
in which case we should not prepend _PATH_DEFSHELLDIR.
2007-10-11 21:19:28 +00:00
sjg 3a5409e4eb Fix an off-by-one error in handing mal-formed modifiers.
The issue seems to have been present for some time, only showed up
when running unit-tests on SunOS.
Make sure we get an error message, but otherwise behave as before.
2007-10-09 05:55:03 +00:00
sjg e73405e272 Use .MAKE.MAKEFILES to track all the makefiles that have been read
so they can be used in dependency rules.
2007-10-08 20:26:36 +00:00
sjg f28827375c Add the ability to .export variables to the environment. 2007-10-05 15:27:45 +00:00
sjg 216e9ba475 Add the ability to tweak the token output before targets in job mode.
Eg.
.MAKE.JOB.PREFIX=${.newline}---${.MAKE:T}[${.MAKE.PID}]
would produce
---make[1234] target ---
2007-10-01 22:14:09 +00:00
uwe 7a8181d0dc Revert 1.34 (CFLAGS+=-g) that have been commited by mistake (hi, xtos). 2007-09-25 21:28:26 +00:00
rillig 3911c95333 A small word can sometimes express things clearer ... 2007-08-13 06:14:08 +00:00
dsl 53bf780833 Under DEBUG(VAR) report when the variable wasn't found.
Disposes of pr bin/15842
2007-06-16 19:47:29 +00:00
dsl 1752887780 Delete some comments that refer to long-extinct code. 2007-05-23 19:03:56 +00:00
christos fc1f18e6ca kill clobbered warning from Tobias Nygren 2007-04-05 14:11:35 +00:00
dsl 69a5cd957a Don't increment 'cp' twice when looking for commands following ';' on a
dependency line.
This makes the line "foo:;echo bar" not try to execute "cho bar", and the
line "baz:;" not treat the rest of the makefile as commands.
Pointed out by Takahiro Kambe on current-users.
2007-02-24 17:55:54 +00:00
dsl 8732462d65 Add code to ensure that .if/.endif are correctly nested with .for/.endfor
and also include files don't have mismatched .if/.endif
It has been suggested that make used to have this test, but I can't
remember removing any code that might have performed it.
2007-02-04 19:23:49 +00:00
dsl 9ac7863b40 Check of open conditionals before we trash 'curFile' - so we can actually
report the filename of the error (without core dumping!).
Also fix tests for reporting errors to the debug_file, and don't add $PWD
to (stdin).
2007-01-24 21:43:01 +00:00
wiz 6aacb705f6 4 -> 4.0, since Nx does not accept all arguments without complaint. 2007-01-23 22:23:48 +00:00
dsl bbdea71364 Don't delete '\' from before '#' in shell command lines.
Probably fixes build of pkgsrc:editors/xemacs.
Pointed out by Richard Earnshaw.
2007-01-18 20:22:44 +00:00
hubertf 48b31403c5 Remove duplicate #includes
From Slava Semushin <slava.semushin@gmail.com>, via private mail
2007-01-17 00:21:43 +00:00
christos 66fbdf9319 Avoid coredumping. Found by accidentally running make instead of gmake
in java's control/make directory.
2007-01-15 01:26:32 +00:00
dsl 8a7693fba6 Don't delete whitespace before a "\\\n" sequence. Somewhere I'd misread
the required behaviour and replaced it with something more sensible - except
for makefiles that contain "\n\t\\\n shell command"...
2007-01-02 23:22:37 +00:00
dsl 8b25f96e43 Remove the (now redundant) MAKE_BSIZE, BUF_DEF_SIZE from buf.c is used instead. 2007-01-01 21:48:43 +00:00
dsl 4d3c468f96 Rework the code that separates the makefile into lines.
Instead of copying the file byte by byte into an expanding line buffer, just
scan the file buffer for (unescaped) newlines.
Escaped newlines (etc) are processed by modifying the file buffer later.
Speeds up 'nbmake obj' by a factor of 2.
I suspect it will do wonders for parts of pkgsrc as well, since it largely
eliminates cpu cycles from the false part of .ifs.
2007-01-01 21:47:32 +00:00
dsl d6cad2789c Request the 'verbose' node print when aborting and scheduling nodes. 2007-01-01 21:42:42 +00:00
dsl 75dd4686a9 Add the other half of the fix to stop stuff that depends on .WAIT nodes
being always rebuilt.
2007-01-01 21:39:58 +00:00
dsl 388fdf7f68 Don't force things that have dependencies against .WAIT nodes to be rebuilt.
This is what causes all of ksh to be built every time through.
2007-01-01 21:35:40 +00:00
dsl 3780cb6cd8 Remove 'else' after 'return', and similar whitspace changes.
Extra debug on where files are actually found.
2007-01-01 21:31:51 +00:00
dsl b7483eac69 Since the 'buf' code here is only used by make, we don't need two names
for the default buffer size of 256.
Also allow for the trailing 0 byte!
2007-01-01 21:29:01 +00:00
wiz 4cc41386ba Fix a typo. Use Nx. 2006-12-23 07:25:41 +00:00
erh d96de9f7f0 Correctly handle '\' at the end of a variable in the non-expanding case. 2006-12-22 20:28:31 +00:00
dsl d8f5679725 Fix breakage of previous commit. 2006-12-21 20:05:37 +00:00
dsl c26f3a4858 Fix detection and reporting of dependency loops in parallel makes.
make's unit_tests should now run again.
2006-12-20 20:46:35 +00:00
christos 83508cedc2 From Anon Ymous:
Removed two "(void)&" constructs as there is no setjmp() or vfork() insight.
Flagged a few parameters __unused so this will compile with -Wextra now.
2006-12-18 15:06:16 +00:00
dsl c822b38662 Use open/read/close instead of stdio for makefiles.
Commons up the code for reading files and buffers, and allows a further
change where we don't copy the data out of the buffer when generating 'lines.
This will speed up makefile parsing (esp .if clauses).
2006-12-16 08:59:29 +00:00
dsl edc84458bf Fix a comment that has been wrong since rev 1.1, minor layout fix. 2006-12-16 08:51:12 +00:00
dsl 82e7102f1f Revert part of a recent commit.
ParseEOF() shouldn't close the original file.
2006-12-07 21:34:16 +00:00
dsl a294d83a63 Put the big block of code that was common to ParseDoInclude() and
ParseTraditionalInclude() into a separate routine.
Fix the 'use after free' and 'free on item not malloced' that got added
to ParseTraditionalInclude() in Feb 2006 (rev 1.111).
Kill the 'PTR' struct and put both its members into IFile.
Remove the parameter from ParseEOF(), 1 of the 3 calls passed the wrong value!
Fortunately another test stopped anything nasty happening, we'll use that
test instead.
2006-12-07 21:07:01 +00:00