9
9
# Modules
10
10
MODULES=$MODULES
11
11
12
+ # Resolve Python path
13
+ PYTHON=" $( which python2.7) "
14
+ if [ " X$PYTHON " == " X" ]; then
15
+ PYTHON=" $( which python2) "
16
+ fi
17
+ if [ " X$PYTHON " == " X" ]; then
18
+ PYTHON=" $( which python) "
19
+ fi
20
+
12
21
# Paths
13
- ROOT_PATH=" $( dirname $( python -c ' import os,sys;print os.path.realpath(sys.argv[1])' $0 ) ) "
22
+ ROOT_PATH=" $( dirname $( $PYTHON -c ' from __future__ import print_function; import os,sys;print( os.path.realpath(sys.argv[1]) )' $0 ) ) "
14
23
RECIPES_PATH=" $ROOT_PATH /recipes"
15
24
BUILD_PATH=" $ROOT_PATH /build"
16
25
LIBS_PATH=" $ROOT_PATH /build/libs"
26
+ JAVACLASS_PATH=" $ROOT_PATH /build/java"
17
27
PACKAGES_PATH=" $ROOT_PATH /.packages"
18
28
SRC_PATH=" $ROOT_PATH /src"
19
29
JNI_PATH=" $SRC_PATH /jni"
@@ -42,8 +52,10 @@ if [ "X$WGET" == "X" ]; then
42
52
echo " Error: you need at least wget or curl installed."
43
53
exit 1
44
54
else
45
- WGET=" $WGET -L -O"
55
+ WGET=" $WGET -L -O -o "
46
56
fi
57
+ else
58
+ WGET=" $WGET -O"
47
59
fi
48
60
49
61
case $OSTYPE in
@@ -123,7 +135,7 @@ function push_arm() {
123
135
# export OFLAG="-Os"
124
136
# export OFLAG="-O2"
125
137
126
- export CFLAGS=" -mandroid $OFLAG -fomit-frame-pointer --sysroot $NDKPLATFORM "
138
+ export CFLAGS=" -DANDROID - mandroid $OFLAG -fomit-frame-pointer --sysroot $NDKPLATFORM "
127
139
if [ " X$ARCH " == " Xarmeabi-v7a" ]; then
128
140
CFLAGS+=" -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb"
129
141
fi
@@ -133,7 +145,7 @@ function push_arm() {
133
145
export LDFLAGS=" -lm"
134
146
135
147
# this must be something depending of the API level of Android
136
- PYPLATFORM=$( python -c ' import sys; print sys.platform' )
148
+ PYPLATFORM=$( $PYTHON -c ' from __future__ import print_function; import sys; print( sys.platform) ' )
137
149
if [ " $PYPLATFORM " == " linux2" ]; then
138
150
PYPLATFORM=" linux"
139
151
elif [ " $PYPLATFORM " == " linux3" ]; then
@@ -150,7 +162,7 @@ function push_arm() {
150
162
export TOOLCHAIN_VERSION=4.4.3
151
163
fi
152
164
153
- export PATH=" $ANDROIDNDK /toolchains/$TOOLCHAIN_PREFIX -$TOOLCHAIN_VERSION /prebuilt/$PYPLATFORM -x86/bin/:$ANDROIDNDK :$ANDROIDSDK /tools:$PATH "
165
+ export PATH=" $ANDROIDNDK /toolchains/$TOOLCHAIN_PREFIX -$TOOLCHAIN_VERSION /prebuilt/$PYPLATFORM -x86/bin/:$ANDROIDNDK /toolchains/ $TOOLCHAIN_PREFIX - $TOOLCHAIN_VERSION /prebuilt/ $PYPLATFORM -x86_64/bin/: $ANDROIDNDK :$ANDROIDSDK /tools:$PATH "
154
166
155
167
# search compiler in the path, to fail now instead of later.
156
168
CC=$( which $TOOLCHAIN_PREFIX -gcc)
@@ -213,6 +225,36 @@ function usage() {
213
225
exit 0
214
226
}
215
227
228
+ # Check installation state of a debian package list.
229
+ # Return all missing packages.
230
+ function check_pkg_deb_installed() {
231
+ PKGS=$1
232
+ MISSING_PKGS=" "
233
+ for PKG in $PKGS ; do
234
+ CHECK=$( dpkg -s $PKG 2>&1 )
235
+ if [ $? -eq 1 ]; then
236
+ MISSING_PKGS=" $PKG $MISSING_PKGS "
237
+ fi
238
+ done
239
+ if [ " X$MISSING_PKGS " != " X" ]; then
240
+ error " Packages missing: $MISSING_PKGS "
241
+ error " It might break the compilation, except if you installed thoses packages manually."
242
+ fi
243
+ }
244
+
245
+ function check_build_deps() {
246
+ DIST=$( lsb_release -is)
247
+ info " Check build dependencies for $DIST "
248
+ case $DIST in
249
+ Debian|Ubuntu)
250
+ check_pkg_deb_installed " build-essential zlib1g-dev cython"
251
+ ;;
252
+ * )
253
+ debug " Avoid check build dependencies, unknow platform $DIST "
254
+ ;;
255
+ esac
256
+ }
257
+
216
258
function run_prepare() {
217
259
info " Check enviromnent"
218
260
if [ " X$ANDROIDSDK " == " X" ]; then
@@ -289,6 +331,7 @@ function run_prepare() {
289
331
test -d $PACKAGES_PATH || mkdir -p $PACKAGES_PATH
290
332
test -d $BUILD_PATH || mkdir -p $BUILD_PATH
291
333
test -d $LIBS_PATH || mkdir -p $LIBS_PATH
334
+ test -d $JAVACLASS_PATH || mkdir -p $JAVACLASS_PATH
292
335
test -d $LIBLINK_PATH || mkdir -p $LIBLINK_PATH
293
336
294
337
# create initial files
@@ -346,7 +389,7 @@ function run_source_modules() {
346
389
debug " Read $module recipe"
347
390
recipe=$RECIPES_PATH /$module /recipe.sh
348
391
if [ ! -f $recipe ]; then
349
- error " Recipe $module does not exit "
392
+ error " Recipe $module does not exist "
350
393
exit -1
351
394
fi
352
395
source $RECIPES_PATH /$module /recipe.sh
@@ -388,6 +431,20 @@ function run_get_packages() {
388
431
389
432
for module in $MODULES ; do
390
433
# download dependencies for this module
434
+ # check if there is not an overload from environment
435
+ module_dir=$( eval " echo \$ P4A_${module} _DIR" )
436
+ if [ " $module_dir " ]
437
+ then
438
+ debug " \$ P4A_${module} _DIR is not empty, linking $module_dir dir instead of downloading"
439
+ directory=$( eval " echo \$ BUILD_${module} " )
440
+ if [ -e $directory ]; then
441
+ try rm -rf " $directory "
442
+ fi
443
+ try mkdir -p " $directory "
444
+ try rmdir " $directory "
445
+ try ln -s " $module_dir " " $directory "
446
+ continue
447
+ fi
391
448
debug " Download package for $module "
392
449
393
450
url=" URL_$module "
@@ -429,7 +486,7 @@ function run_get_packages() {
429
486
# download if needed
430
487
if [ $do_download -eq 1 ]; then
431
488
info " Downloading $url "
432
- try $WGET $url
489
+ try $WGET $filename $ url
433
490
else
434
491
debug " Module $module already downloaded"
435
492
fi
@@ -536,6 +593,9 @@ function run_distribute() {
536
593
try mkdir -p libs/$ARCH
537
594
try cp -a $BUILD_PATH /libs/* libs/$ARCH /
538
595
596
+ debug " Copy java files from various libs"
597
+ cp -a $BUILD_PATH /java/* src
598
+
539
599
debug " Fill private directory"
540
600
try cp -a python-install/lib private/
541
601
try mkdir -p private/include/python2.7
@@ -579,6 +639,7 @@ function run_biglink() {
579
639
}
580
640
581
641
function run() {
642
+ check_build_deps
582
643
run_prepare
583
644
run_source_modules
584
645
run_get_packages
@@ -639,9 +700,9 @@ while getopts ":hvlfxm:d:s" opt; do
639
700
f)
640
701
DO_CLEAN_BUILD=1
641
702
;;
642
- x)
643
- DO_SET_X=1
644
- ;;
703
+ x)
704
+ DO_SET_X=1
705
+ ;;
645
706
\? )
646
707
echo " Invalid option: -$OPTARG " >&2
647
708
exit 1
0 commit comments