2004-05-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
[mono.git] / web / mono-build-mac-fw-release.sh
1 #!/bin/sh
2
3 # this horrid little script updates a mono revision
4 # Author: Andy Satori <dru@satori-assoc.com>
5
6 set -e 
7
8 INITIALDIR=$PWD
9 VERSION=0.91
10 PREFIX=/Library/Frameworks/Mono.framework/Versions/$VERSION
11
12 export C_INCLUDE_PATH=$C_INCLUDE_PATH:$PREFIX/include
13 export LDFLAGS=-L$PREFIX/lib
14 export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/X11R6/lib:$PREFIX/lib
15
16 if test ! -d "$INITIALDIR/Dependancies"; then
17         mkdir $INITIALDIR/Dependancies
18 fi
19
20 # make the directories as need for the Framework (which isn't really 
21 # a framework, but it looks like one and makes a nice placeholder until 
22 # someone smarter than I am can come in and make it better)
23
24 if test ! -d "/Library/Frameworks/Mono.framework"; then
25         mkdir /Library/Frameworks/Mono.framework
26         mkdir /Library/Frameworks/Mono.framework/Versions
27 fi
28
29 if test ! -d "/Library/Frameworks/Mono.framework/Versions/$VERSION"; then
30         mkdir /Library/Frameworks/Mono.framework/Versions/$VERSION
31 fi
32
33 # set up the environment for the build
34 export PATH=$PREFIX/bin:/usr/X11R6/bin:$PATH
35 export ACLOCAL_FLAGS="-I $PREFIX/share/aclocal/"
36 export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/X11R6/lib/pkgconfig
37
38
39 cd $INITIALDIR/Dependancies
40
41 # pkg-config
42
43 echo +++ processing pkg-config
44
45 if test ! -f "$PREFIX/bin/pkg-config"; then
46         if test ! -d "pkgconfig-0.15.0"; then
47                 curl http://www.freedesktop.org/software/pkgconfig/releases/pkgconfig-0.15.0.tar.gz -O
48                 tar xzf pkgconfig-0.15.0.tar.gz
49                 rm pkgconfig-0.15.0.tar.gz
50         fi
51         
52         cd pkgconfig-0.15.0
53         
54         ./configure --prefix=$PREFIX
55         make
56         make install
57         make clean
58         
59         cd ..
60 fi
61
62 # gettext
63
64 echo +++ processing gettext
65
66 if test ! -f "$PREFIX/bin/gettext"; then
67
68         if test ! -d "gettext-0.14.1"; then
69                 curl http://ftp.gnu.org/pub/gnu/gettext/gettext-0.14.1.tar.gz -O
70                 tar xzf gettext-0.14.1.tar.gz
71                 rm gettext-0.14.1.tar.gz
72         fi
73         
74         cd gettext-0.14.1
75         
76         ./configure --prefix=$PREFIX
77         make
78         make install
79         make clean
80         
81         cd ..
82 fi
83
84 # glib2
85
86 echo +++ processing glib2
87
88 if test ! -f "$PREFIX/lib/libgobject-2.0.la"; then
89         if test ! -d "glib-2.4.0"; then
90                 curl ftp://ftp.gtk.org/pub/gtk/v2.4/glib-2.4.0.tar.gz -O
91                 tar xzf glib-2.4.0.tar.gz
92                 rm glib-2.4.0.tar.gz
93         fi
94         
95         cd glib-2.4.0
96         
97         ./configure --prefix=$PREFIX 
98         make
99         make install
100         make clean
101         
102         cd ..
103 fi
104
105 # boehm gc
106
107 echo +++ processing boehm gc
108
109 if test ! -f "$PREFIX/lib/libgc.dylib"; then
110         if test ! -d "gc6.3alpha6"; then
111                 curl http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc6.3alpha6.tar.gz -O
112                 tar xzf gc6.3alpha6.tar.gz
113                 rm gc6.3alpha6.tar.gz
114         fi
115         
116         cd gc6.3alpha6
117         
118         ./configure --prefix=$PREFIX --enable-thread=pthreads
119         gnumake
120         make install
121         make clean
122         
123         cd ..
124 fi
125
126 # icu ( http://oss.software.ibm.com/icu/index.html )
127
128 echo +++ processing ICU
129
130 if test ! -f "$PREFIX/lib/libicuuc.dylib.28.0"; then
131         if test ! -d "icu"; then
132                 curl ftp://www-126.ibm.com/pub/icu/2.8/icu-2.8.tgz -O --disable-epsv
133                 tar xzf icu-2.8.tgz
134                 rm icu-2.8.tgz
135         fi
136         
137         cd icu/source
138         
139         ./runConfigureICU MacOSX --with-data-packaging=library --prefix=$PREFIX --libdir=$PREFIX/lib/ 
140         gnumake
141         make install
142         make clean
143         
144         cd $PREFIX/lib
145         
146         # libicudata
147         install_name_tool -id $PREFIX/lib/libicudata.dylib.28 libicudata.dylib.28.0
148         
149         # libicui18n
150         install_name_tool -id $PREFIX/lib/libicui18n.dylib.28 libicui18n.dylib.28.0
151         install_name_tool -change libicuuc.dylib.28 $PREFIX/lib/libicuuc.dylib.28 libicui18n.dylib.28.0
152         install_name_tool -change libicudata.dylib.28 $PREFIX/lib/libicudata.dylib.28 libicui18n.dylib.28.0
153                 
154         # libicuio
155         install_name_tool -id $PREFIX/lib/libicuio.dylib.28 libicuio.dylib.28.0
156         install_name_tool -change libicuuc.dylib.28 $PREFIX/lib/libicuuc.dylib.28 libicuio.dylib.28.0
157         install_name_tool -change libicudata.dylib.28 $PREFIX/lib/libicudata.dylib.28 libicuio.dylib.28.0       
158         install_name_tool -change libicui18n.dylib.28 $PREFIX/lib/libicui18n.dylib.28 libicuio.dylib.28.0       
159         
160         # libicule
161         install_name_tool -id $PREFIX/lib/libicule.dylib.28 libicule.dylib.28.0
162         install_name_tool -change libicuuc.dylib.28 $PREFIX/lib/libicuuc.dylib.28 libicule.dylib.28.0
163         install_name_tool -change libicudata.dylib.28 $PREFIX/lib/libicudata.dylib.28 libicule.dylib.28.0
164
165         # libiculx
166         install_name_tool -id $PREFIX/lib/libiculx.dylib.28 libiculx.dylib.28.0
167         install_name_tool -change libicuuc.dylib.28 $PREFIX/lib/libicuuc.dylib.28 libiculx.dylib.28.0
168         install_name_tool -change libicudata.dylib.28 $PREFIX/lib/libicudata.dylib.28 libiculx.dylib.28.0       
169         install_name_tool -change libicule.dylib.28 $PREFIX/lib/libicule.dylib.28 libiculx.dylib.28.0   
170
171         # libicutoolutil
172         install_name_tool -id $PREFIX/lib/libicutoolutil.dylib.28 libicutoolutil.dylib.28.0
173         install_name_tool -change libicuuc.dylib.28 $PREFIX/lib/libicuuc.dylib.28 libicutoolutil.dylib.28.0
174         install_name_tool -change libicudata.dylib.28 $PREFIX/lib/libicudata.dylib.28 libicutoolutil.dylib.28.0
175
176         # libicuuc
177         install_name_tool -id $PREFIX/lib/libicuuc.dylib.28 libicuuc.dylib.28.0
178         install_name_tool -change libicudata.dylib.28 $PREFIX/lib/libicudata.dylib.28 libicuuc.dylib.28.0
179                 
180         cd $INITIALDIR
181 fi
182
183 # mono
184
185 echo +++ processing mono run-time libraries
186
187 if test ! -f "$PREFIX/bin/mono"; then
188         if test ! -d "$INITIALDIR/Bootstrap"; then
189                 mkdir $INITIALDIR/Bootstrap
190         fi
191         cd $INITIALDIR/Bootstrap
192         
193         if test ! -d "mono-$VERSION"; then
194                 curl http://www.go-mono.com/archive/beta1/mono-$VERSION.tar.gz -O
195                 tar xzf mono-$VERSION.tar.gz
196                 rm mono-$VERSION.tar.gz
197         fi
198         
199         cd mono-$VERSION
200         
201         ./configure --prefix=$PREFIX --with-gc=boehm 
202         make
203         make install
204         make clean
205                 
206         cd ..
207 fi
208
209 # setup the Current symlink
210
211 cd /Library/Frameworks/Mono.framework/Versions
212
213 if test -e "/Library/Frameworks/Mono.framework/Versions/Current"; then
214         rm Current
215 fi
216 ln -s $VERSION Current
217
218 # update the installer source files
219
220