-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathbuild.sh
executable file
·83 lines (63 loc) · 2.41 KB
/
build.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
#!/usr/bin/env sh
export ROOTDIR=$(dirname $(readlink -f $0))
export HOSTPYTHON=$ROOTDIR/hostpython
export HOSTPGEN=$ROOTDIR/hostpgen
export NDK="$HOME/source/android-ndk"
export SDK="$HOME/source/android-sdk/"
export NDKPLATFORM="$NDK/platforms/android-9/arch-arm"
export PATH="$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/:$NDK:$SDK/tools:$PATH"
export PYVERSION="2.7.2"
export ARCH="armeabi"
#export ARCH="armeabi-v7a"
# to override the default optimization, set OFLAG
#export OFLAG="-Os"
#export OFLAG="-O2"
export CFLAGS="-mandroid $OFLAG -fomit-frame-pointer --sysroot $NDKPLATFORM -DNO_MALLINFO=1"
if [ $ARCH == "armeabi-v7a" ]; then
CFLAGS+=" -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb"
fi
export CXXFLAGS="$CFLAGS"
export CC="arm-linux-androideabi-gcc $CFLAGS"
export CXX="arm-linux-androideabi-g++ $CXXFLAGS"
export AR="arm-linux-androideabi-ar"
export RANLIB="arm-linux-androideabi-ranlib"
export STRIP="arm-linux-androideabi-strip --strip-unneeded"
export BLDSHARED="arm-linux-androideabi-gcc -shared $CFLAGS"
export MAKE="make -j4"
build_jni() {
cd $ROOTDIR
ndk-build
}
build_openssl() {
cd $ROOTDIR/openssl
ndk-build
cp -r $ROOTDIR/openssl/obj $ROOTDIR/obj
}
build_python() {
cd $ROOTDIR/Python
make distclean
./configure --host=arm-eabi --build=x86_64-linux-gnu --enable-shared
cat pyconfig.h \
| sed -e '/HAVE_FDATASYNC/ c#undef HAVE_FDATASYNC' \
| sed -e '/HAVE_KILLPG/ c#undef HAVE_KILLPG' \
| sed -e '/HAVE_GETHOSTBYNAME_R/ c#undef HAVE_GETHOSTBYNAME_R' \
| sed -e '/HAVE_DECL_ISFINITE/ c#undef HAVE_DECL_ISFINITE' \
> temp
mv temp pyconfig.h
$MAKE HOSTPYTHON=$HOSTPYTHON HOSTPGEN=$HOSTPGEN BLDSHARED="$BLDSHARED" CROSS_COMPILE=arm-eabi- CROSS_COMPILE_TARGET=yes \
HOSTARCH=arm-linux BUILDARCH=x86_64-linux-gnu INSTSONAME=libpython2.7.so $MODULE
if [ -z "$MODULE" ]; then
$MAKE install HOSTPYTHON=$HOSTPYTHON BLDSHARED="$BLDSHARED" CROSS_COMPILE=arm-eabi- CROSS_COMPILE_TARGET=yes \
prefix="$ROOTDIR/build" INSTSONAME=libpython2.7.so $MODULE
fi
}
build_jni
build_openssl
export CC="$CC -I$ROOTDIR/jni/sqlite3"
export MODULE="libpython2.7.so"
build_python
mv $ROOTDIR/Python/libpython2.7.so $ROOTDIR
export MODULE=""
export BLDSHARED="arm-linux-androideabi-gcc -shared $CFLAGS -L$ROOTDIR -lpython2.7 -Wl,--no-undefined"
build_python
yes | mv $ROOTDIR/libpython2.7.so $ROOTDIR/build/lib/libpython2.7.so