master
make searches for makefile before Makefile; from raf czlonka
current code no longer uses Lst_Replace not Lst_Requeue so don't bother compiling them.
GC old code that was originally implemented to facilitate adoption by other BSDs, which never happened, so make things simpler for further development.
remove TIMESTAMP abstraction layer, prodded by theo. while there, clean up includes. use strtoll for ar timestamps (pretty much unused in reality, more standard conforming than anything)
Quiet compiler warnings when built with WARNINGS=Yes Most are from functions that take no args but used the old K&R style foo() instead of foo(void). From espie@
introduce a "Buf_Reinit" function for handling static buffers that can be reused throughout running make. Instead of recreating buffers of dubious appropriate size, have one single buffer for various stages of parsing.
reuse the code to exec command for VAR != cmd *and* normal target processing
make the choice of engine explicit
Correct $OpenBSD$ stuff
unifdef HAS_INLINES inline is part of gnu89 and c99 ok kn@ espie@
two small changes: - allow variables in SysV modifiers, as requested by matthieu@ (since recursive variables are an extension, this just extends the extension) - variation on :Q called :QL (quote list), which does quote every character EXCEPT for whitespace. e.g.,
remove OP_* for deprecated keywords (document that :: still uses OP_INVISIBLE)
a wee little bit more cleanup (more const and remove noise from CDIAGFLAGS... -pedantic kind of requires -std=c99 here to avoid LL warnings) okay miod@, millert@
make(1): inline set_times() into Job_Touch()
introduce a JOB_KEEPERROR flag so that the logic for moving jobs to availableJobs/errorJobs happens just once
somehow I forgot to add copyright and to include the right prototypes. No actual code change (checked with cmp)
remove prototypes with no matching function and externs with no var partly checked by millert@
correct indentation; no functional change ok tb@
move a large chunk of suff.c into its own file (independent functions which are not really directly related to suffix handling), so that I can eventually understand how this whole thing works.
simplify the way we account for different jobs: - have a simple variable "sequential" that counts whether we are running more than one job (for the expensive heuristics) - don't expose various things globally, just have a set_noparallel() for the parser - preallocate exactly enough job structures and record them in availableJobs - keep one job on the side for .INTERRUPT
- give a specific value to OP_ERROR that doesn't occur in nature - define OP_ZERO as zero, to make some function calls obvious - split ParseDoOp into two functions: ParseDoOp that only deals with : :: ! and ParseDoSpecial that only deals with special nodes. This simplifies both functions accordingly - always initialize special_op
Implement the ${<D} and ${<F} variables, as documented in the manual. They are equivalent to ${<:H} and ${<:T} repectively, however the former variants are more portable, as they are understood by GNU, FreeBSD and NetBSD make too.
minor cleanup: error messages include lineno and fileno together, so recognize that and create a struct Location_ for it.
more changes, discussed and tested by various people. - put back some job control, turns out it's necessary when we don't run a shell. - zap old #ifdef CLEANUP code... probably doesn't even compile. - kill most of the OP_LIB code. Just keep a wee little bit for compatibility (deprecated .LIBS and .INCLUDES, warns for weird dependencies instead of erroring out). - much improved debugging and -p output: sort variables, targets, rules, output stuff in a nicer format mimicing input. - better error message when no command is found, explain where the target comes from. - sort final error list by file. - show system files in errors as <bsd.prog.mk> - reincorporate random delay, that was dropped - optimize siginfo output by not regenerating the whole string each time. - finish zapping old LocationInfo field that's no longer used.
Due to the way make is designed, not being able to read a makefile is basically silent.
document .VARIABLES
a bit more reallocarray (and kill ecalloc, which isn't used) okay chl@
GC old cruft. noticed and patch Michael W. Bombardieri
- SPECIAL_DEPRECATED -> SPECIAL_NOTHING - nodes for .POSIX and .SCCS_GET (which don't do anything) - zap remaining suffix crud.
fix duplicate targets in target list for good: split previous groupling fix in two. Catch 22: we have to dedup targets very early so that commands get attached correctly, but we can't figure out the grouplings heuristics until we have all commands...
GC some old stuff okay millert@
exit needs stdlib, switch to "return 0" to fix.
yet another mostly cosmetic diff - rename context into localvars, which is more meaningful and less generic - instantiate the random rumbling at the start of gnode.h with actual variable names - explain and group gnode.h variables better - make some comments terser/more meaningful
Replace sys/time.h with proper includes for using localtime