diff options
author | hoek <hoek@FreeBSD.org> | 1999-08-17 00:39:26 +0000 |
---|---|---|
committer | hoek <hoek@FreeBSD.org> | 1999-08-17 00:39:26 +0000 |
commit | 5d62bbe5a50f3c7ebe77803935bb73d1b6470757 (patch) | |
tree | c22ea5a1bb41e5c36b9b7c6a2f05399b0e89a84b /usr.bin/make | |
parent | 33f15d9b593b0367efcf31b8b6b795c36746c989 (diff) | |
download | FreeBSD-src-5d62bbe5a50f3c7ebe77803935bb73d1b6470757.zip FreeBSD-src-5d62bbe5a50f3c7ebe77803935bb73d1b6470757.tar.gz |
Merge style- and trivial- only changes from OpenBSD (dated 1999/07/29-19:55+1).
Obtained from: OpenBSD, sometimes indirected from NetBSD; myself
Diffstat (limited to 'usr.bin/make')
-rw-r--r-- | usr.bin/make/arch.c | 84 | ||||
-rw-r--r-- | usr.bin/make/buf.c | 11 | ||||
-rw-r--r-- | usr.bin/make/buf.h | 6 | ||||
-rw-r--r-- | usr.bin/make/compat.c | 23 | ||||
-rw-r--r-- | usr.bin/make/cond.c | 10 | ||||
-rw-r--r-- | usr.bin/make/dir.c | 7 | ||||
-rw-r--r-- | usr.bin/make/for.c | 7 | ||||
-rw-r--r-- | usr.bin/make/hash.c | 7 | ||||
-rw-r--r-- | usr.bin/make/job.c | 14 | ||||
-rw-r--r-- | usr.bin/make/lst.h | 6 | ||||
-rw-r--r-- | usr.bin/make/lst.lib/lstInt.h | 4 | ||||
-rw-r--r-- | usr.bin/make/main.c | 38 | ||||
-rw-r--r-- | usr.bin/make/make.1 | 423 | ||||
-rw-r--r-- | usr.bin/make/make.c | 28 | ||||
-rw-r--r-- | usr.bin/make/make.h | 35 | ||||
-rw-r--r-- | usr.bin/make/nonints.h | 5 | ||||
-rw-r--r-- | usr.bin/make/parse.c | 25 | ||||
-rw-r--r-- | usr.bin/make/pathnames.h | 12 | ||||
-rw-r--r-- | usr.bin/make/sprite.h | 8 | ||||
-rw-r--r-- | usr.bin/make/str.c | 11 | ||||
-rw-r--r-- | usr.bin/make/suff.c | 18 | ||||
-rw-r--r-- | usr.bin/make/targ.c | 21 | ||||
-rw-r--r-- | usr.bin/make/var.c | 22 |
23 files changed, 535 insertions, 290 deletions
diff --git a/usr.bin/make/arch.c b/usr.bin/make/arch.c index e886af0..7f70dad 100644 --- a/usr.bin/make/arch.c +++ b/usr.bin/make/arch.c @@ -35,11 +35,16 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: arch.c,v 1.9 1998/10/15 13:00:34 jkoshy Exp $ + * $Id: arch.c,v 1.10 1998/10/15 16:09:56 jdp Exp $ */ #ifndef lint +#if 0 static char sccsid[] = "@(#)arch.c 8.2 (Berkeley) 1/2/94"; +#else +static const char rcsid[] = + "$Id"; +#endif #endif /* not lint */ /*- @@ -146,13 +151,12 @@ ArchFree(ap) /* Free memory from hash entries */ for (entry = Hash_EnumFirst(&a->members, &search); - entry != (Hash_Entry *)NULL; + entry != NULL; entry = Hash_EnumNext(&search)) free((Address) Hash_GetValue (entry)); free(a->name); - if (a->fnametab) - free(a->fnametab); + efree(a->fnametab); Hash_DeleteTable(&a->members); free((Address) a); } @@ -474,9 +478,8 @@ ArchStatMember (archive, member, hash) * the comparisons easier... */ cp = strrchr (member, '/'); - if (cp != (char *) NULL) { + if (cp != NULL) member = cp + 1; - } ln = Lst_Find (archives, (ClientData) archive, ArchFindArchive); if (ln != NILLNODE) { @@ -484,7 +487,7 @@ ArchStatMember (archive, member, hash) he = Hash_FindEntry (&ar->members, member); - if (he != (Hash_Entry *) NULL) { + if (he != NULL) { return ((struct ar_hdr *) Hash_GetValue (he)); } else { /* Try truncated name */ @@ -498,7 +501,7 @@ ArchStatMember (archive, member, hash) } if ((he = Hash_FindEntry (&ar->members, copy)) != NULL) return ((struct ar_hdr *) Hash_GetValue (he)); - return ((struct ar_hdr *) NULL); + return (NULL); } } @@ -514,8 +517,8 @@ ArchStatMember (archive, member, hash) arch = ArchFindMember(archive, member, &sarh, "r"); - if (arch == (FILE *)NULL) { - return ((struct ar_hdr *)NULL); + if (arch == NULL) { + return (NULL); } else { fclose(arch); return (&sarh); @@ -527,8 +530,8 @@ ArchStatMember (archive, member, hash) * everything that's in it and cache it so we can get at it quickly. */ arch = fopen (archive, "r"); - if (arch == (FILE *) NULL) { - return ((struct ar_hdr *) NULL); + if (arch == NULL) { + return (NULL); } /* @@ -538,7 +541,7 @@ ArchStatMember (archive, member, hash) if ((fread (magic, SARMAG, 1, arch) != 1) || (strncmp (magic, ARMAG, SARMAG) != 0)) { fclose (arch); - return ((struct ar_hdr *) NULL); + return (NULL); } ar = (Arch *)emalloc (sizeof (Arch)); @@ -609,19 +612,19 @@ ArchStatMember (archive, member, hash) if (fread (memName, elen, 1, arch) != 1) goto badarch; memName[elen] = '\0'; - fseek (arch, -elen, 1); + fseek (arch, -elen, SEEK_CUR); if (DEBUG(ARCH) || DEBUG(MAKE)) { printf("ArchStat: Extended format entry for %s\n", memName); } } #endif - he = Hash_CreateEntry (&ar->members, memName, (Boolean *)NULL); + he = Hash_CreateEntry (&ar->members, memName, NULL); Hash_SetValue (he, (ClientData)emalloc (sizeof (struct ar_hdr))); memcpy ((Address)Hash_GetValue (he), (Address)&arh, sizeof (struct ar_hdr)); } - fseek (arch, (size + 1) & ~1, 1); + fseek (arch, (size + 1) & ~1, SEEK_CUR); } fclose (arch); @@ -634,19 +637,18 @@ ArchStatMember (archive, member, hash) */ he = Hash_FindEntry (&ar->members, member); - if (he != (Hash_Entry *) NULL) { + if (he != NULL) { return ((struct ar_hdr *) Hash_GetValue (he)); } else { - return ((struct ar_hdr *) NULL); + return (NULL); } badarch: fclose (arch); Hash_DeleteTable (&ar->members); - if (ar->fnametab) - free(ar->fnametab); + efree(ar->fnametab); free ((Address)ar); - return ((struct ar_hdr *) NULL); + return (NULL); } #ifdef SVR4ARCHIVES @@ -786,8 +788,8 @@ ArchFindMember (archive, member, arhPtr, mode) int len, tlen; arch = fopen (archive, mode); - if (arch == (FILE *) NULL) { - return ((FILE *) NULL); + if (arch == NULL) { + return (NULL); } /* @@ -797,7 +799,7 @@ ArchFindMember (archive, member, arhPtr, mode) if ((fread (magic, SARMAG, 1, arch) != 1) || (strncmp (magic, ARMAG, SARMAG) != 0)) { fclose (arch); - return ((FILE *) NULL); + return (NULL); } /* @@ -822,7 +824,7 @@ ArchFindMember (archive, member, arhPtr, mode) * and there's no way we can recover... */ fclose (arch); - return ((FILE *) NULL); + return (NULL); } else if (strncmp (member, arhPtr->ar_name, tlen) == 0) { /* * If the member's name doesn't take up the entire 'name' field, @@ -841,7 +843,7 @@ ArchFindMember (archive, member, arhPtr, mode) * the file at the actual member, rather than its header, but * not here... */ - fseek (arch, -sizeof(struct ar_hdr), 1); + fseek (arch, -sizeof(struct ar_hdr), SEEK_CUR); return (arch); } } else @@ -871,10 +873,10 @@ ArchFindMember (archive, member, arhPtr, mode) } if (strncmp(ename, member, len) == 0) { /* Found as extended name */ - fseek (arch, -sizeof(struct ar_hdr) - elen, 1); + fseek (arch, -sizeof(struct ar_hdr) - elen, SEEK_CUR); return (arch); } - fseek (arch, -elen, 1); + fseek (arch, -elen, SEEK_CUR); goto skip; } else #endif @@ -889,7 +891,7 @@ skip: */ arhPtr->ar_size[sizeof(arhPtr->ar_size)-1] = '\0'; size = (int) strtol(arhPtr->ar_size, NULL, 10); - fseek (arch, (size + 1) & ~1, 1); + fseek (arch, (size + 1) & ~1, SEEK_CUR); } } @@ -898,7 +900,7 @@ skip: * archive and return NULL -- an error. */ fclose (arch); - return ((FILE *) NULL); + return (NULL); } /*- @@ -927,13 +929,11 @@ Arch_Touch (gn) arch = ArchFindMember(Var_Value (ARCHIVE, gn, &p1), Var_Value (TARGET, gn, &p2), &arh, "r+"); - if (p1) - free(p1); - if (p2) - free(p2); + efree(p1); + efree(p2); sprintf(arh.ar_date, "%-12ld", (long) now); - if (arch != (FILE *) NULL) { + if (arch != NULL) { (void)fwrite ((char *)&arh, sizeof (struct ar_hdr), 1, arch); fclose (arch); } @@ -966,7 +966,7 @@ Arch_TouchLib (gn) arch = ArchFindMember (gn->path, RANLIBMAG, &arh, "r+"); sprintf(arh.ar_date, "%-12ld", (long) now); - if (arch != (FILE *) NULL) { + if (arch != NULL) { (void)fwrite ((char *)&arh, sizeof (struct ar_hdr), 1, arch); fclose (arch); @@ -1001,12 +1001,10 @@ Arch_MTime (gn) arhPtr = ArchStatMember (Var_Value (ARCHIVE, gn, &p1), Var_Value (TARGET, gn, &p2), TRUE); - if (p1) - free(p1); - if (p2) - free(p2); + efree(p1); + efree(p2); - if (arhPtr != (struct ar_hdr *) NULL) { + if (arhPtr != NULL) { modTime = (int) strtol(arhPtr->ar_date, NULL, 10); } else { modTime = 0; @@ -1113,7 +1111,7 @@ Arch_FindLib (gn, path) #ifdef LIBRARIES Var_Set (TARGET, gn->name, gn); #else - Var_Set (TARGET, gn->path == (char *) NULL ? gn->name : gn->path, gn); + Var_Set (TARGET, gn->path == NULL ? gn->name : gn->path, gn); #endif /* LIBRARIES */ } @@ -1170,7 +1168,7 @@ Arch_LibOODate (gn) arhPtr = ArchStatMember (gn->path, RANLIBMAG, FALSE); - if (arhPtr != (struct ar_hdr *)NULL) { + if (arhPtr != NULL) { modTimeTOC = (int) strtol(arhPtr->ar_date, NULL, 10); if (DEBUG(ARCH) || DEBUG(MAKE)) { diff --git a/usr.bin/make/buf.c b/usr.bin/make/buf.c index 462cbef..8ed5aa7 100644 --- a/usr.bin/make/buf.c +++ b/usr.bin/make/buf.c @@ -35,11 +35,16 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id$ + * $Id: buf.c,v 1.8 1997/02/22 19:27:06 peter Exp $ */ #ifndef lint +#if 0 static char sccsid[] = "@(#)buf.c 8.1 (Berkeley) 6/6/93"; +#else +static const char rcsid[] = + "$Id"; +#endif #endif /* not lint */ /*- @@ -126,7 +131,7 @@ void Buf_AddBytes (bp, numBytes, bytesPtr) register Buffer bp; int numBytes; - Byte *bytesPtr; + const Byte *bytesPtr; { BufExpand (bp, numBytes); @@ -454,7 +459,7 @@ Buf_Destroy (buf, freeData) void Buf_ReplaceLastByte (buf, byte) Buffer buf; /* buffer to augment */ - Byte byte; /* byte to be written */ + int byte; /* byte to be written */ { if (buf->inPtr == buf->outPtr) Buf_AddByte(buf, byte); diff --git a/usr.bin/make/buf.h b/usr.bin/make/buf.h index 562739d..8721bfb 100644 --- a/usr.bin/make/buf.h +++ b/usr.bin/make/buf.h @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)buf.h 8.1 (Berkeley) 6/6/93 - * $Id$ + * $Id: buf.h,v 1.7 1997/02/22 19:27:06 peter Exp $ */ /*- @@ -67,7 +67,7 @@ typedef struct Buffer { #define BUF_ERROR 256 void Buf_OvAddByte __P((Buffer, int)); -void Buf_AddBytes __P((Buffer, int, Byte *)); +void Buf_AddBytes __P((Buffer, int, const Byte *)); void Buf_UngetByte __P((Buffer, int)); void Buf_UngetBytes __P((Buffer, int, Byte *)); int Buf_GetByte __P((Buffer)); @@ -77,6 +77,6 @@ void Buf_Discard __P((Buffer, int)); int Buf_Size __P((Buffer)); Buffer Buf_Init __P((int)); void Buf_Destroy __P((Buffer, Boolean)); -void Buf_ReplaceLastByte __P((Buffer, Byte)); +void Buf_ReplaceLastByte __P((Buffer, int)); #endif /* _BUF_H */ diff --git a/usr.bin/make/compat.c b/usr.bin/make/compat.c index 8424e9b..e894699 100644 --- a/usr.bin/make/compat.c +++ b/usr.bin/make/compat.c @@ -35,11 +35,16 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: compat.c,v 1.12 1998/09/09 05:15:38 jkoshy Exp $ + * $Id: compat.c,v 1.13 1999/07/31 20:38:22 hoek Exp $ */ #ifndef lint +#if 0 static char sccsid[] = "@(#)compat.c 8.2 (Berkeley) 3/19/94"; +#else +static const char rcsid[] = + "$Id$"; +#endif #endif /* not lint */ /*- @@ -115,8 +120,7 @@ CompatInterrupt (signo) if (!noExecute && eunlink(file) != -1) { printf ("*** %s removed\n", file); } - if (p1) - free(p1); + efree(p1); /* * Run .INTERRUPT only if hit with interrupt signal @@ -214,7 +218,7 @@ CompatRunCommand (cmdp, gnp) cmdStart = Var_Subst (NULL, cmd, gn, FALSE); /* - * brk_string will return an argv with a NULL in av[1], thus causing + * brk_string will return an argv with a NULL in av[0], thus causing * execvp to choke and die horribly. Besides, how can we execute a null * command? In any case, we warn the user that the command expanded to * nothing (is this the right thing to do?). @@ -448,8 +452,7 @@ CompatMake (gnp, pgnp) if (Lst_Member (gn->iParents, pgn) != NILLNODE) { char *p1; Var_Set (IMPSRC, Var_Value(TARGET, gn, &p1), pgn); - if (p1) - free(p1); + efree(p1); } /* @@ -586,7 +589,10 @@ CompatMake (gnp, pgnp) } else if (keepgoing) { pgn->make = FALSE; } else { - printf ("\n\nStop.\n"); + char *p1; + + printf ("\n\nStop in %s.\n", Var_Value(".CURDIR", gn, &p1)); + efree(p1); exit (1); } } else if (gn->made == ERROR) { @@ -599,8 +605,7 @@ CompatMake (gnp, pgnp) if (Lst_Member (gn->iParents, pgn) != NILLNODE) { char *p1; Var_Set (IMPSRC, Var_Value(TARGET, gn, &p1), pgn); - if (p1) - free(p1); + efree(p1); } switch(gn->made) { case BEINGMADE: diff --git a/usr.bin/make/cond.c b/usr.bin/make/cond.c index 5eb420e..f19b93a 100644 --- a/usr.bin/make/cond.c +++ b/usr.bin/make/cond.c @@ -35,11 +35,16 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: cond.c,v 1.8 1999/05/25 13:45:08 hoek Exp $ + * $Id: cond.c,v 1.9 1999/08/12 13:30:08 hoek Exp $ */ #ifndef lint +#if 0 static char sccsid[] = "@(#)cond.c 8.2 (Berkeley) 1/2/94"; +#else +static const char rcsid[] = + "$Id"; +#endif #endif /* not lint */ /*- @@ -290,8 +295,7 @@ CondDoDefined (argLen, arg) } else { result = FALSE; } - if (p1) - free(p1); + efree(p1); arg[argLen] = savec; return (result); } diff --git a/usr.bin/make/dir.c b/usr.bin/make/dir.c index 9fcf94f..eb05999 100644 --- a/usr.bin/make/dir.c +++ b/usr.bin/make/dir.c @@ -35,11 +35,16 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id$ + * $Id: dir.c,v 1.7 1997/02/22 19:27:08 peter Exp $ */ #ifndef lint +#if 0 static char sccsid[] = "@(#)dir.c 8.2 (Berkeley) 1/2/94"; +#else +static const char rcsid[] = + "$Id"; +#endif #endif /* not lint */ /*- diff --git a/usr.bin/make/for.c b/usr.bin/make/for.c index 3d8617f..983b9fd 100644 --- a/usr.bin/make/for.c +++ b/usr.bin/make/for.c @@ -30,11 +30,16 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id$ + * $Id: for.c,v 1.7 1997/02/22 19:27:09 peter Exp $ */ #ifndef lint +#if 0 static char sccsid[] = "@(#)for.c 8.1 (Berkeley) 6/6/93"; +#else +static const char rcsid[] = + "$Id"; +#endif #endif /* not lint */ /*- diff --git a/usr.bin/make/hash.c b/usr.bin/make/hash.c index a8250a4..12dfbd9 100644 --- a/usr.bin/make/hash.c +++ b/usr.bin/make/hash.c @@ -35,11 +35,16 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id$ + * $Id: hash.c,v 1.6 1997/02/22 19:27:10 peter Exp $ */ #ifndef lint +#if 0 static char sccsid[] = "@(#)hash.c 8.1 (Berkeley) 6/6/93"; +#else +static const char rcsid[] = + "$Id"; +#endif #endif /* not lint */ /* hash.c -- diff --git a/usr.bin/make/job.c b/usr.bin/make/job.c index 1525b7c..d102c53 100644 --- a/usr.bin/make/job.c +++ b/usr.bin/make/job.c @@ -35,11 +35,16 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: job.c,v 1.11 1998/11/14 16:15:04 dg Exp $ + * $Id: job.c,v 1.12 1999/02/14 22:22:42 dt Exp $ */ #ifndef lint +#if 0 static char sccsid[] = "@(#)job.c 8.2 (Berkeley) 3/19/94"; +#else +static const char rcsid[] = + "$Id"; +#endif #endif /* not lint */ #ifndef OLD_JOKE @@ -1054,7 +1059,7 @@ Job_Touch(gn, silent) * modification time, then close the file. */ if (read(streamID, &c, 1) == 1) { - (void) lseek(streamID, 0L, L_SET); + (void) lseek(streamID, 0L, SEEK_SET); (void) write(streamID, &c, 1); } @@ -1107,8 +1112,7 @@ Job_CheckCommands(gn, abortProc) */ Make_HandleUse(DEFAULT, gn); Var_Set(IMPSRC, Var_Value(TARGET, gn, &p1), gn); - if (p1) - free(p1); + efree(p1); } else if (Dir_MTime(gn) == 0) { /* * The node wasn't the target of an operator we have no .DEFAULT @@ -1228,7 +1232,7 @@ JobExec(job, argv) if (dup2(FILENO(job->cmdFILE), 0) == -1) Punt("Cannot dup2: %s", strerror(errno)); (void) fcntl(0, F_SETFD, 0); - (void) lseek(0, 0, L_SET); + (void) lseek(0, 0, SEEK_SET); if (usePipes) { /* diff --git a/usr.bin/make/lst.h b/usr.bin/make/lst.h index 2d1d867..3cb3ee1 100644 --- a/usr.bin/make/lst.h +++ b/usr.bin/make/lst.h @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)lst.h 8.1 (Berkeley) 6/6/93 - * $Id$ + * $Id: lst.h,v 1.7 1997/02/22 19:27:13 peter Exp $ */ /*- @@ -46,11 +46,11 @@ #ifndef _LST_H_ #define _LST_H_ -#include <sprite.h> #include <sys/param.h> -#if __STDC__ +#ifdef __STDC__ #include <stdlib.h> #endif +#include "sprite.h" /* * basic typedef. This is what the Lst_ functions handle diff --git a/usr.bin/make/lst.lib/lstInt.h b/usr.bin/make/lst.lib/lstInt.h index 4260940..dd38bf0 100644 --- a/usr.bin/make/lst.lib/lstInt.h +++ b/usr.bin/make/lst.lib/lstInt.h @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)lstInt.h 8.1 (Berkeley) 6/6/93 - * $Id$ + * $Id: lstInt.h,v 1.5 1997/02/22 19:27:40 peter Exp $ */ /*- @@ -109,4 +109,4 @@ typedef struct { */ #define LstIsEmpty(l) (((List)l)->firstPtr == NilListNode) -#endif _LSTINT_H_ +#endif /* _LSTINT_H_ */ diff --git a/usr.bin/make/main.c b/usr.bin/make/main.c index ea47823..3aecd83 100644 --- a/usr.bin/make/main.c +++ b/usr.bin/make/main.c @@ -45,9 +45,10 @@ static const char copyright[] = #ifndef lint #if 0 static char sccsid[] = "@(#)main.c 8.3 (Berkeley) 3/19/94"; -#endif +#else static const char rcsid[] = - "$Id: main.c,v 1.31 1999/07/31 20:40:23 hoek Exp $"; + "$Id: main.c,v 1.32 1999/07/31 20:53:01 hoek Exp $"; +#endif #endif /* not lint */ /*- @@ -96,7 +97,7 @@ static const char rcsid[] = #include <fcntl.h> #include <stdio.h> #include <sysexits.h> -#if __STDC__ +#ifdef __STDC__ #include <stdarg.h> #else #include <varargs.h> @@ -211,8 +212,9 @@ rearg: while((c = getopt(argc, argv, OPTFLAGS)) != -1) { maxLocal = strtol(optarg, &endptr, 10); if (maxLocal < 0 || *endptr != '\0') { - errx(EX_USAGE, - "illegal argument to -L -- %s", optarg); + warnx("illegal number, -L argument -- %s", + optarg); + usage(); } Var_Append(MAKEFLAGS, "-L", VAR_GLOBAL); Var_Append(MAKEFLAGS, optarg, VAR_GLOBAL); @@ -306,8 +308,9 @@ rearg: while((c = getopt(argc, argv, OPTFLAGS)) != -1) { forceJobs = TRUE; maxJobs = strtol(optarg, &endptr, 10); if (maxJobs <= 0 || *endptr != '\0') { - errx(EX_USAGE, - "illegal argument to -j -- %s", optarg); + warnx("illegal number, -j argument -- %s", + optarg); + usage(); } #ifndef REMOTE maxLocal = maxJobs; @@ -570,9 +573,10 @@ main(argc, argv) * 2. MAKEOBJDIR * 3. _PATH_OBJDIR.${MACHINE} * 4. _PATH_OBJDIR - * 5. _PATH_OBJDIRPREFIX${MACHINE} + * 5. _PATH_OBJDIRPREFIX`cwd` * - * If all fails, use the current directory to build. + * If one of the first two fails, use the current directory. + * If the remaining three all fail, use the current directory. * * Once things are initted, * have to add the original directory to the search path, @@ -759,8 +763,7 @@ main(argc, argv) (void)ReadMakefile(".depend", NULL); Var_Append("MFLAGS", Var_Value(MAKEFLAGS, VAR_GLOBAL, &p1), VAR_GLOBAL); - if (p1) - free(p1); + efree(p1); /* Install all the flags into the MAKE envariable. */ if (((p = Var_Value(MAKEFLAGS, VAR_GLOBAL, &p1)) != NULL) && *p) @@ -769,8 +772,7 @@ main(argc, argv) #else setenv("MAKE", p, 1); #endif - if (p1) - free(p1); + efree(p1); /* * For compatibility, look at the directories in the VPATH variable @@ -1083,7 +1085,7 @@ bad: */ /* VARARGS */ void -#if __STDC__ +#ifdef __STDC__ Error(char *fmt, ...) #else Error(va_alist) @@ -1091,7 +1093,7 @@ Error(va_alist) #endif { va_list ap; -#if __STDC__ +#ifdef __STDC__ va_start(ap, fmt); #else char *fmt; @@ -1118,7 +1120,7 @@ Error(va_alist) */ /* VARARGS */ void -#if __STDC__ +#ifdef __STDC__ Fatal(char *fmt, ...) #else Fatal(va_alist) @@ -1126,7 +1128,7 @@ Fatal(va_alist) #endif { va_list ap; -#if __STDC__ +#ifdef __STDC__ va_start(ap, fmt); #else char *fmt; @@ -1160,7 +1162,7 @@ Fatal(va_alist) */ /* VARARGS */ void -#if __STDC__ +#ifdef __STDC__ Punt(char *fmt, ...) #else Punt(va_alist) diff --git a/usr.bin/make/make.1 b/usr.bin/make/make.1 index 96897c9..ff3e617 100644 --- a/usr.bin/make/make.1 +++ b/usr.bin/make/make.1 @@ -30,7 +30,7 @@ .\" SUCH DAMAGE. .\" .\" from: @(#)make.1 8.4 (Berkeley) 3/19/94 -.\" $Id: make.1,v 1.21 1999/08/12 20:49:20 chris Exp $ +.\" $Id: make.1,v 1.22 1999/08/14 06:47:13 chris Exp $ .\" .Dd March 19, 1994 .Dt MAKE 1 @@ -40,7 +40,7 @@ .Nd maintain program dependencies .Sh SYNOPSIS .Nm make -.Op Fl Beiknqrstv +.Op Fl BPSeiknqrstv .Op Fl D Ar variable .Op Fl d Ar flags .Op Fl E Ar variable @@ -51,29 +51,30 @@ .Op Fl m Ar directory .Ek .Op Fl V Ar variable -.Op Ar variable=value +.Op Ar variable Ns No = Ns Ar value .Op Ar target ... .Sh DESCRIPTION .Nm Make is a program designed to simplify the maintenance of other programs. -Its input is a list of specifications as to the files upon which programs -and other files depend. -.Nm Make -searches a built-in path for this list. -If the file +Its input is a list of specifications +describing dependency relationships between the generation of +files and programs. +The first of .Ql Pa makefile -exists along this path, it is read for this list of specifications. -If it does not exist, the file +and .Ql Pa Makefile -is used. +that can be found in either the current directory or a special object directory +(see +.Ql Va .OBJDIR ) +will be read for this list of specifications. If the file .Ql Pa .depend -exists, it is also read (see +can be found, it is also read (see .Xr mkdep 1) . .Pp This manual page is intended as a reference document only. -For a more thorough description of -.Nm make +For a more thorough introduction to +.Nm and makefiles, please refer to .%T "Make \- A Tutorial" . .Pp @@ -82,15 +83,19 @@ The options are as follows: .It Fl B Try to be backwards compatible by executing a single shell per command and by executing the commands to make the sources of a dependency line in sequence. +This is turned on by default unless +.Fl j +is used. .It Fl D Ar variable Define .Ar variable to be 1, in the global context. .It Fl d Ar flags Turn on debugging, and specify which portions of -.Nm make +.Nm are to print debugging information. -.Ar Flags +Argument +.Ar flags is one or more of the following: .Bl -tag -width Ds .It Ar A @@ -102,6 +107,9 @@ Print debugging information about archive searching and caching. Print debugging information about conditional evaluation. .It Ar d Print debugging information about directory searching and caching. +.It Ar f +Print debugging information about the execution of for loops. Currently a +no-op. .It Ar "g1" Print the input graph before making anything. .It Ar "g2" @@ -133,9 +141,9 @@ and If .Ar makefile is -.Ql Fl , +.Ql \- , standard input is read. -Multiple makefile's may be specified, and are read in the order specified. +Multiple makefiles may be specified, and are read in the order specified. .It Fl I Ar directory Specify a directory in which to search for makefiles and included makefiles. The system makefile directory (or directories, see the @@ -144,11 +152,11 @@ option) is automatically included as part of this list. .It Fl i Ignore non-zero exit of shell commands in the makefile. Equivalent to specifying -.Ql Fl +.Ql \- before each command line in the makefile. .It Fl j Ar max_jobs Specify the maximum number of jobs that -.Nm make +.Nm may have running at any one time. Turns compatibility mode off, unless the .Ar B flag is also specified. @@ -158,19 +166,31 @@ that do not depend on the target whose creation caused the error. .It Fl m Ar directory Specify a directory in which to search for sys.mk and makefiles included via the <...> style. Multiple directories can be added to form a search path. -This path will override the default system include path: /usr/share/mk. -Furthermore the system include path will be appended to the search path used +This path will override the default system include path: +.Pa /usr/share/mk . +Furthermore, the system include path will be appended to the search path used for "..."-style inclusions (see the .Fl I option). .It Fl n Display the commands that would have been executed, but do not actually execute them. +.It Fl P +Collate the output of a given job and display it only when the job finishes, +instead of mixing the output of parallel jobs together. +This option has no effect unless +.Fl j +is used too. .It Fl q Do not execute any commands, but exit 0 if the specified targets are up-to-date and 1, otherwise. .It Fl r Do not use the built-in rules specified in the system makefile. +.It Fl S +Stop processing when an error is encountered. +Default behaviour. This is needed to negate the +.Fl k +option during recursive builds. .It Fl s Do not echo any commands as they are executed. Equivalent to specifying @@ -192,7 +212,7 @@ with a blank line for each null or undefined variable. .It Fl v Be extra verbose. For multi-job makes, this will cause file banners to be generated. -.It Ar variable=value +.It Ar variable Ns No = Ns Ar value Set the value of the variable .Ar variable to @@ -211,7 +231,9 @@ line are compressed into a single space. .Sh FILE DEPENDENCY SPECIFICATIONS Dependency lines consist of one or more targets, an operator, and zero or more sources. -This creates a relationship where the targets ``depend'' on the sources +This creates a relationship where the targets +.Dq depend +on the sources and are usually created from them. The exact relationship between the target and the source is determined by the operator that separates them. @@ -223,7 +245,7 @@ those of any of its sources. Sources for a target accumulate over dependency lines when this operator is used. The target is removed if -.Nm make +.Nm is interrupted. .It Ic \&! Targets are always re-created, but not until all sources have been @@ -231,7 +253,7 @@ examined and re-created as necessary. Sources for a target accumulate over dependency lines when this operator is used. The target is removed if -.Nm make +.Nm is interrupted. .It Ic \&:: If no sources are specified, the target is always re-created. @@ -240,17 +262,17 @@ been modified more recently than the target. Sources for a target do not accumulate over dependency lines when this operator is used. The target will not be removed if -.Nm make +.Nm is interrupted. .El .Pp -Targets and sources may contain the shell wildcard values +Targets and sources may contain the shell wildcard expressions .Ql ? , .Ql * , .Ql [] and .Ql {} . -The values +The expressions .Ql ? , .Ql * and @@ -258,7 +280,7 @@ and may only be used as part of the final component of the target or source, and must be used to describe existing files. -The value +The expression .Ql {} need not necessarily be used to describe existing files. Expansion is in directory order, not alphabetically as done in the shell. @@ -285,7 +307,9 @@ A .Ql Ic \- causes any non-zero exit status of the command line to be ignored. .Sh VARIABLE ASSIGNMENTS -Variables in make are much like variables in the shell, and, by tradition, +Variables in +.Nm +are much like variables in the shell, and, by tradition, consist of all upper-case letters. The five operators that can be used to assign values to variables are as follows: @@ -307,7 +331,7 @@ the result to the variable. Any newlines in the result are replaced with spaces. .El .Pp -Any white-space before the assigned +Any whitespace before the assigned .Ar value is removed; if the value is being appended, a single space is inserted between the previous contents of the variable and the appended value. @@ -349,13 +373,17 @@ The seven local variables are as follows: The list of all sources for this target; also known as .Ql Va \&> . .It Va .ARCHIVE -The name of the archive file. +The name of the archive file; also known as +.Ql Va \&! . .It Va .IMPSRC The name/path of the source from which the target is to be transformed -(the ``implied'' source); also known as +(the +.Dq implied +source); also known as .Ql Va \&< . .It Va .MEMBER -The name of the archive member. +The name of the archive member; also known as +.Ql Va \&% . .It Va .OODATE The list of sources for this target that were deemed out-of-date; also known as @@ -371,8 +399,11 @@ The name of the target; also known as .Pp The shorter forms .Ql Va @ , +.Ql Va ! , +.Ql Va \&< , +.Ql Va \&% , .Ql Va ? , -.Ql Va \&> +.Ql Va \&> , and .Ql Va * are permitted for backward @@ -382,7 +413,7 @@ The six variables .Ql Va "@D" , .Ql Va "<F" , .Ql Va "<D" , -.Ql Va "*F" +.Ql Va "*F" , and .Ql Va "*D" are @@ -398,10 +429,12 @@ These variables are .Ql Va .ARCHIVE , and .Ql Va .MEMBER . +.El .Pp In addition, -.Nm make -sets or knows about the following variables: +.Nm +sets or knows about the following internal variables or environment +variables: .Bl -tag -width MAKEFLAGS .It Va \&$ A single dollar sign @@ -412,57 +445,129 @@ expands to a single dollar sign. .It Va .MAKE The name that -.Nm make +.Nm was executed with -.Pq Va argv Op 0 +.Pq Va argv Ns Op 0 . .It Va .CURDIR A path to the directory where -.Nm make +.Nm was executed. .It Va .OBJDIR A path to the directory where the targets are built. -.It Ev MAKEFLAGS +At startup, +.Nm +searches for an alternate directory to place target files. +It will attempt to change into this special directory +and will search this directory for makefiles +not found in the current directory. +The following directories are tried in order: +.Pp +.Bl -enum -compact +.It +${MAKEOBJDIRPREFIX}/`cwd` +.It +${MAKEOBJDIR} +.It +obj.${MACHINE} +.It +obj +.It +/usr/obj/`cwd` +.El +.Pp +The first directory that +.Nm +successfully changes into is used. +If either +.Ev MAKEOBJDIRPREFIX +or +.Ev MAKEOBJDIR +is defined but +.Nm +is unable to change into the corresponding directory, +then the current directory is used +without checking the remainder of the list. +If they are undefined and +.Nm +is unable to change into any of the remaining three directories, +then the current directory is used. +.It Va .MAKEFLAGS The environment variable -.Ql Ev MAKEFLAGS +.Ev MAKEFLAGS may contain anything that may be specified on .Nm make Ns 's -command line. +command line. Its contents are stored in +.Nm make Ns 's +.Va .MAKEFLAGS +variable. Anything specified on .Nm make Ns 's command line is appended to the -.Ql Ev MAKEFLAGS +.Va .MAKEFLAGS variable which is then -entered into the environment for all programs which -.Nm make +entered into the environment as +.Ev MAKEFLAGS +for all programs which +.Nm executes. +.It Va MFLAGS +A synonym for +.Va .MAKEFLAGS +provided for backward compatibility. .It Ev PWD -Alternate path to the current directory. Supported if built with WANT_ENV_PWD -defined. -.Nm make +Alternate path to the current directory. +Supported if built with WANT_ENV_PWD defined. +.Nm normally sets .Ql Va .CURDIR to the canonical path given by .Xr getcwd 3 . However, if the environment variable -.Ql Ev PWD +.Ev PWD is set and gives a path to the current directory, then -.Nm make +.Nm sets .Ql Va .CURDIR to the value of -.Ql Ev PWD +.Ev PWD instead. -.Ql Ev PWD -is set to the value of +.Ev PWD +is always set to the value of .Ql Va .OBJDIR for all programs which -.Nm make +.Nm executes. +.It Va .TARGETS +List of targets +.Nm +is currently building. +.It Va .INCLUDES +See +.Ic .INCLUDES +special target. +.It Va .LIBS +See +.Ic .LIBS +special target. +.It Va MACHINE +Name of the machine architecture +.Nm +is running on, obtained from the +.Ev MACHINE +environment variable, or through +.Xr uname 2 +if not defined. +.It Va MACHINE_ARCH +Name of the machine architecture +.Nm +was compiled for, defined at compilation time. .El .Pp Variable expansion may be modified to select or modify each word of the -variable (where a ``word'' is white-space delimited sequence of characters). +variable (where a +.Dq word +is whitespace delimited sequence of characters). The general format of a variable expansion is as follows: .Pp .Dl {variable[:modifier[:...]]} @@ -489,7 +594,7 @@ The wildcard characters may be escaped with a backslash .Pq Ql \e . .It Cm N Ns Ar pattern This is identical to -.Ql Cm M , +.Cm M , but selects all words which do not match the rest of the modifier. .It Cm Q @@ -499,27 +604,27 @@ safely through recursive invocations of .It Cm R Replaces each word in the variable with everything but its suffix. .Sm off -.It Cm S No \&/ Ar old_pattern Xo -.No \&/ Ar new_pattern +.It Cm S No \&/ Ar old_string Xo +.No \&/ Ar new_string .No \&/ Op Cm g .Xc .Sm on Modify the first occurrence of -.Ar old_pattern -in each word to be replaced with -.Ar new_pattern . +.Ar old_string +in each word of the variable's value, replacing it with +.Ar new_string . If a .Ql g is appended to the last slash of the pattern, all occurrences in each word are replaced. If -.Ar old_pattern -begins with a carat +.Ar old_string +begins with a caret .Pq Ql ^ , -.Ar old_pattern +.Ar old_string is anchored at the beginning of each word. If -.Ar old_pattern +.Ar old_string ends with a dollar sign .Pq Ql \&$ , it is anchored at the end of each word. @@ -528,10 +633,10 @@ Inside an ampersand .Pq Ql & is replaced by -.Ar old_pattern . +.Ar old_string . Any character may be used as a delimiter for the parts of the modifier string. -The anchoring, ampersand and delimiter characters may be escaped with a +The anchoring, ampersand, and delimiter characters may be escaped with a backslash .Pq Ql \e . .Pp @@ -541,7 +646,7 @@ and .Ar new_string with the single exception that a backslash is used to prevent the expansion of a dollar sign -.Pq Ql \&$ +.Pq Ql \&$ , not a preceding dollar sign as is usual. .It Cm T Replaces each word in the variable with its last component. @@ -565,8 +670,8 @@ is the substring of to be replaced in .Ar new_string .El -.Sh DIRECTIVES, CONDITIONALS AND FOR LOOPS -Directives, conditionals and for loops reminiscent +.Sh DIRECTIVES, CONDITIONALS, AND FOR LOOPS +Directives, conditionals, and for loops reminiscent of the C programming language are provided in .Nm make . All such structures are identified by a line beginning with a single @@ -694,7 +799,7 @@ of higher precedence than .El .Pp As in C, -.Nm make +.Nm will only evaluate a conditional as far as is necessary to determine its value. Parentheses may be used to change the order of evaluation. @@ -732,7 +837,8 @@ Takes a target name as an argument and evaluates to true if the target has been defined. .El .Pp -.Ar Expression +An +.Ar expression may also be an arithmetic or string comparison. Variable expansion is performed on both sides of the comparison, after which the integral values are compared. A value is interpreted as hexadecimal if it is @@ -749,20 +855,26 @@ If no relational operator is given, it is assumed that the expanded variable is being compared against 0. .Pp When -.Nm make -is evaluating one of these conditional expression, and it encounters -a word it doesn't recognize, either the ``make'' or ``defined'' +.Nm +is evaluating one of these conditional expressions, and it encounters +a word it doesn't recognize, either the +.Dq make +or +.Dq defined expression is applied to it, depending on the form of the conditional. If the form is .Ql Ic .ifdef or .Ql Ic .ifndef , -the ``defined'' expression -is applied. +the +.Dq defined +expression is applied. Similarly, if the form is .Ql Ic .ifmake or -.Ql Ic .ifnmake , the ``make'' +.Ql Ic .ifnmake , +the +.Dq make expression is applied. .Pp If the conditional evaluates to true the parsing of the makefile continues @@ -791,10 +903,10 @@ The syntax of a for loop is: .Xc .El After the for -.Ic expression +.Ar expression is evaluated, it is split into words. The iteration -.Ic variable +.Ar variable is successively set to each word, and substituted in the .Ic make-rules inside the body of the for loop. @@ -819,18 +931,18 @@ Normally used to mark recursive .Nm make Ns 's . .It Ic .NOTMAIN Normally -.Nm make +.Nm selects the first target it encounters as the default target to be built if no target was specified. This source prevents this target from being selected. .It Ic .OPTIONAL If a target is marked with this attribute and -.Nm make +.Nm can't figure out how to create it, it will ignore this fact and assume the file isn't needed or already exists. .It Ic .PRECIOUS When -.Nm make +.Nm is interrupted, it removes any partially made targets. This source prevents the target from being removed. .It Ic .SILENT @@ -839,7 +951,7 @@ as if they all were preceded by an at sign .Pq Ql @ . .It Ic .USE Turn the target into -.Nm make Ns 's . +.Nm make Ns 's version of a macro. When the target is used as a source for another target, the other target acquires the commands, sources, and attributes (except for @@ -869,7 +981,7 @@ This is sort of a .Ic .USE rule for any target (that was used only as a source) that -.Nm make +.Nm can't figure out any other way to create. Only the shell script is used. The @@ -888,17 +1000,38 @@ attribute. If no sources are specified, this is the equivalent of specifying the .Fl i option. +.It Ic .INCLUDES +A list of suffixes that indicate files that can be included in a source +file. The suffix must have already been declared with +.Ic .SUFFIXES ; +any suffix so declared will have the directories on its search path (see +.Ic .PATH ) +placed in the +.Va .INCLUDES +special variable, each preceeded by a +.Fl I +flag. .It Ic .INTERRUPT If -.Nm make +.Nm is interrupted, the commands for this target will be executed. +.It Ic .LIBS +This does for libraries what +.Ic .INCLUDES +does for include files, except that the flag used is +.Fl L . .It Ic .MAIN If no target is specified when -.Nm make +.Nm is invoked, this target will be built. +This is always set, either +explicitly, or implicitly when +.Nm +selects the default target, to give the user a way to refer to the default +target on the command line. .It Ic .MAKEFLAGS This target provides a way to specify flags for -.Nm make +.Nm when the makefile is used. The flags are as if typed to the shell, though the .Fl f @@ -928,6 +1061,17 @@ The variable .Ql Ev VPATH used to add directories to the search path is permitted only for backward compatibility, and is not recommended for use in new Makefiles. +.It Ic .PATH\fIsuffix\fR +The sources are directories which are to be searched for suffixed files +not found in the current directory. +.Nm Make +first searches the suffixed search path, before reverting to the default +path if the file is not found there. +This form is required for +.Ic .LIBS +and +.Ic .INCLUDES +to work. .It Ic .PHONY Apply the .Ic .PHONY @@ -953,36 +1097,26 @@ command in the file. Each source specifies a suffix to .Nm make . If no sources are specified, any previous specified suffices are deleted. -.Sh SEARCH PATH -.Nm Make -searches for -.Ql Pa Makefile -in the following directories, in order: +.Sh COMPATIBILITY +Older versions of +.Nm +used +.Ev MAKE +instead of +.Ev MAKEFLAGS . +This was removed for POSIX compatibility. +The internal variable +.Va MAKE +is set to the same value as +.Va .MAKE ; +support for this may be removed in the future. .Pp -.Bl -enum -compact -.It -${MAKEOBJDIRPREFIX}`cwd` -.It -${MAKEOBJDIR} -.It -obj.${MACHINE} -.It -obj -.It -/usr/obj${MACHINE}`cwd` -.It -The current directory (`cwd`). -.El -.Pp -If -.Nm make -finds the -.Ql Pa Makefile -someplace other than the current working directory, it adds the CWD to -the search path. +Most of the more esoteric features of +.Nm +should probably be avoided for greater compatibility. .Sh ENVIRONMENT .Nm Make -utilizes the following environment variables, if they exist: +uses the following environment variables, if they exist: .Ev MACHINE , .Ev MAKE , .Ev MAKEFLAGS , @@ -992,23 +1126,60 @@ and .Ev PWD . .Sh FILES .Bl -tag -width /usr/share/doc/psd/12.make -compact -.It .depend +.It Pa .depend list of dependencies -.It Makefile +.It Pa Makefile list of dependencies -.It makefile +.It Pa makefile list of dependencies .It obj object directory -.It sys.mk +.It Pa sys.mk system makefile -.It /usr/share/mk +.It Pa /usr/share/mk system makefile directory .It /usr/share/doc/psd/12.make PMake tutorial -.It /usr/obj -system object directory prefix +.It Pa /usr/obj +default +.Ev MAKEOBJDIRPREFIX +directory. .El +.Sh BUGS +The determination of +.Va .OBJDIR +is contorted to the point of absurdity. +.Pp +In the presence of several +.Ic .MAIN +special targets, +.Nm +silently ignores all but the first. +.Pp +.Va .TARGETS +is not set to the default target when +.Nm +is invoked without a target name and no +.Ic .MAIN +special target exists. +.Pp +The evaluation of +.Ar expression +in a test is very simple-minded. Currently, the only form that works is +.Ql .if ${VAR} op something +For instance, you should write tests as +.Ql .if ${VAR} = "string" +not the other way around, which doesn't work. +.Pp +For loops are expanded before tests, so a fragment such as: +.Bd -literal +\&.for TMACHINE in ${SHARED_ARCHS} +\&.if ${TMACHINE} = ${MACHINE} + ... +\&.endif +\&.endfor +.Ed +won't work, and should be rewritten the other way around. .Sh SEE ALSO .Xr mkdep 1 .Rs @@ -1016,6 +1187,6 @@ system object directory prefix .Re .Sh HISTORY A -.Nm Make +.Nm command appeared in .At v7 . diff --git a/usr.bin/make/make.c b/usr.bin/make/make.c index c9c4b61..509215c 100644 --- a/usr.bin/make/make.c +++ b/usr.bin/make/make.c @@ -35,11 +35,16 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id$ + * $Id: make.c,v 1.8 1997/02/22 19:27:16 peter Exp $ */ #ifndef lint +#if 0 static char sccsid[] = "@(#)make.c 8.1 (Berkeley) 6/6/93"; +#else +static const char rcsid[] = + "$Id$"; +#endif #endif /* not lint */ /*- @@ -70,7 +75,7 @@ static char sccsid[] = "@(#)make.c 8.1 (Berkeley) 6/6/93"; * * Make_OODate Determine if a target is out-of-date. * - * Make_HandleUse See if a child is a .USE node for a parent + * Make_HandleUse See if a child is a .USE node for a parent * and perform the .USE actions if so. */ @@ -291,12 +296,13 @@ MakeAddChild (gnp, lp) { GNode *gn = (GNode *) gnp; Lst l = (Lst) lp; + if (!gn->make && !(gn->type & OP_USE)) { (void)Lst_EnQueue (l, (ClientData)gn); } return (0); } - + /*- *----------------------------------------------------------------------- * Make_HandleUse -- @@ -325,7 +331,7 @@ Make_HandleUse (cgn, pgn) register GNode *cgn; /* The .USE node */ register GNode *pgn; /* The target of the .USE node */ { - register GNode *gn; /* A child of the .USE node */ + register GNode *gn; /* A child of the .USE node */ register LstNode ln; /* An element in the children list */ if (cgn->type & (OP_USE|OP_TRANSFORM)) { @@ -360,7 +366,7 @@ Make_HandleUse (cgn, pgn) * whether to queue the parent or examine its children... */ if (cgn->type & OP_USE) { - pgn->unmade -= 1; + pgn->unmade--; } } return (0); @@ -408,8 +414,7 @@ Make_Update (cgn) char *p1; cname = Var_Value (TARGET, cgn, &p1); - if (p1) - free(p1); + efree(p1); /* * If the child was actually made, see what its modification time is @@ -538,8 +543,7 @@ Make_Update (cgn) Var_Set (PREFIX, cpref, pgn); } } - if (p1) - free(p1); + efree(p1); Lst_Close (cgn->iParents); } } @@ -610,8 +614,7 @@ MakeAddAllSrc (cgnp, pgnp) */ Var_Append(OODATE, child, pgn); } - if (p1) - free(p1); + efree(p1); } return (0); } @@ -654,8 +657,7 @@ Make_DoAllVar (gn) if (gn->type & OP_JOIN) { char *p1; Var_Set (TARGET, Var_Value (ALLSRC, gn, &p1), gn); - if (p1) - free(p1); + efree(p1); } } diff --git a/usr.bin/make/make.h b/usr.bin/make/make.h index fad9a9d..3845e7d 100644 --- a/usr.bin/make/make.h +++ b/usr.bin/make/make.h @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)make.h 8.3 (Berkeley) 6/13/95 - * $Id: make.h,v 1.8 1998/11/14 16:15:04 dg Exp $ + * $Id: make.h,v 1.9 1999/07/31 20:53:02 hoek Exp $ */ /*- @@ -48,21 +48,32 @@ #define _MAKE_H_ #include <sys/types.h> +#include <sys/param.h> #include <stdio.h> #include <string.h> #include <ctype.h> -#if !defined(MAKE_BOOTSTRAP) && defined(BSD) -#include <sys/cdefs.h> -#else -#ifndef __P -#if defined(__STDC__) || defined(__cplusplus) -#define __P(protos) protos /* full-blown ANSI C */ + +#if !defined(MAKE_BOOTSTRAP) && defined(BSD4_4) +# include <sys/cdefs.h> #else -#define __P(protos) () /* traditional C preprocessor */ -#endif +# ifndef __P +# if defined(__STDC__) || defined(__cplusplus) +# define __P(protos) protos /* full-blown ANSI C */ +# else +# define __P(protos) () /* traditional C preprocessor */ +# endif +# endif +# ifndef __STDC__ +# ifndef const +# define const +# endif +# ifndef volatile +# define volatile +# endif +# endif #endif -#endif -#if __STDC__ + +#ifdef __STDC__ #include <stdlib.h> #include <unistd.h> #endif @@ -108,7 +119,7 @@ typedef struct GNode { Boolean make; /* TRUE if this target needs to be remade */ enum { UNMADE, BEINGMADE, MADE, UPTODATE, ERROR, ABORTED, - CYCLE, ENDCYCLE, + CYCLE, ENDCYCLE } made; /* Set to reflect the state of processing * on this node: * UNMADE - Not examined yet diff --git a/usr.bin/make/nonints.h b/usr.bin/make/nonints.h index 1c56450..4b8b211 100644 --- a/usr.bin/make/nonints.h +++ b/usr.bin/make/nonints.h @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)nonints.h 8.3 (Berkeley) 3/19/94 - * $Id$ + * $Id: nonints.h,v 1.6 1997/02/22 19:27:17 peter Exp $ */ /* arch.c */ @@ -73,6 +73,9 @@ int PrintAddr __P((ClientData, ClientData)); void Finish __P((int)); char *estrdup __P((const char *)); void *emalloc __P((size_t)); +/* efree(x) works when x==NULL. STDC behavior, may need some different + * definition for cross-builds on deficient systems */ +#define efree free void *erealloc __P((void *, size_t)); void enomem __P((void)); int eunlink __P((const char *)); diff --git a/usr.bin/make/parse.c b/usr.bin/make/parse.c index fda738a..5b2ceb7 100644 --- a/usr.bin/make/parse.c +++ b/usr.bin/make/parse.c @@ -39,9 +39,10 @@ #ifndef lint #if 0 static char sccsid[] = "@(#)parse.c 8.3 (Berkeley) 3/19/94"; -#endif +#else static const char rcsid[] = - "$Id: parse.c,v 1.19 1998/05/25 03:28:37 steve Exp $"; + "$Id: parse.c,v 1.20 1999/01/08 18:37:34 jkh Exp $"; +#endif #endif /* not lint */ /*- @@ -86,7 +87,7 @@ static const char rcsid[] = * Parse_MainName Returns a Lst of the main target to create. */ -#if __STDC__ +#ifdef __STDC__ #include <stdarg.h> #else #include <varargs.h> @@ -313,7 +314,7 @@ ParseFindKeyword (str) */ /* VARARGS */ void -#if __STDC__ +#ifdef __STDC__ Parse_Error(int type, char *fmt, ...) #else Parse_Error(va_alist) @@ -321,7 +322,7 @@ Parse_Error(va_alist) #endif { va_list ap; -#if __STDC__ +#ifdef __STDC__ va_start(ap, fmt); #else int type; /* Error type (PARSE_WARNING, PARSE_FATAL) */ @@ -470,7 +471,7 @@ ParseDoOp (gnp, opp) * *--------------------------------------------------------------------- */ -int +static int ParseAddDep(pp, sp) ClientData pp; ClientData sp; @@ -2615,18 +2616,18 @@ Parse_End() Lst Parse_MainName() { - Lst main; /* result list */ + Lst listmain; /* result list */ - main = Lst_Init (FALSE); + listmain = Lst_Init (FALSE); if (mainNode == NILGNODE) { Punt ("no target to make."); /*NOTREACHED*/ } else if (mainNode->type & OP_DOUBLEDEP) { - (void) Lst_AtEnd (main, (ClientData)mainNode); - Lst_Concat(main, mainNode->cohorts, LST_CONCNEW); + (void) Lst_AtEnd (listmain, (ClientData)mainNode); + Lst_Concat(listmain, mainNode->cohorts, LST_CONCNEW); } else - (void) Lst_AtEnd (main, (ClientData)mainNode); - return (main); + (void) Lst_AtEnd (listmain, (ClientData)mainNode); + return (listmain); } diff --git a/usr.bin/make/pathnames.h b/usr.bin/make/pathnames.h index 4405682..d456c35 100644 --- a/usr.bin/make/pathnames.h +++ b/usr.bin/make/pathnames.h @@ -31,11 +31,21 @@ * SUCH DAMAGE. * * from: @(#)pathnames.h 5.2 (Berkeley) 6/1/90 - * $Id$ + * $Id: pathnames.h,v 1.7 1997/02/22 19:27:20 peter Exp $ */ +#ifndef _PATH_OBJDIR #define _PATH_OBJDIR "obj" +#endif /* ! _PATH_OBJDIR */ +#ifndef _PATH_OBJDIRPREFIX #define _PATH_OBJDIRPREFIX "/usr/obj" +#endif /* ! _PATH_OBJDIRPREFIX */ +#ifndef _PATH_DEFSHELLDIR #define _PATH_DEFSHELLDIR "/bin" +#endif /* ! _PATH_DEFSHELLDIR */ +#ifndef _PATH_DEFSYSMK #define _PATH_DEFSYSMK "sys.mk" +#endif /* ! _PATH_DEFSYSMK */ +#ifndef _PATH_DEFSYSPATH #define _PATH_DEFSYSPATH "/usr/share/mk" +#endif /* ! _PATH_DEFSYSPATH */ diff --git a/usr.bin/make/sprite.h b/usr.bin/make/sprite.h index d2646f4..ca55509 100644 --- a/usr.bin/make/sprite.h +++ b/usr.bin/make/sprite.h @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)sprite.h 8.1 (Berkeley) 6/6/93 - * $Id$ + * $Id: sprite.h,v 1.7 1997/02/22 19:27:21 peter Exp $ */ /* @@ -57,10 +57,10 @@ typedef int Boolean; #ifndef TRUE #define TRUE 1 -#endif TRUE +#endif /* TRUE */ #ifndef FALSE #define FALSE 0 -#endif FALSE +#endif /* FALSE */ /* * Functions that must return a status can return a ReturnStatus to @@ -91,7 +91,7 @@ typedef int ReturnStatus; #define USER_NIL 0 #ifndef NULL #define NULL 0 -#endif NULL +#endif /* NULL */ /* * An address is just a pointer in C. It is defined as a character pointer diff --git a/usr.bin/make/str.c b/usr.bin/make/str.c index 03ea87a..7d17dd6 100644 --- a/usr.bin/make/str.c +++ b/usr.bin/make/str.c @@ -35,11 +35,16 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id$ + * $Id: str.c,v 1.9 1997/02/22 19:27:23 peter Exp $ */ #ifndef lint +#if 0 static char sccsid[] = "@(#)str.c 5.8 (Berkeley) 6/1/90"; +#else +static const char rcsid[] = + "$Id$"; +#endif #endif /* not lint */ #include "make.h" @@ -165,12 +170,12 @@ brk_string(str, store_argc, expand) switch(ch = *p) { case '"': case '\'': - if (inquote) + if (inquote) { if (inquote == ch) inquote = '\0'; else break; - else { + } else { inquote = (char) ch; /* Don't miss "" or '' */ if (start == NULL && p[1] == inquote) { diff --git a/usr.bin/make/suff.c b/usr.bin/make/suff.c index 040f9c5..898cc9e 100644 --- a/usr.bin/make/suff.c +++ b/usr.bin/make/suff.c @@ -35,11 +35,16 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: suff.c,v 1.8 1997/02/22 19:27:23 peter Exp $ + * $Id: suff.c,v 1.9 1998/04/26 09:44:48 phk Exp $ */ #ifndef lint +#if 0 static char sccsid[] = "@(#)suff.c 8.4 (Berkeley) 3/21/94"; +#else +static const char rcsid[] = + "$Id"; +#endif #endif /* not lint */ /*- @@ -660,7 +665,7 @@ Suff_EndTransform(gnp, dummy) (void)SuffParseTransform(gn->name, &s, &t); if (DEBUG(SUFF)) { - printf("deleting transformation from %s to %s\n", + printf("deleting transformation from `%s' to `%s'\n", s->name, t->name); } @@ -1697,8 +1702,7 @@ SuffFindArchiveDeps(gn, slst) for (i = (sizeof(copy)/sizeof(copy[0]))-1; i >= 0; i--) { char *p1; Var_Set(copy[i], Var_Value(copy[i], mem, &p1), gn); - if (p1) - free(p1); + efree(p1); } @@ -2032,8 +2036,7 @@ sfnd_abort: gn->suffix = (targ == NULL) ? NULL : targ->suff; if (gn->suffix) gn->suffix->refCount++; - if (gn->path != NULL) - free(gn->path); + efree(gn->path); gn->path = estrdup(gn->name); } @@ -2133,8 +2136,7 @@ sfnd_abort: /* * So Dir_MTime doesn't go questing for it... */ - if (gn->path) - free(gn->path); + efree(gn->path); gn->path = estrdup(gn->name); /* diff --git a/usr.bin/make/targ.c b/usr.bin/make/targ.c index 3fdc65b..21aaa64 100644 --- a/usr.bin/make/targ.c +++ b/usr.bin/make/targ.c @@ -35,11 +35,16 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id$ + * $Id: targ.c,v 1.7 1997/02/22 19:27:24 peter Exp $ */ #ifndef lint +#if 0 static char sccsid[] = "@(#)targ.c 8.2 (Berkeley) 3/19/94"; +#else +static const char rcsid[] = + "$Id"; +#endif #endif /* not lint */ /*- @@ -210,8 +215,7 @@ TargFreeGN (gnp) free(gn->name); - if (gn->path) - free(gn->path); + efree(gn->path); Lst_Destroy(gn->iParents, NOFREE); Lst_Destroy(gn->cohorts, NOFREE); @@ -462,17 +466,12 @@ Targ_FmtTime (time) time_t time; { struct tm *parts; - static char buf[40]; - static char *months[] = { - "Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" - }; + static char buf[128]; parts = localtime(&time); - sprintf (buf, "%d:%02d:%02d %s %d, %d", - parts->tm_hour, parts->tm_min, parts->tm_sec, - months[parts->tm_mon], parts->tm_mday, 1900 + parts->tm_year); + strftime(buf, sizeof buf, "%k:%M:%S %b %d, %Y", parts); + buf[sizeof(buf) - 1] = '\0'; return(buf); } diff --git a/usr.bin/make/var.c b/usr.bin/make/var.c index 92b35b8..2f29567 100644 --- a/usr.bin/make/var.c +++ b/usr.bin/make/var.c @@ -35,11 +35,16 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: var.c,v 1.12 1999/04/19 07:30:04 imp Exp $ + * $Id: var.c,v 1.13 1999/07/31 20:53:02 hoek Exp $ */ #ifndef lint +#if 0 static char sccsid[] = "@(#)var.c 8.3 (Berkeley) 3/19/94"; +#else +static const char rcsid[] = + "$Id"; +#endif #endif /* not lint */ /*- @@ -141,15 +146,17 @@ typedef struct Var { * modified variables */ } Var; +/* Var*Pattern flags */ +#define VAR_SUB_GLOBAL 0x01 /* Apply substitution globally */ +#define VAR_MATCH_START 0x08 /* Match at start of word */ +#define VAR_MATCH_END 0x10 /* Match at end of word */ + typedef struct { char *lhs; /* String to match */ int leftLen; /* Length of string */ char *rhs; /* Replacement string (w/ &'s removed) */ int rightLen; /* Length of replacement */ int flags; -#define VAR_SUB_GLOBAL 1 /* Apply substitution globally */ -#define VAR_MATCH_START 2 /* Match at start of word */ -#define VAR_MATCH_END 4 /* Match at end of word */ } VarPattern; static int VarCmp __P((ClientData, ClientData)); @@ -266,8 +273,7 @@ VarFind (name, ctxt, flags) (int (*)(ClientData, ClientData)) strcmp) != NILLNODE) { localCheckEnvFirst = TRUE; - } - else { + } else { localCheckEnvFirst = FALSE; } @@ -1150,7 +1156,7 @@ Var_Parse (str, ctxt, err, lengthPtr, freePtr) { register char *tstr; /* Pointer into str */ Var *v; /* Variable in invocation */ - register char *cp; /* Secondary pointer into str (place marker + char *cp; /* Secondary pointer into str (place marker * for tstr) */ Boolean haveModifier;/* TRUE if have modifiers for the variable */ register char endc; /* Ending character when variable in parens @@ -1196,6 +1202,7 @@ Var_Parse (str, ctxt, err, lengthPtr, freePtr) * specially as they are the only four that will be set * when dynamic sources are expanded. */ + /* XXX: It looks like $% and $! are reversed here */ switch (str[1]) { case '@': return("$(.TARGET)"); @@ -1501,6 +1508,7 @@ Var_Parse (str, ctxt, err, lengthPtr, freePtr) pattern.flags = 0; delim = tstr[1]; tstr += 2; + /* * If pattern begins with '^', it is anchored to the * start of the word -- skip over it and flag pattern. |