forked from haiku/buildtools
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild-gcc2-optional-package-Haiku.sh
executable file
·171 lines (139 loc) · 4.73 KB
/
build-gcc2-optional-package-Haiku.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
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
#!/bin/sh
# Builds a GCC package from the installation specified by $GCCDATE (or via the
# arguments).
# Usage: build-gcc2-optional-package-Haiku.sh [gcc-base-dir] [version]
if [ -d "$1" ]; then
gcc_base=$1
shift
fi
if [ "$(basename $(pwd))" = "buildtools" ]; then
gcc_base=$(pwd)/legacy/gcc-obj
echo "No exact GCC build directory given, assuming \"$gcc_base\""
echo " (only needed for the HTML documentation)."
fi
if [ "$1" == "" ]; then
if [ "$GCCDATE" = "" ]; then
echo "No GCC date version given!"
echo "Either export GCCDATE, or pass the date as argument to this" \
"script."
echo "The date is given in the format 'yymmdd', ie. '100818'."
exit
fi
else
GCCDATE=$1
fi
current_dir=$(pwd)
base=/boot/develop/abi/x86/gcc2/tools/gcc-2.95.3-haiku-$GCCDATE
if [ ! -d "$base" ]; then
echo GCC directory \"$base\" does not exist, so we start a build ...
echo "This is going to take a while ..."
sleep 3
# From now on fail, if anything goes wrong.
set -o errexit
# forcefeed the POSIX locale, as the build (makeinfo) might choke otherwise
export LC_ALL=POSIX
cd $gcc_base/..
rm -rf binutils-obj
mkdir binutils-obj
cd binutils-obj
CFLAGS="-O2" CXXFLAGS="-O2" ../binutils/configure \
--prefix=/boot/develop/abi/x86/gcc2/tools/gcc-2.95.3-haiku-${GCCDATE} \
--disable-nls --enable-shared=yes
make
cd ..
(cd gcc/gcc; touch c-parse.{h,c} cexp.c cp/parse.{c,h} c-gperf.h)
rm -rf gcc-obj
mkdir gcc-obj
cd gcc-obj
CFLAGS="-O2" CXXFLAGS="-O2" ../gcc/configure \
--prefix=/boot/develop/abi/x86/gcc2/tools/gcc-2.95.3-haiku-${GCCDATE} \
--disable-nls --enable-shared=yes --enable-languages=c,c++
# hack the Makefile to avoid trouble with stuff we don't need anyway
sedExpr=
for toRemove in libio libjava libobjc libstdc++; do
sedExpr="$sedExpr -e 's@^\(TARGET_CONFIGDIRS =.*\)$toRemove\(.*\)@\1\2@'"
done
echo sedExpr: $sedExpr
mv Makefile Makefile.bak || exit 1
eval "sed $sedExpr Makefile.bak > Makefile" || exit 1
rm Makefile.bak
# build gcc
make bootstrap
cd ..
mkdir /boot/develop/abi/x86/gcc2/tools/gcc-2.95.3-haiku-${GCCDATE}
cd binutils-obj
make install
cd ..
cd gcc-obj
make install
cd ..
ln -sfn gcc-2.95.3-haiku-${GCCDATE} /boot/develop/abi/x86/gcc2/tools/current
fi
### HTML documentation ####################################
html_base=$base/html-docs
if [ ! -d "$html_base" ]; then
if [ "$gcc_base" = "" ]; then
echo "No GCC build directory given, cannot build HTML documenation."
exit
fi
echo "Building HTML documentation..."
mkdir $html_base
cd $html_base
makeinfo --html $gcc_base/../gcc/gcc/cpp.texi
makeinfo --html $gcc_base/../gcc/gcc/gcc.texi
makeinfo --html $gcc_base/../binutils/libiberty/libiberty.texi
ln -sf cpp/index.html $html_base/cpp.html
ln -sf gcc/index.html $html_base/gcc.html
ln -sf libiberty/index.html $html_base/libiberty.html
fi
if [ -d "$base/share/doc" ]; then
echo "Adding binutils HTML documentation..."
mv $base/share/doc/as.html $html_base/as
mv $base/share/doc/binutils.html $html_base/binutils
mv $base/share/doc/gprof.html $html_base/gprof
mv $base/share/doc/ld.html $html_base/ld
#mv $base/share/doc/configure.html $html_base/
ln -sf as/index.html $html_base/as.html
ln -sf binutils/index.html $html_base/binutils.html
ln -sf gprof/index.html $html_base/gprof.html
ln -sf ld/index.html $html_base/ld.html
fi
if [ ! -e "$html_base/as.html" ]; then
echo "binutils HTML documentation missing, see" \
"INSTALL-gcc2-from-source-Haiku."
fi
if [ -d $base/man -o -d $base/info -o -d $base/share ]; then
echo "Removing legacy files (man/info/share)..."
rm -rf $base/man
rm -rf $base/info
rm -rf $base/share
fi
rm -f $base/lib/gcc-lib/i586-pc-haiku/2.95.3-haiku-$GCCDATE/include/math.h
### C++ includes ######################################
echo "Install C++ includes"
rm -rf $base/include/g++
ln -snf /boot/develop/headers/cpp $base/include/g++
### zip archive ###########################################
echo "Building ZIP archive..."
current_gcc=$(setgcc | cut -d/ -f 2)
version_year=20$(echo $GCCDATE | cut -c1-2)
version_month=$(echo $GCCDATE | cut -c3-4)
version_day=$(echo $GCCDATE | cut -c5-6)
zip_name="$current_dir/gcc-2.95.3-x86-$current_gcc-$version_year-$version_month-$version_day.zip"
cd /boot
zip_base=$(echo $base | cut -d/ -f3-)
rm -f $zip_name
zip -yr $zip_name $zip_base
current_name=develop/abi/x86/gcc2/tools/current
ln -snf gcc-2.95.3-haiku-$GCCDATE $current_name
zip -yr $zip_name $current_name
### optional package description ##########################
echo "Package: GCC
Version: 2.95.3-haiku-$GCCDATE
Copyright: 1988-2000 Free Software Foundation, Inc.
License: GNU GPL v2
License: GNU LGPL v2
URL: http://www.gnu.org/software/gcc/" > /tmp/.OptionalPackageDescription
cd /tmp
zip -yr $zip_name .OptionalPackageDescription
rm .OptionalPackageDescription