blob: 29846b2aae8028995fbdfa536ff2618497c8c689 (
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
|
#!/usr/bin/tclsh
# -*- tcl -*-
proc usage {} {
puts "Usage: build \[-v\] \[clean\]"
exit -1
}
# use Makefile.template to generate a Makefile
proc create_makefile {target} {
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
}
puts $mfd $line
}
close $fd
close $mfd
}
proc build {{target ""}} {
global clean verbose
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 {[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 {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_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
foreach arg $argv {
if {$arg == "clean"} {
set clean 1
} elseif {$arg == "-v"} {
set verbose 1
} elseif {$arg != ""} {
usage
}
}
if {![catch {open targets r} tfd]} {
while {[gets $tfd line] >= 0} {
set target [lindex $line 0]
create_makefile $target
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}
|