1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
### SPAR <http://www.cpan.org/scripts/>
### 5 755 1067451881 1208283124 is_relevant.pl
#
# -I- is supported by gcc, but I don't know what else. We'll just skip unless
# gcc is in the path, but maybe the scope of the test should be broadened.
#
!system $ENV{CC} || 'gcc', '-I-', '-v' if exists $ENV{CC} ? $ENV{CC} =~ /\bg[^\/]+(?:\.exe)?$/ : 1;
### 32 644 1164353916 1366573811 makepp_test_script.pl
#
# This test depends entirely on the builtin rules.
#
# Tests several things about C compilation:
# 1) Correctly parsing command lines to scan for include files.
# 2) Correctly calculating checksums so if files change we do not
# rebuild, but we always rebuild when necessary.
# 3) Tests the builtin rules.
#
# This makefile depends on the existence of a C compiler.
#
# Replace the .c file multiple times and see which replacements trigger a
# rebuild.
#
my @exe_dep = is_windows ? '--no-path-exe-dep' : ();
my $compiled;
for $iter (0 .. 3) {
print "**** Iteration $iter\n";
wait_timestamp 'compilation.o' if $compiled;
makepp @exe_dep, 'CPPFLAGS=-I subdir1 -I- -Isubdir2', "ITERATION=$iter", 'compilation_test';
open STDOUT, ">iteration_$iter";
system '.' . ($^O =~ /^MSWin/ ? '\\' : '/') . 'compilation_test';
# Make sure makepp found x2 in subdir1, not
# in the main directory.
$compiled = "0 0 0\n" ne n_files "n_files_$iter", sub { die if /warning: can.t locate file/ };
# Make sure makepp correctly found all include files.
open STDOUT, '>/dev/null'; # placeholder
}
$Mpp::mod_answer = sub { $_[2] =~ s/ 0 / 1 / } if is_windows;
1;
### 10 644 1067451881 1065032055 compilation_test.c
#include <stdio.h>
#include "x.h"
#include "y.h"
#include <z.h>
int main()
{
printf("%d %d %d %d\n", X, Y, Y2, Z);
return 0;
}
### D 755 1067451881 1065044637 subdir1
### 19 644 1067451881 1065042122 subdir1/Makeppfile
Y2 := 2
ifeq ($(ITERATION),3)
Y2 := 22
endif
Z := 3
ifneq ($(ITERATION),0)
Z := 23
endif
x.h:
&echo '#define X 1' -o $(output)
y2.h:
&echo '#define Y2 $(Y2)' -o $(output)
# Not used
z.h:
&echo '#define Z $(Z)' -o $(output)
### D 755 1067451881 1065044637 subdir2
### 23 644 1067451881 1065042233 subdir2/Makeppfile
Y2 := 11
ifneq ($(ITERATION),0)
Y2 := 31
endif
Z := 12
ifeq ($(ITERATION),2)
Z := 32
endif
ifeq ($(ITERATION),3)
Z := 32
endif
y.h:
&echo '#define Y 10' -o $(output)
&echo '#include "y2.h"' -o>>$(output)
# Not used
y2.h:
&echo '#define Y2 $(Y2)' -o $(output)
z.h:
&echo '#define Z $(Z)' -o $(output)
### D 755 1067451881 1065041959 answers
### 1 644 1067451881 1190055512 answers/n_files
3 0 0
### 1 644 1067451881 1065042284 answers/iteration_0
1 10 2 12
### 1 644 1067451881 1065042284 answers/iteration_1
1 10 2 12
### 1 644 1067451881 1065042284 answers/iteration_2
1 10 2 32
### 1 644 1067451881 1065042284 answers/iteration_3
1 10 22 32
### 1 644 1067451881 1190055524 answers/n_files_0
6 0 0
### 1 644 1067451881 1190055527 answers/n_files_1
0 0 0
### 1 644 1067451881 1190055532 answers/n_files_2
3 0 0
### 1 644 1067451881 1190055536 answers/n_files_3
3 0 0
|