o Print a warning when we are given two scripts for one target.
authorMatthew Dillon <dillon@dragonflybsd.org>
Wed, 24 Nov 2004 07:15:46 +0000 (07:15 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Wed, 24 Nov 2004 07:15:46 +0000 (07:15 +0000)
  This is neither as wide-reaching nor intensive as NetBSD's
  similar, but the warning uses the same text.
o Remove local prototypes for main().
o Don't declare things as extern when they will be static.
o When formatting the time for a target, use %H instead of %k,
  which is mostly the same, but uses a non-extension option.
o Document the parsing bug.
o Fix spurious three-space indentation in a four-space indentation
  file.
o Remove 6-years-stale #if0, the behaviour isn't ever going to
  be limited to compatible mode, as far as I know, since we use
  it...
o Code that has been #if0'd with the comment "WHY" since revision
  1.1 can disappear.

Submitted-by: Max Okumoto <okumoto@ucsd.edu>
Taken-from: FreeBSD (as with the previous patches)

usr.bin/make/Makefile
usr.bin/make/job.c
usr.bin/make/job.h
usr.bin/make/make.1
usr.bin/make/make.c
usr.bin/make/nonints.h
usr.bin/make/parse.c
usr.bin/make/targ.c

index bd6ab2a..7d64d33 100644 (file)
@@ -1,6 +1,6 @@
 #      @(#)Makefile    5.2 (Berkeley) 12/28/90
 # $FreeBSD: src/usr.bin/make/Makefile,v 1.13.2.1 2001/05/25 08:33:40 sobomax Exp $
-# $DragonFly: src/usr.bin/make/Makefile,v 1.5 2004/11/18 02:01:39 dillon Exp $
+# $DragonFly: src/usr.bin/make/Makefile,v 1.6 2004/11/24 07:15:46 dillon Exp $
 
 PROG=  make
 CFLAGS+=-I${.CURDIR}
@@ -15,7 +15,7 @@ SRCS+=        lstAppend.c lstAtEnd.c lstAtFront.c lstClose.c lstConcat.c \
 
 NOSHARED?=     YES
 
-CFLAGS+=-DMAKE_VERSION=\"5200205220\"
+CFLAGS+=-DMAKE_VERSION=\"5200208240\"
 
 main.o: ${MAKEFILE}
 
index 21c0fd3..05d71f3 100644 (file)
@@ -38,7 +38,7 @@
  *
  * @(#)job.c   8.2 (Berkeley) 3/19/94
  * $FreeBSD: src/usr.bin/make/job.c,v 1.17.2.2 2001/02/13 03:13:57 will Exp $
- * $DragonFly: src/usr.bin/make/job.c,v 1.16 2004/11/18 02:01:39 dillon Exp $
+ * $DragonFly: src/usr.bin/make/job.c,v 1.17 2004/11/24 07:15:46 dillon Exp $
  */
 
 #ifndef OLD_JOKE
@@ -2645,7 +2645,7 @@ JobInterrupt(int runINTERRUPT, int signo)
 
     aborting = ABORT_INTERRUPT;
 
-   (void) Lst_Open(jobs);
+    (void) Lst_Open(jobs);
     while ((ln = Lst_Next(jobs)) != NULL) {
        job = (Job *) Lst_Datum(ln);
 
@@ -2686,7 +2686,7 @@ JobInterrupt(int runINTERRUPT, int signo)
     }
 
 #ifdef REMOTE
-   (void)Lst_Open(stoppedJobs);
+    (void)Lst_Open(stoppedJobs);
     while ((ln = Lst_Next(stoppedJobs)) != NULL) {
        job = (Job *) Lst_Datum(ln);
 
index 96f4e04..31575fa 100644 (file)
@@ -38,7 +38,7 @@
  *
  *     from: @(#)job.h 8.1 (Berkeley) 6/6/93
  * $FreeBSD: src/usr.bin/make/job.h,v 1.11 2000/01/17 06:43:41 kris Exp $
- * $DragonFly: src/usr.bin/make/job.h,v 1.8 2004/11/12 22:57:04 dillon Exp $
+ * $DragonFly: src/usr.bin/make/job.h,v 1.9 2004/11/24 07:15:46 dillon Exp $
  */
 
 /*-
@@ -204,7 +204,11 @@ typedef struct Shell {
     char          *exit;       /* exit on error */
 }               Shell;
 
-
+/*
+ * If REMOTE is defined then these things need exposed, otherwise they are
+ * static to job.c!
+ */
+#ifdef REMOTE
 extern char    *targFmt;       /* Format string for banner that separates
                                 * output from multiple jobs. Contains a
                                 * single %s where the name of the node being
@@ -219,6 +223,7 @@ extern Lst          jobs;           /* List of active job descriptors */
 extern Lst     stoppedJobs;    /* List of jobs that are stopped or didn't
                                 * quite get started */
 extern Boolean jobFull;        /* Non-zero if no more jobs should/will start*/
+#endif
 extern int     maxJobs;        /* Number of jobs that may run */
 
 void Job_Touch(GNode *, Boolean);
index 73b431d..b5bc227 100644 (file)
@@ -31,7 +31,7 @@
 .\"
 .\"    from: @(#)make.1        8.4 (Berkeley) 3/19/94
 .\" $FreeBSD: src/usr.bin/make/make.1,v 1.29.2.15 2002/12/17 19:01:18 seanc Exp $
-.\" $DragonFly: src/usr.bin/make/make.1,v 1.6 2004/11/18 02:01:39 dillon Exp $
+.\" $DragonFly: src/usr.bin/make/make.1,v 1.7 2004/11/24 07:15:46 dillon Exp $
 .\"
 .Dd July 2, 2004
 .Dt MAKE 1
@@ -1264,14 +1264,26 @@ For instance, you should write tests as
 not the other way around, which doesn't work.
 .Pp
 For loops are expanded before tests, so a fragment such as:
-.Bd -literal
+.Bd -literal -offset indent
 \&.for TMACHINE in ${SHARED_ARCHS}
 \&.if ${TMACHINE} = ${MACHINE}
      ...
 \&.endif
 \&.endfor
 .Ed
+.Pp
 won't work, and should be rewritten the other way around.
+.Pp
+The parsing code is broken with respect to handling a semicolon
+after a colon, so a fragment like this will fail:
+.Bd -literal -offset indent
+HDRS=   foo.h bar.h
+
+all:
+\&.for h in ${HDRS:S;^;${.CURDIR}/;}
+     ...
+\&.endfor
+.Ed
 .Sh SEE ALSO
 .Xr mkdep 1 ,
 .Xr make.conf 5
index 99589a7..d798b5d 100644 (file)
@@ -37,7 +37,7 @@
  *
  * @(#)make.c  8.1 (Berkeley) 6/6/93
  * $FreeBSD: src/usr.bin/make/make.c,v 1.11 1999/09/11 13:08:01 hoek Exp $
- * $DragonFly: src/usr.bin/make/make.c,v 1.8 2004/11/12 22:57:04 dillon Exp $
+ * $DragonFly: src/usr.bin/make/make.c,v 1.9 2004/11/24 07:15:46 dillon Exp $
  */
 
 /*-
@@ -226,15 +226,8 @@ Make_OODate (GNode *gn)
            DEBUGF(MAKE, (":: operator and no sources..."));
        }
        oodate = TRUE;
-    } else {
-#if 0
-       /* WHY? */
-       DEBUGF(MAKE, ("source %smade...", gn->childMade ? "" : "not "));
-       oodate = gn->childMade;
-#else
+    } else
        oodate = FALSE;
-#endif /* 0 */
-    }
 
     /*
      * If the target isn't out-of-date, the parents need to know its
index 10c705a..0141902 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     from: @(#)nonints.h     8.3 (Berkeley) 3/19/94
  * $FreeBSD: src/usr.bin/make/nonints.h,v 1.8 1999/08/28 01:03:35 peter Exp $
- * $DragonFly: src/usr.bin/make/Attic/nonints.h,v 1.12 2004/11/13 07:25:17 dillon Exp $
+ * $DragonFly: src/usr.bin/make/Attic/nonints.h,v 1.13 2004/11/24 07:15:46 dillon Exp $
  */
 
 /* arch.c */
@@ -64,7 +64,6 @@ void For_Run (void);
 
 /* main.c */
 void Main_ParseArgLine(char *);
-int main(int, char **);
 char *Cmd_Exec(char *, char **);
 void Debug(const char *, ...);
 void Error(const char *, ...);
index eaf184d..f10ad30 100644 (file)
@@ -37,7 +37,7 @@
  *
  * @(#)parse.c 8.3 (Berkeley) 3/19/94
  * $FreeBSD: src/usr.bin/make/parse.c,v 1.22.2.2 2004/07/10 08:14:42 eik Exp $
- * $DragonFly: src/usr.bin/make/parse.c,v 1.12 2004/11/13 22:42:39 dillon Exp $
+ * $DragonFly: src/usr.bin/make/parse.c,v 1.13 2004/11/24 07:15:46 dillon Exp $
  */
 
 /*-
@@ -1498,6 +1498,10 @@ ParseAddCmd(void *gnp, void *cmd)
     /* if target already supplied, ignore commands */
     if (!(gn->type & OP_HAS_COMMANDS))
        (void)Lst_AtEnd(gn->commands, cmd);
+    else
+       Parse_Error(PARSE_WARNING,
+                   "duplicate script for target \"%s\" ignored",
+                   gn->name);
     return(0);
 }
 
@@ -2218,11 +2222,7 @@ test_char:
                break;
            case '#':
                if (!ignComment) {
-                   if (
-#if 0
-                   compatMake &&
-#endif
-                   (lastc != '\\')) {
+                   if (lastc != '\\') {
                        /*
                         * If the character is a hash mark and it isn't escaped
                         * (or we're being compatible), the thing is a comment.
index b8866e8..2a4ab9b 100644 (file)
@@ -37,7 +37,7 @@
  *
  * @(#)targ.c  8.2 (Berkeley) 3/19/94
  * $FreeBSD: src/usr.bin/make/targ.c,v 1.10 1999/09/11 13:08:02 hoek Exp $
- * $DragonFly: src/usr.bin/make/targ.c,v 1.10 2004/11/13 22:42:39 dillon Exp $
+ * $DragonFly: src/usr.bin/make/targ.c,v 1.11 2004/11/24 07:15:46 dillon Exp $
  */
 
 /*-
@@ -446,7 +446,7 @@ Targ_FmtTime (time_t time)
 
     parts = localtime(&time);
 
-    strftime(buf, sizeof buf, "%k:%M:%S %b %d, %Y", parts);
+    strftime(buf, sizeof buf, "%H:%M:%S %b %d, %Y", parts);
     buf[sizeof(buf) - 1] = '\0';
     return(buf);
 }