blob: 43785d7d906a6b01c3b37dfd9e48168cd476ec3c (
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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
|
#!/bin/sh
#
# A script to build the crossutils for a set of platforms.
# Note:cygwin seems to like to have all platforms qualified.
#
BASE=~
# where to store the built tree of binutils?
DESTDIR=${BASE}/cross
# directory where logs go
LOGDIR=${BASE}/logs
# where can I decrunch and build?
WORKDIR=${BASE}/buildme
# where is the binutils archive?
BINUTILSPATH=~
# what is it's base name?
BINUTILSBASE=binutils
# what is the version part of the archive?
BINUTILSVERSION=2.14
# is binutils archive gz or bz2?
BINUTILS_GZIP=no
# what i6868 platform do you want/need to build for?
MYINTEL=i686
# target info, OSes per processor with "WIN" as special case
BSD="freebsd netbsd openbsd"
TARGETS_WIN="cygwin mingw32 msdosdjgpp"
TARGETS_I386="${BSD} linux solaris darwin"
TARGETS_X86_64="${BSD} linux"
TARGETS_POWERPC="${BSD} linux darwin"
TARGETS_SPARC="${BSD} linux solaris"
#TARGETS_M68k=
# I use the below because my default system is dual proc.
#EXTRAOPT=-j 4
###########################################################################
# don't edit below
#
#
#
#
LD_FLAGS="${LD_FLAGS} -static"
LDFLAGS="${LD_FLAGS} -s"
CFLAGS="${CFLAGS} -static"
CPPFLAGS="${CPPFLAGS} -static"
CXXFLAGS="${CXXFLAGS} -static"
#
# Make a list of targets
#
TARGETS=""
for OS in ${TARGETS_WIN}; do
TARGETS="${TARGETS} ${MYINTEL}-${OS}"
done;
for OS in ${TARGETS_I386}; do
TARGETS="${TARGETS} ${MYINTEL}-${OS}"
done;
for OS in ${TARGETS_X86_64}; do
TARGETS="${TARGETS} x86_64-${OS}"
done;
for OS in ${TARGETS_POWERPC}; do
TARGETS="${TARGETS} powerpc-${OS}"
done;
for OS in ${TARGETS_SPARC}; do
TARGETS="${TARGETS} sparc-${OS}"
done;
for OS in ${TARGETS_M68K}; do
TARGETS="${TARGETS} m68k-${OS}"
done;
#
# force slash
#
DESTDIR=${DESTDIR%/}/
WORKDIR=${WORKDIR%/}/
LOGDIR=${LOGDIR%/}/
BINUTILSPATH=${BINUTILSPATH%/}/
BINUTILSARCHIVE=${BINUTILSPATH}${BINUTILSBASE}-${BINUTILSVERSION}
MAKE=make
#
# Make sure they exist
#
mkdir -p $DESTDIR
mkdir -p $WORKDIR
mkdir -p $LOGDIR
#
# BSD? -> gmake
#
SYSTEM=`uname -s`
case "$SYSTEM" in
*BSD*) MAKE=gmake
;;
*bsd*) MAKE=gmake
;;
esac
#
# tar.gz or .tar.bz2 ?
#
if [ $BINUTILS_GZIP = "no" ] ; then
BINUTILSARCHIVE=${BINUTILSARCHIVE}.tar.bz2
else
BINUTILSARCHIVE=${BINUTILSARCHIVE}.tar.gz
fi
#
# depack or clean dir
#
cd ${WORKDIR}
if [ ! -d ${WORKDIR}${BINUTILSBASE}-${BINUTILSVERSION} ]; then
if [ $BINUTILS_GZIP = "no" ]; then
bzip2 -dc $BINUTILSARCHIVE |tar xvf - > ${LOGDIR}log-extract
else
tar xvzf $BINUTILSARCHIVE > ${LOGDIR}log-extract
fi
if [ ! $? = 0 ]; then
echo DECRUNCHING OF ${BINUTILSARCHIVE} failed
exit
fi
else
echo It seams that you already have a build directory. Skipping.
cd ${WORKDIR}${BINUTILSBASE}-${BINUTILSVERSION}
${MAKE} clean >/dev/null
fi
cd ${WORKDIR}${BINUTILSBASE}-${BINUTILSVERSION}
#
# build loop.
#
FAILURES=""
for a in $TARGETS; do
if [ ! -f ${DESTDIR}bin/${a}-as ] ; then
rm ./config.cache
find ./ -type f -name config.cache -exec /bin/rm {} \;
echo Building $a
{ ./configure --disable-nls --disable-shared --target=$a --prefix=${DESTDIR} && ${MAKE} $(EXTRAOPT) && ${MAKE} install && ${MAKE} clean; } > ${LOGDIR}log-${a} 2>&1
if [ ! $? = 0 ]; then
echo $a FAILES!
FAILURES="${FAILURES} ${a}"
fi
fi
done;
echo Failed targets: ${FAILURES}
|