| # -*-perl-*- | |
| $description = "Test the .INCLUDE_DIRS special variable."; | |
| $details = ""; | |
| use Cwd; | |
| $dir = cwd; | |
| $dir =~ s,.*/([^/]+)$,../$1,; | |
| 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. | |
| # | |
| run_make_test(' | |
| ifeq ($(dir),) | |
| $(warning dir is empty) | |
| endif | |
| ifeq ($(filter $(dir),$(.INCLUDE_DIRS)),) | |
| $(warning .INCLUDE_DIRS does not contain $(dir): $(.INCLUDE_DIRS)) | |
| endif | |
| .PHONY: all | |
| all:;@: | |
| ', | |
| "-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]; | |
| $dirs =~ s/\r?\n//g; | |
| 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; |