Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/make/unit-tests make(1): extend and explain the test...



details:   https://anonhg.NetBSD.org/src/rev/47c494ac1c3d
branches:  trunk
changeset: 938421:47c494ac1c3d
user:      rillig <rillig%NetBSD.org@localhost>
date:      Mon Sep 07 19:17:36 2020 +0000

description:
make(1): extend and explain the test for comments

diffstat:

 usr.bin/make/unit-tests/comment.exp |   9 ++-
 usr.bin/make/unit-tests/comment.mk  |  85 +++++++++++++++++++++++++++---------
 2 files changed, 69 insertions(+), 25 deletions(-)

diffs (113 lines):

diff -r 9d7df292f1c2 -r 47c494ac1c3d usr.bin/make/unit-tests/comment.exp
--- a/usr.bin/make/unit-tests/comment.exp       Mon Sep 07 19:05:41 2020 +0000
+++ b/usr.bin/make/unit-tests/comment.exp       Mon Sep 07 19:17:36 2020 +0000
@@ -1,5 +1,6 @@
-comment testing start
-this is foo
-This is how a comment looks: # comment
-comment testing done
+echo This is a shell comment: # comment
+This is a shell comment:
+echo This is not a shell comment: '# comment'
+This is not a shell comment: # comment
+A shell comment can#not start in the middle of a word.
 exit status 0
diff -r 9d7df292f1c2 -r 47c494ac1c3d usr.bin/make/unit-tests/comment.mk
--- a/usr.bin/make/unit-tests/comment.mk        Mon Sep 07 19:05:41 2020 +0000
+++ b/usr.bin/make/unit-tests/comment.mk        Mon Sep 07 19:17:36 2020 +0000
@@ -1,31 +1,74 @@
-# This is a comment
-.if ${MACHINE_ARCH} == something
-FOO=bar
-.endif
+# $NetBSD: comment.mk,v 1.2 2020/09/07 19:17:36 rillig Exp $
+#
+# Demonstrate how comments are written in makefiles.
+
+# This is a comment.
 
 #\
-       Multiline comment
-
-BAR=# defined
-FOOBAR= # defined 
+This is a multiline comment.
 
-# This is an escaped comment \
-that keeps going until the end of this line
-
-# Another escaped comment \
+# Another multiline comment \
 that \
 goes \
-on
+on and on.
+
+ # Comments can be indented, but that is rather unusual.
+
+       # Comments can be indented with a tab.
+       # These are not shell commands, they are just makefile comments.
+
+.if 1                  # There can be comments after conditions.
+.endif                 # And after the closing directive.
+
+VAR=                   # This comment makes the variable value empty.
+.if ${VAR} != ""
+.  error
+.endif
+
+# The comment does not need to start at the beginning of a word (as in the
+# shell), it can start anywhere.
+VAR=# defined but empty
+
+# The space before the comment is always trimmed.
+VAR=   value
+.if ${VAR} != "value"
+.  error
+.endif
 
 # This is NOT an escaped comment due to the double backslashes \\
-all: hi foo bar
-       @echo comment testing done
+VAR=   not part of the comment
+.if ${VAR} != "not part of the comment"
+.  error
+.endif
 
-hi:
-       @echo comment testing start
+# To escape a comment sign, precede it with a backslash.
+VAR=   \#              # Both in the assignment.
+.if ${VAR} != "\#"     # And in the comparison.
+.  error
+.endif
 
-foo:
-       @echo this is $@
+# Since 2012-03-24 the variable modifier :[#] does not need to be escaped.
+# To keep the parsing code simple, any "[#" does not start a comment, even
+# outside of a variable expression.
+WORDS= ${VAR:[#]} [#
+.if ${WORDS} != "1 [#"
+.  error
+.endif
 
-bar:
-       @echo This is how a comment looks: '# comment'
+# An odd number of comment signs makes a line continuation, \\\
+no matter if it is 3 or 5 \\\\\
+or 9 backslashes. \\\\\\\\\
+This is the last line of the comment.
+VAR=   no comment anymore
+.if ${VAR} != "no comment anymore"
+.  error
+.endif
+
+all:
+# In the commands associated with a target, the '#' does not start a makefile
+# comment.  The '#' is just passed to the shell, like any ordinary character.
+       echo This is a shell comment: # comment
+# If the '#' were to start a makefile comment, the following shell command
+# would have unbalanced quotes.
+       echo This is not a shell comment: '# comment'
+       @echo A shell comment can#not start in the middle of a word.



Home | Main Index | Thread Index | Old Index