$dir = cwd;
$dir =~ s,.*/([^/]+)$,../$1,;
-# Test #1: The content of .INCLUDE_DIRS depends on the platform for which
-# make was built. What we know for sure is that it shouldn't be
-# empty.
-#
-run_make_test('
+if (-d '/usr/include') {
+ # Test #1: The content of .INCLUDE_DIRS depends on the platform for which
+ # make was built. What we know for sure is that it shouldn't be
+ # empty.
+ #
+ run_make_test('
ifeq ($(.INCLUDE_DIRS),)
$(warning .INCLUDE_DIRS is empty)
endif
.PHONY: all
all:;@:
',
-'',
-'');
-
+ '', '');
+}
# Test #2: Make sure -I paths end up in .INCLUDE_DIRS.
#
endif
ifeq ($(filter $(dir),$(.INCLUDE_DIRS)),)
-$(warning .INCLUDE_DIRS does not contain $(dir))
+$(warning .INCLUDE_DIRS does not contain $(dir): $(.INCLUDE_DIRS))
endif
.PHONY: all
all:;@:
',
-"-I$dir dir=$dir",
-'');
+ "-I$dir dir=$dir", '');
+
+# Find the default .INCLUDE_DIRS
+create_file('defaultdirs.mk', "\$(info \$(.INCLUDE_DIRS))\nall:;\@:\n");
+my $cmd = subst_make_string("#MAKEPATH# -f defaultdirs.mk");
+my @dirs = `$cmd`;
+my $dirs = $dirs[0];
+chomp $dirs;
+unlink('defaultdirs.mk');
+
+run_make_test("
+ifneq (\$(.INCLUDE_DIRS),$dirs)
+\$(warning Mismatched \$(.INCLUDE_DIRS) != $dirs)
+endif
+all:;\@:
+",
+ '', '');
+
+# Verify that -I- disables content from .INCLUDE_DIRS
+
+run_make_test(q/
+ifneq ($(.INCLUDE_DIRS),)
+$(warning Mismatched $(.INCLUDE_DIRS) != )
+endif
+all:;@:
+/,
+ '-I-', '');
+
+# Prefix -I dirs to the front
+mkdir('somedir', 0777);
+
+my $xdirs = $dirs ? " $dirs" : '';
+run_make_test("
+ifneq (\$(.INCLUDE_DIRS),somedir$xdirs)
+\$(warning Mismatched '\$(.INCLUDE_DIRS)' != 'somedir$xdirs')
+endif
+all:;\@:
+",
+ '-I somedir', '');
+
+# Verify .INCLUDE_DIRS contains files after -I-
+
+run_make_test(q/
+ifneq ($(.INCLUDE_DIRS),somedir)
+$(warning Mismatched $(.INCLUDE_DIRS) != somedir)
+endif
+all:;@:
+/,
+ '-I - -I somedir', '');
+rmdir('somedir');
# This tells the test driver that the perl test script executed properly.
1;