| # -*-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; |