-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmakefilegen.sh
executable file
·75 lines (64 loc) · 1.56 KB
/
makefilegen.sh
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
#!/bin/sh
(
(
echo "CC?=cc"
echo "CFLAGS+=-W -Wall -Os -fPIC -fwrapv -pedantic"
echo "DESTDIR?="
echo
i=0
for file in `ls *.c`; do
if grep '^int main(' "${file}" >/dev/null; then
x=`echo "${file}" | sed 's/\.c$//'`
if [ $i -eq 0 ]; then
echo "BINARIES=${x}"
else
echo "BINARIES+=${x}"
fi
i=`expr $i + 1`
fi
done
echo
echo "all: \$(BINARIES)"
echo
for file in `ls *.c`; do
(
gcc -MM "${file}"
echo " \$(CC) \$(CFLAGS) \$(CPPFLAGS) -c ${file}"
echo
)
done
i=0
for file in `ls *.c`; do
if ! grep '^int main(' "${file}" >/dev/null; then
x=`echo "${file}" | sed 's/\.c$/.o/'`
if [ $i -eq 0 ]; then
echo "OBJECTS=${x}"
else
echo "OBJECTS+=${x}"
fi
i=`expr $i + 1`
fi
done
echo
for file in `ls *.c`; do
if grep '^int main(' "${file}" >/dev/null; then
x=`echo "${file}" | sed 's/\.c$//'`
echo "${x}: ${x}.o \$(OBJECTS)"
echo " \$(CC) \$(CFLAGS) \$(CPPFLAGS) -o ${x} ${x}.o \$(OBJECTS) \$(LDFLAGS)"
echo
fi
done
echo "install: httpfile"
echo " install -D -m 0755 httpfile \$(DESTDIR)/usr/bin/httpfile"
echo
echo "rts.out: \$(BINARIES) rts.tests"
echo " sh rts.tests > rts.out"
echo
echo "rts: rts.exp rts.out"
echo " cmp rts.exp rts.out || (cat rts.out; exit 1;)"
echo
echo "clean:"
echo " rm -f *.o \$(BINARIES) rts.out"
echo
) > Makefile
)