1# -*-mode: perl; rm-trailing-spaces: nil-*- 2 3$description = "Test various forms of the GNU make `include' command."; 4 5$details = "\ 6Test include, -include, sinclude and various regressions involving them. 7Test extra whitespace at the end of the include, multiple -includes and 8sincludes (should not give an error) and make sure that errors are reported 9for targets that were also -included."; 10 11$makefile2 = &get_tmpfile; 12 13open(MAKEFILE,"> $makefile"); 14 15# The contents of the Makefile ... 16 17print MAKEFILE <<EOF; 18\#Extra space at the end of the following file name 19include $makefile2 20all: ; \@echo There should be no errors for this makefile. 21 22-include nonexistent.mk 23-include nonexistent.mk 24sinclude nonexistent.mk 25sinclude nonexistent-2.mk 26-include makeit.mk 27sinclude makeit.mk 28 29error: makeit.mk 30EOF 31 32close(MAKEFILE); 33 34 35open(MAKEFILE,"> $makefile2"); 36 37print MAKEFILE "ANOTHER: ; \@echo This is another included makefile\n"; 38 39close(MAKEFILE); 40 41# Create the answer to what should be produced by this Makefile 42&run_make_with_options($makefile, "all", &get_logfile); 43$answer = "There should be no errors for this makefile.\n"; 44&compare_output($answer, &get_logfile(1)); 45 46&run_make_with_options($makefile, "ANOTHER", &get_logfile); 47$answer = "This is another included makefile\n"; 48&compare_output($answer, &get_logfile(1)); 49 50$makefile = undef; 51 52# Try to build the "error" target; this will fail since we don't know 53# how to create makeit.mk, but we should also get a message (even though 54# the -include suppressed it during the makefile read phase, we should 55# see one during the makefile run phase). 56 57run_make_test 58 (' 59-include foo.mk 60error: foo.mk ; @echo $@ 61', 62 '', 63 "#MAKE#: *** No rule to make target `foo.mk', needed by `error'. Stop.\n", 64 512 65 ); 66 67# Make sure that target-specific variables don't impact things. This could 68# happen because a file record is created when a target-specific variable is 69# set. 70 71run_make_test 72 (' 73bar.mk: foo := baz 74-include bar.mk 75hello: ; @echo hello 76', 77 '', 78 "hello\n" 79 ); 80 81 82# Test inheritance of dontcare flag when rebuilding makefiles. 83# 84run_make_test(' 85.PHONY: all 86all: ; @: 87 88-include foo 89 90foo: bar; @: 91', '', ''); 92 931; 94 95 96# Make sure that we don't die when the command fails but we dontcare. 97# (Savannah bug #13216). 98# 99run_make_test(' 100.PHONY: all 101all:; @: 102 103-include foo 104 105foo: bar; @: 106 107bar:; @exit 1 108', '', ''); 109 110# Check include, sinclude, -include with no filenames. 111# (Savannah bug #1761). 112 113run_make_test(' 114.PHONY: all 115all:; @: 116include 117-include 118sinclude', '', ''); 119 1201; 121