blob: 7e3207b130675133c42c510f1d7e422d0a989a74 (
plain)
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
#!/usr/bin/tclsh
# -*- tcl -*-
proc usage {} {
puts "Usage: build \[-v\] \[clean\]"
exit -1
}
# use Makefile.template to generate a Makefile
proc create_makefile {target relayfs} {
if {[catch {open ../Makefile.template r} fd]} {
puts "ERROR opening ../Makefile.template"
exit -1
}
if {[catch {open Makefile w} mfd]} {
puts "ERROR creating Makefile"
exit -1
}
while {[gets $fd line] >= 0} {
if {[regsub XXX $line $target newline]} {
set line $newline
}
if {[regsub RELAYFS $line $relayfs newline]} {
set line $newline
}
puts $mfd $line
}
close $fd
close $mfd
}
proc build {{target ""}} {
global clean verbose debug
if {$target == ""} {
set target [file tail [pwd]]
}
if {$clean} {
puts "Cleaning $target"
if {[catch {exec make clean >& compile.errors} res]} {
[exec cat compile.errors]
exit -1
}
} else {
puts "Building $target"
if {$debug == ""} {
if {[catch {exec make >& compile.errors} res]} {
puts "\n------------ Compile error in $target -------------------\n"
if {[catch {open compile.errors r} fd]} {
puts "Compile failed for unknown reasons"
exit -1
}
while {[gets $fd line] >= 0} {
puts $line
}
close $fd
exit -1
}
} else {
if {[catch {exec make debug >& compile.errors} res]} {
puts "\n------------ Compile error in $target -------------------\n"
if {[catch {open compile.errors r} fd]} {
puts "Compile failed for unknown reasons"
exit -1
}
while {[gets $fd line] >= 0} {
puts $line
}
close $fd
exit -1
}
}
if {![catch {open compile.errors r} fd]} {
# search for warnings
set bad 0
while {[gets $fd line] >= 0} {
if {$verbose} {
puts $line
} else {
if {[regexp {[^W]*([A-Za-z][A-Za-z0-9_]*)[^\"]*\"([^\"]*)} $line match warn var]} {
if {$warn == "Warning"} {
switch $var {
_stp_ctrl_unregister -
_stp_ctrl_register -
relay_subbufs_consumed -
_stp_ctrl_send -
relay_open -
relayfs_create_dir -
relayfs_remove_dir -
relay_flush -
relay_switch_subbuf -
relay_close {}
default {
if {$bad == 0} {
puts "\n------------ Unexpected Warnings in $target -------------------\n"
}
puts $line
set bad 1
}
}
}
}
}
}
close $fd
}
if {$bad} {
exit -1
}
}
}
set clean 0
set verbose 0
set debug ""
foreach arg $argv {
if {$arg == "clean"} {
set clean 1
} elseif {$arg == "-v"} {
set verbose 1
} elseif {$arg == "debug"} {
set debug $arg
} elseif {$arg != ""} {
usage
}
}
set relayfs ""
if {![file exists /lib/modules/[exec uname -r]/build/include/linux/relayfs_fs.h]} {
set relayfs {-I $(RT)/relayfs}
}
if {![catch {open targets r} tfd]} {
while {[gets $tfd line] >= 0} {
set target [lindex $line 0]
create_makefile $target $relayfs
build $target
catch {exec /bin/rm Makefile}
}
close $tfd
} else {
if {![file exists Makefile]} {
puts "Now in [pwd]"
puts "ERROR: No targets file found and no Makefile either"
exit -1
}
build
}
puts "Done"
catch {exec /bin/rm compile.errors}
|