1# Check that a small bugfix in Inline::C::validate() (ticket #11748)
2# is behaving as expected.
3
4use warnings;
5use strict;
6use Config;
7
8print "1..5\n";
9
10require Inline::C;
11
12# Next 2 lines are for the benefit of 5.8.8.
13my (%o1, %o2, %o3);
14my($o1, $o2, $o3) = (\%o1, \%o2,\ %o3);
15
16$o1->{FOOBAR}{STUFF} = 1;
17
18$o2->{FOOBAR}{STUFF} = 1;
19$o2->{ILSM}{MAKEFILE}{INC} = '-I/foo -I/bar';
20
21$o3->{FOOBAR}{STUFF} = 1;
22
23bless($o1, 'Inline::C');
24bless($o2, 'Inline::C');
25bless($o3, 'Inline::C');
26
27Inline::C::validate($o1);
28
29if(($Config{osname} eq 'MSWin32') and ($Config{cc} =~ /\b(cl\b|clarm|icl)/)) {
30
31  ## $o1->{ILSM}{MAKEFILE}{INC} should be unset
32  ## as it's $ENV{INCLUDE} that is instead amended
33
34  if($o1->{ILSM}{MAKEFILE}{INC}) {print "not ok 1\n"}
35  else {print "ok 1\n"}
36}
37else {
38
39  ## $o1->{ILSM}{MAKEFILE}{INC} should be set
40  ## to "-I\"$FindBin::Bin\""
41
42  if($o1->{ILSM}{MAKEFILE}{INC}) {print "ok 1\n"}
43  else {print "not ok 1\n"}
44}
45
46Inline::C::validate($o2);
47
48if($o2->{ILSM}{MAKEFILE}{INC} eq '-I/foo -I/bar') {print "ok 2\n"}
49else {
50  warn "INC: ", $o2->{ILSM}{MAKEFILE}{INC}, "\n";
51  print "not ok 2\n";
52}
53
54Inline::C::validate($o2, 'INC', '-I/baz');
55
56if($o2->{ILSM}{MAKEFILE}{INC} =~ / \-I\/baz/) {print "ok 3\n"}
57else {
58  warn "INC: ", $o2->{ILSM}{MAKEFILE}{INC}, "\n";
59  print "not ok 3\n";
60}
61
62if($o2->{ILSM}{MAKEFILE}{INC} eq '-I/foo -I/bar -I/baz') {print "ok 4\n"}
63else {
64  warn "INC: ", $o2->{ILSM}{MAKEFILE}{INC}, "\n";
65  print "not ok 4\n";
66}
67
68Inline::C::validate($o3, 'INC', '-I/baz');
69
70if(($Config{osname} eq 'MSWin32') and ($Config{cc} =~ /\b(cl\b|clarm|icl)/)) {
71
72  ## $o3->{ILSM}{MAKEFILE}{INC} should be set to " -I/baz"
73
74  if($o3->{ILSM}{MAKEFILE}{INC} eq ' -I/baz' ) {print "ok 5\n"}
75  else {
76    warn "INC: ", $o3->{ILSM}{MAKEFILE}{INC}, "\n";
77    print "not ok 5\n";
78  }
79
80}
81else {
82
83  ## $o3->{ILSM}{MAKEFILE}{INC} should be set
84  ## to "-I\"$FindBin::Bin\"" followed by " -I/baz"
85
86  if($o3->{ILSM}{MAKEFILE}{INC} =~ / \-I\/baz/ &&
87     $o3->{ILSM}{MAKEFILE}{INC} ne ' -I/baz' ) {print "ok 5\n"}
88  else {
89    warn "INC: ", $o3->{ILSM}{MAKEFILE}{INC}, "\n";
90    print "not ok 5\n";
91  }
92
93}
94