Adding scripts to build PIL for kivy-ios

new file:   pil_files/patch_pil.patch
	new file:   ../tools/build-libjpeg.sh
	new file:   ../tools/build-pil.sh
This commit is contained in:
Toni Bagur 2013-07-12 11:16:34 +02:00
parent 1f975c73cf
commit 5561d15db5
3 changed files with 192 additions and 0 deletions

View file

@ -0,0 +1,107 @@
diff -rupN Imaging-1.1.7/_imaging.c Imaging-1.1.7_patched/_imaging.c
--- Imaging-1.1.7/_imaging.c 2009-11-02 12:18:48.000000000 +0100
+++ Imaging-1.1.7_patched/_imaging.c 2013-07-12 10:58:39.000000000 +0200
@@ -71,12 +71,28 @@
* See the README file for information on usage and redistribution.
*/
-
#include "Python.h"
#include "Imaging.h"
+#include <stdio.h>
+
+FILE *fopen$UNIX2003( const char *filename, const char *mode )
+{
+ return fopen(filename, mode);
+}
+
+size_t fwrite$UNIX2003( const void *a, size_t b, size_t c, FILE *d )
+{
+ return fwrite(a, b, c, d);
+}
+
+ssize_t write$UNIX2003(int a, const void *b, size_t c)
+{
+ return write(a,b,c);
+}
+
/* Configuration stuff. Feel free to undef things you don't need. */
#define WITH_IMAGECHOPS /* ImageChops support */
#define WITH_IMAGEDRAW /* ImageDraw support */
diff -rupN Imaging-1.1.7/libImaging/Quant.c Imaging-1.1.7_patched/libImaging/Quant.c
--- Imaging-1.1.7/libImaging/Quant.c 2009-11-01 02:29:14.000000000 +0100
+++ Imaging-1.1.7_patched/libImaging/Quant.c 2013-07-12 10:59:06.000000000 +0200
@@ -20,10 +20,15 @@
#include "Imaging.h"
+#include <time.h>
+clock_t clock$UNIX2003(void)
+{
+ return clock();
+}
+
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
-#include <time.h>
#include "Quant.h"
@@ -33,6 +38,7 @@
#define NO_OUTPUT
+
typedef struct {
unsigned long scale;
} PixelHashData;
diff -rupN Imaging-1.1.7/setup.py Imaging-1.1.7_patched/setup.py
--- Imaging-1.1.7/setup.py 2009-11-15 17:06:10.000000000 +0100
+++ Imaging-1.1.7_patched/setup.py 2013-07-12 10:58:30.000000000 +0200
@@ -88,6 +88,7 @@ from distutils.command.build_ext import
try:
import _tkinter
+ _tkinter = None
except ImportError:
_tkinter = None
@@ -283,6 +284,14 @@ class pil_build_ext(build_ext):
#
# core library
+
+ class feature:
+ tiff = tcl = tk = lcms = None
+ jpeg="jpeg"
+ zlib="zlib"
+ freetype="freetype"
+ feature = feature()
+
files = ["_imaging.c"]
for file in IMAGING:
files.append(file + ".c")
@@ -348,7 +357,7 @@ class pil_build_ext(build_ext):
dir = os.path.join(root, "Tk.framework", "Headers")
add_directory(self.compiler.include_dirs, dir, 1)
break
- if frameworks:
+ if False and frameworks:
exts.append(Extension(
"_imagingtk", ["_imagingtk.c", "Tk/tkImaging.c"],
extra_compile_args=frameworks, extra_link_args=frameworks
@@ -364,7 +373,9 @@ class pil_build_ext(build_ext):
exts.append(Extension("_imagingmath", ["_imagingmath.c"]))
self.extensions[:] = exts
-
+ print "Extensions:"
+ for e in exts:
+ print e.name,str(e.sources)
build_ext.build_extensions(self)
#

43
tools/build-libjpeg.sh Executable file
View file

@ -0,0 +1,43 @@
#!/bin/bash
. $(dirname $0)/environment.sh
echo "Building libjpeg...."
if [ ! -f $CACHEROOT/jpegsrc.v6b.tar.gz ]; then
try curl -L http://downloads.sourceforge.net/project/libjpeg/libjpeg/6b/jpegsrc.v6b.tar.gz > $CACHEROOT/jpegsrc.v6b.tar.gz
fi
if [ ! -d $TMPROOT/jpeg-6b ]; then
rm -rf $CACHEROOT/jpeg-6b
try tar -xvf $CACHEROOT/jpegsrc.v6b.tar.gz
try mv jpeg-6b $TMPROOT
fi
# lib not found, compile it
echo "Configuring...."
pushd $TMPROOT/jpeg-6b
echo try ./configure --prefix=$DESTROOT \
--host=arm-apple-darwin \
--enable-static=yes \
--enable-shared=no \
CC="$ARM_CC" AR="$ARM_AR" \
LDFLAGS="$ARM_LDFLAGS" CFLAGS="$ARM_CFLAGS"
try make clean
make #With controlled errors
rm *.a
rm cjpeg.o
rm djpeg.o
rm jpegtran.o
rm rdjpgcom.o
rm urjpgcom.o
rm rdjtran.o
rm wrjpgcom.o
ar rcs libjpeg.a *.o
# copy to buildroot
cp libjpeg.a $BUILDROOT/lib/libjpeg.a
cp *.h $BUILDROOT/include/
popd

42
tools/build-pil.sh Executable file
View file

@ -0,0 +1,42 @@
#!/bin/bash
. $(dirname $0)/environment.sh
if [ ! -f $CACHEROOT/Imaging-1.1.7.tar.gz ] ; then
try curl -L http://effbot.org/downloads/Imaging-1.1.7.tar.gz > $CACHEROOT/Imaging-1.1.7.tar.gz
fi
if [ ! -d $TMPROOT/Imaging-1.1.7 ]; then
cd $TMPROOT
try tar -xvf $CACHEROOT/Imaging-1.1.7.tar.gz
fi
# build audiostream
OLD_CC="$CC"
OLD_CFLAGS="$CFLAGS"
OLD_LDFLAGS="$LDFLAGS"
OLD_LDSHARED="$LDSHARED"
export CC="$ARM_CC -I$BUILDROOT/include"
export CFLAGS="$ARM_CFLAGS"
export LDFLAGS="$ARM_LDFLAGS"
export LDSHARED="$KIVYIOSROOT/tools/liblink"
try pushd $TMPROOT/Imaging-1.1.7
patch -p1 < $KIVYIOSROOT/src/pil_files/patch_pil.patch
$HOSTPYTHON setup.py build_ext &>/dev/null
try find . -iname '*.pyx' -exec $KIVYIOSROOT/tools/cythonize.py {} \;
try $HOSTPYTHON setup.py build_ext
try $HOSTPYTHON setup.py install -O2 --root iosbuild
try find iosbuild | grep -E '.*\.(py|pyc|so\.o|so\.a|so\.libs)$$' | xargs rm
try cp -a iosbuild/usr/local/lib/python2.7/site-packages/PIL "$BUILDROOT/python/lib/python2.7/site-packages"
popd
export CC="$OLD_CC"
export CFLAGS="$OLD_CFLAGS"
export LDFLAGS="$OLD_LDFLAGS"
export LDSHARED="$OLD_LDSHARED"
bd=$TMPROOT/Imaging-1.1.7/build/lib.macosx-*
try $KIVYIOSROOT/tools/biglink $BUILDROOT/lib/libpil.a $bd
deduplicate $BUILDROOT/lib/libpil.a