# -*-perl-*- $description = "Test backslash-newline handling."; $details = ""; # TEST #1 # ------- # Backslash-newlines in recipes # These are basic backslash-newlines with no tricks run_make_test("fast:;\@echo fa\\\nst\n", '', 'fast'); run_make_test("slow:;\@: no-op; echo sl\\\now\n", '', 'slow'); run_make_test("dquote:;\@echo \"dqu\\\note\"\n", '', 'dquote'); run_make_test("squote:;\@echo 'squ\\\note'\n", '', "squ\\\note"); # Ensure that a leading prefix character is omitted run_make_test("fast:;\@echo fa\\\n\tst\n", '', 'fast'); run_make_test("slow:;\@: no-op; echo sl\\\n\tow\n", '', 'slow'); run_make_test("dquote:;\@echo \"dqu\\\n\tote\"\n", '', 'dquote'); run_make_test("squote:;\@echo 'squ\\\n\tote'\n", '', "squ\\\note"); # Ensure that ONLY the leading prefix character is omitted run_make_test("fast:;\@echo fa\\\n\t st\n", '', 'fa st'); run_make_test("slow:;\@: no-op; echo sl\\\n\t\tow\n", '', "sl ow"); run_make_test("dquote:;\@echo \"dqu\\\n\t ote\"\n", '', 'dqu ote'); run_make_test("squote:;\@echo 'squ\\\n\t\t ote'\n", '', "squ\\\n\t ote"); # Backslash-newlines in variable values # Simple run_make_test(q! var = he\ llo var:;@echo '|$(var)|'!, '', "|he llo|"); # Condense trailing space run_make_test(q! var = he \ llo var:;@echo '|$(var)|'!, '', "|he llo|"); # Remove leading space run_make_test(q! var = he\ llo var:;@echo '|$(var)|'!, '', "|he llo|"); # Multiple bs/nl condensed run_make_test(q! var = he\ \ \ llo var:;@echo '|$(var)|'!, '', "|he llo|"); # POSIX: Preserve trailing space run_make_test(q! .POSIX: x = y var = he \ llo var:;@echo '|$(var)|'!, '', "|he llo|"); # POSIX: One space per bs-nl run_make_test(q! .POSIX: x = y var = he\ \ \ llo var:;@echo '|$(var)|'!, '', "|he llo|"); # Savannah #39035: handle whitespace in call run_make_test(q! f = echo $(1) t:; @$(call f,"a \ b"); \ $(call f,"a \ b") !, '', "a b\na b\n"); # Savannah #38945: handle backslash CRLF # We need our own makefile so we can set binmode my $m1 = get_tmpfile(); open(MAKEFILE, "> $m1"); binmode(MAKEFILE); print MAKEFILE "FOO = foo \\\r\nbar\nall: ; \@echo \$(FOO)\n"; close(MAKEFILE); run_make_with_options($m1, '', get_logfile()); compare_output("foo bar\n", get_logfile(1)); 1;