blob: b51e7968efad19802560c02da5407a75a951f828 (
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
|
#!/bin/bash
BUSRC="stack.cpp string.cpp hash.cpp list.cpp trace.cpp stream.cpp formatter.cpp util.cpp sharedcore.cpp exceptionbase.cpp heap.cpp archivebase.cpp archive.cpp queue.cpp archival.cpp sio.cpp stdstream.cpp process.cpp plugger.cpp optparser.cpp signals.cpp array.cpp membuf.cpp file.cpp variant.cpp random.cpp randombasic.cpp randombase.cpp streamstack.cpp"
BUHDR="stack.h string.h hash.h list.h trace.h stream.h formatter.h util.h sharedcore.h exceptionbase.h heap.h archivebase.h archive.h queue.h archival.h sio.h stdstream.h process.h plugger.h singleton.h optparser.h array.h membuf.h file.h variant.h fmt.h extratypes.h random.h randombasic.h randombase.h streamstack.h"
BUEXPSRC="regex.cpp"
BUEXPHDR="regex.h"
BUCOMPAT="config.h compat/linux.h compat/win32.h compat/osx.h"
if [ -z "${CXX}" ]; then
CXX="g++"
fi
function bld()
{
OUTFILE="$1"
if [ ! -e "$OUTFILE" ]; then
return 1
fi
shift
for INFILE in $*; do
if [ "$INFILE" -nt "$OUTFILE" ]; then
return 1
fi
done
return 0
}
function cmd()
{
printf "%8s $2\n" $1
shift 2
$* || exit
}
function gpp()
{
bld "$1" "$2" || cmd CXX "$1" ${CXX} -ggdb -fPIC -W -Wall -Iminibu -c -o "$1" "$2"
}
function presetup()
{
for dir in minibu/src minibu/bu minibu/bu/compat; do
cmd MKDIR ${dir} mkdir -p ${dir}
done
cmd FAKE minibu/bu/autoconfig.h touch minibu/bu/autoconfig.h
for file in $(cd bootstrap; ls); do
cmd BOOTSTRAP minibu/bu/${file} cp bootstrap/${file} minibu/bu
done
for F in $BUSRC; do
bld minibu/src/$F || cmd WGET minibu/src/$F wget -q http://svn.xagasoft.com/libbu++/trunk/src/stable/$F -O minibu/src/$F
done
for F in $BUHDR; do
bld minibu/bu/$F || cmd WGET minibu/bu/$F wget -q http://svn.xagasoft.com/libbu++/trunk/src/stable/$F -O minibu/bu/$F
done
for F in $BUEXPSRC; do
bld minibu/src/$F || cmd WGET minibu/src/$F wget -q http://svn.xagasoft.com/libbu++/trunk/src/experimental/$F -O minibu/src/$F
done
for F in $BUEXPHDR; do
bld minibu/bu/$F || cmd WGET minibu/bu/$F wget -q http://svn.xagasoft.com/libbu++/trunk/src/experimental/$F -O minibu/bu/$F
done
for F in $BUCOMPAT; do
bld minibu/bu/$F || cmd WGET minibu/bu/$F wget -q http://svn.xagasoft.com/libbu++/trunk/src/$F -O minibu/bu/$F
done
bld src/build.tab.c src/build.y || cmd BISON src/build.tab.c bison -bsrc/build src/build.y
bld src/build.yy.c src/build.l || cmd FLEX src/build.yy.c flex src/build.l
}
if [ ! -z "$1" ]; then
if [ "$1" == "clean" -o "$1" == "-c" ]; then
echo "Cleaning up, deleting all object code and downloaded source code..."
echo
rm -Rf minibu src/*.o
exit
elif [ "$1" == "setup" -o "$1" == "-s" ]; then
echo "Only preforming download / setup"
echo
presetup
exit
else
echo "Without parameters build.sh will download extra components and"
echo "compile build."
echo
echo "Parameters:"
echo " clean | -c Delete all opbject code and downloaded source."
echo " setup | -s Download and perform initial setup, but do not"
echo " compile."
echo
echo "Using ${CXX} to complie code."
echo
exit
fi
fi
presetup
for F in $BUSRC $BUEXPSRC; do
OUTPUT=${F%.*}.o
bld minibu/src/$OUTPUT || gpp minibu/src/$OUTPUT minibu/src/$F
done
for F in src/*.c src/*.cpp; do
OUTPUT=${F%.*}.o
gpp "$OUTPUT" "$F"
done
bld build src/*.o minibu/src/*.o || cmd LINK build ${CXX} -fPIC -rdynamic -Wl,-export-dynamic -o build src/*.o minibu/src/*.o -ldl
bld build~ build || cmd CP build~ cp build build~
|