root/branches/perian-1.1/createStaticLibs.sh

Revision 933, 6.1 kB (checked in by astrange, 1 month ago)

Use STABS instead of DWARF for now

Line 
1 #!/bin/sh -v
2 PATH=$PATH:/usr/local/bin:/usr/bin:/sw/bin:/opt/local/bin
3 buildid_ffmpeg="r`svn info ffmpeg | grep -F Revision | awk '{print $2}'`"
4
5 if [ "$MACOSX_DEPLOYMENT_TARGET" = "" ]; then
6         MACOSX_DEPLOYMENT_TARGET="10.4"
7 fi
8
9 generalConfigureOptions="--disable-muxers --disable-encoders --disable-stripping --enable-pthreads --disable-ffmpeg --disable-network --disable-ffplay --disable-vhook --disable-ffserver"
10 sdkflags="-isysroot $SDKROOT -mmacosx-version-min=$MACOSX_DEPLOYMENT_TARGET -ggdb -gstabs -Dattribute_deprecated="
11
12 if [ "$BUILD_STYLE" = "Development" ] ; then
13     generalConfigureOptions="$generalConfigureOptions --disable-optimizations --disable-mmx"
14 fi
15
16 if what /usr/bin/ld | grep -q ld64-77; then
17   no_pic=0
18 else
19   no_pic=1
20 fi
21
22 if [ $no_pic -gt 0 ]; then
23     sdkflags="$sdkflags -mdynamic-no-pic" # ld can't handle -fno-pic on ppc
24 else
25     #no-pic only on pre-leopard
26     echo "warning: Due to issues with Xcode 3.0, Perian will run very slowly! Please get the iPhone SDK or fix Patches/ffmpeg.diff!";
27     generalConfigureOptions="$generalConfigureOptions --disable-decoder=cavs --disable-decoder=vc1 --disable-decoder=wmv3 --disable-mmx --enable-shared"
28 fi
29
30 if [ "$CC" = "" ]; then
31         CC="gcc"
32         export CC
33 fi
34
35 export sdkflags
36
37 OUTPUT_FILE="$BUILT_PRODUCTS_DIR/Universal/buildid"
38
39 if [[ -e "$OUTPUT_FILE" ]] ; then
40     oldbuildid_ffmpeg=`cat "$OUTPUT_FILE"`
41 else
42     oldbuildid_ffmpeg="buildme"
43 fi
44
45 QUICKBUILD="$BUILT_PRODUCTS_DIR/Universal/quickbuild"
46 if [[ -e "$QUICKBUILD" ]] ; then
47     oldbuildid_ffmpeg="quick"
48     rm "$QUICKBUILD"
49 fi
50
51 if [[ $buildid == "r" ]] ; then
52     echo "error: you're using svk. Please ask someone to add svk support to the build system. There's a script in Adium svn that can do this."
53     exit 1;
54 fi
55
56 if [ `echo $ARCHS | grep -c i386` -gt 0 ] ; then
57    buildi386=1
58    if [ `echo $ARCHS | grep -c ppc` -gt 0 ] ; then
59        buildppc=1
60    else
61        buildppc=0
62    fi
63 elif [ `echo $ARCHS | grep -c ppc` -gt 0 ] ; then
64    buildi386=0
65    buildppc=1
66 else
67     echo "No architectures"
68     exit 0
69 fi
70
71 if [ -e ffmpeg/patched ] ; then
72         (cd ffmpeg && svn revert -R . && rm patched)
73 fi
74
75 patch -p0 < Patches/ffmpeg-h264dsp-crash.diff
76 patch -p0 < Patches/ffmpeg-forceinline.diff
77 patch -p0 < Patches/ffmpeg-no-interlaced.diff
78 touch ffmpeg/patched
79
80 # if [ $no_pic -eq 0 ] ; then
81 # (cd ffmpeg; patch -p1 < ../Patches/ffmpeg-pic.diff)
82 # fi
83
84 touch patched
85
86 if [ "$buildid_ffmpeg" = "$oldbuildid_ffmpeg" ] ; then
87     echo "Static ffmpeg libs are up-to-date ; not rebuilding"
88 else
89     echo "Static ffmpeg libs are out-of-date ; rebuilding"
90    
91     echo -n "Building "
92     if [ $buildi386 -eq $buildppc ] ; then
93         echo "Universal"
94     elif [ $buildi386 -gt 0 ] ; then
95         echo "Intel-only"
96     else
97         echo "PPC-only"
98     fi
99    
100     mkdir "$BUILT_PRODUCTS_DIR"
101     #######################
102     # Intel shlibs
103     #######################
104     if [ $buildi386 -gt 0 ] ; then
105         BUILDDIR="$BUILT_PRODUCTS_DIR/intel"
106         mkdir "$BUILDDIR"
107
108                 if [ "$BUILD_STYLE" != "Development" ] ; then
109                 export optCFlags="-mtune=nocona -fstrict-aliasing -frerun-cse-after-loop -fweb -falign-loops=16"
110         fi
111
112         cd "$BUILDDIR"
113         if [ "$oldbuildid_ffmpeg" != "quick" ] ; then
114             if [ `arch` = ppc ] ; then
115                 "$SRCROOT/ffmpeg/configure" --cc=$CC --enable-cross-compile --arch=i386 --extra-ldflags="$sdkflags -arch i386" --extra-cflags="-arch i386 $sdkflags $optCFlags" $extraConfigureOptions $generalConfigureOptions --cpu=pentium-m
116             else
117                 "$SRCROOT/ffmpeg/configure" --cc=$CC --extra-cflags="$sdkflags $optCFlags" $extraConfigureOptions $generalConfigureOptions --cpu=pentium-m
118             fi
119        
120             make depend > /dev/null 2>&1 || true
121         fi
122         if [ "$BUILD_STYLE" = "Development" ] ; then
123             cd libavcodec
124             export CFLAGS="-O1 -fomit-frame-pointer -funit-at-a-time"; make h264.o cabac.o h264_parser.o motion_est.o
125             unset CFLAGS;
126             cd ..
127         fi
128         make -j3
129     fi
130    
131     #######################
132     # PPC shlibs
133     #######################
134     if [ $buildppc -gt 0 ] ; then
135         BUILDDIR="$BUILT_PRODUCTS_DIR/ppc"
136         mkdir "$BUILDDIR"
137
138                 if [ "$BUILD_STYLE" != "Development" ] ; then
139                 export optCFlags="-mcpu=G3 -mtune=G5 -fstrict-aliasing -funroll-loops -falign-loops=16 -mmultiple"
140         fi
141    
142         cd "$BUILDDIR"
143         if [ "$oldbuildid_ffmpeg" != "quick" ] ; then
144             if [ `arch` = ppc ] ; then
145                 "$SRCROOT/ffmpeg/configure" --cc=$CC --extra-cflags="-faltivec $sdkflags $optCFlags" $extraConfigureOptions $generalConfigureOptions
146             else
147                 "$SRCROOT/ffmpeg/configure" --cc=$CC --enable-cross-compile --arch=ppc  --extra-ldflags="$sdkflags -arch ppc" --extra-cflags="-faltivec -arch ppc $sdkflags $optCFlags" $extraConfigureOptions $generalConfigureOptions
148             fi
149        
150             make depend > /dev/null 2>&1 || true
151         fi
152         make -j3
153     fi
154 fi
155
156 #######################
157 # lipo/copy shlibs
158 #######################
159 BUILDDIR="$BUILT_PRODUCTS_DIR/Universal"
160 INTEL="$BUILT_PRODUCTS_DIR/intel"
161 PPC="$BUILT_PRODUCTS_DIR/ppc"
162
163 rm -rf "$BUILDDIR"
164 mkdir "$BUILDDIR"
165 echo $buildi386 $buildppc
166 if [ $buildi386 -eq $buildppc ] ; then
167     # lipo them
168     for aa in "$INTEL"/*/*.a ; do
169         echo lipo -create $aa `echo -n $aa | sed 's/intel/ppc/'` -output `echo -n $aa | sed 's/intel\/.*\//Universal\//'`
170         lipo -create $aa `echo -n $aa | sed 's/intel/ppc/'` -output `echo -n $aa | sed 's/intel\/.*\//Universal\//'`
171     done
172 else
173     if [ $buildppc -gt 0 ] ; then
174         archDir="ppc"
175         BUILDARCHDIR=$PPC
176     else
177         archDir="intel"
178         BUILDARCHDIR=$INTEL
179     fi
180     # just copy them
181     for aa in "$BUILDARCHDIR"/*/*.a ; do
182         echo cp "$aa" `echo -n $aa | sed 's/'$archDir'\/.*\//Universal\//'`
183         cp "$aa" `echo -n $aa | sed 's/'$archDir'\/.*\//Universal\//'`
184     done
185 fi
186 echo -n "$buildid_ffmpeg" > $OUTPUT_FILE
187
188 mkdir "$SYMROOT/Universal" || true
189 cp "$BUILT_PRODUCTS_DIR/Universal"/* "$SYMROOT/Universal"
190 if [ "$BUILD_STYLE" = "Deployment" ] ; then
191     strip -S "$SYMROOT/Universal"/*.a
192 fi
193 ranlib "$SYMROOT/Universal"/*.a
Note: See TracBrowser for help on using the browser.