diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | read.c | 11 | ||||
-rw-r--r-- | tests/ChangeLog | 5 | ||||
-rw-r--r-- | tests/scripts/features/targetvars | 18 |
4 files changed, 40 insertions, 1 deletions
@@ -1,3 +1,10 @@ +2000-06-21 Paul D. Smith <psmith@gnu.org> + + * read.c (read_makefile): If we find a semicolon in the target + definition, remember where it was. If the line turns out to be a + target-specific variable, add back the semicolon and everything + after it. Fixes PR/1709. + 2000-06-19 Paul D. Smith <psmith@gnu.org> * config.h-vms.template: #define uintmax_t for this system. @@ -751,7 +751,7 @@ read_makefile (filename, flags) enum make_word_type wtype; enum variable_origin v_origin; - char *cmdleft, *lb_next; + char *cmdleft, *semip, *lb_next; unsigned int len, plen = 0; char *colonp; @@ -772,6 +772,7 @@ read_makefile (filename, flags) else if (cmdleft != 0) /* Found one. Cut the line short there before expanding it. */ *(cmdleft++) = '\0'; + semip = cmdleft; collapse_continuations (lb.buffer); @@ -932,6 +933,14 @@ read_makefile (filename, flags) if (wtype == w_varassign) { + /* If there was a semicolon found, add it back, plus anything + after it. */ + if (semip) + { + *(--semip) = ';'; + variable_buffer_output (p2 + strlen (p2), + semip, strlen (semip)+1); + } record_target_var (filenames, p, two_colon, v_origin, &fileinfo); filenames = 0; continue; diff --git a/tests/ChangeLog b/tests/ChangeLog index 9c8e7fb..458b0e0 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,8 @@ +2000-06-21 Paul D. Smith <psmith@gnu.org> + + * scripts/features/targetvars: Added a test for PR/1709: allowing + semicolons in target-specific variable values. + 2000-06-19 Paul D. Smith <psmith@gnu.org> * scripts/functions/addsuffix: Test for an empty final argument. diff --git a/tests/scripts/features/targetvars b/tests/scripts/features/targetvars index e4dc0b2..52548f2 100644 --- a/tests/scripts/features/targetvars +++ b/tests/scripts/features/targetvars @@ -146,9 +146,27 @@ close(MAKEFILE); $answer = "bar baz biz\nbar baz\n"; &compare_output($answer, &get_logfile(1)); +# Test #10 + &run_make_with_options("$makefile3", "one", &get_logfile); $answer = "bar biz\n"; &compare_output($answer, &get_logfile(1)); +# Test #11 +# PR/1709: Test semicolons in target-specific variable values + +$makefile4 = &get_tmpfile; + +open(MAKEFILE, "> $makefile4"); +print MAKEFILE <<'EOF'; +foo : FOO = ; ok +foo : ; @echo '$(FOO)' +EOF +close(MAKEFILE); + +&run_make_with_options("$makefile4", "", &get_logfile); +$answer = "; ok\n"; +&compare_output($answer, &get_logfile(1)); + 1; |