@@ -131,7 +131,7 @@ def wrapper_func(self, args):
131
131
ctx .prepare_build_environment (user_sdk_dir = self .sdk_dir ,
132
132
user_ndk_dir = self .ndk_dir ,
133
133
user_android_api = self .android_api ,
134
- user_ndk_version = self .ndk_version )
134
+ user_ndk_ver = self .ndk_version )
135
135
dist = self ._dist
136
136
if dist .needs_build :
137
137
info ('No dist exists that meets your requirements, so one will '
@@ -543,7 +543,7 @@ def ndk_dir(self, value):
543
543
self ._ndk_dir = value
544
544
545
545
def prepare_build_environment (self , user_sdk_dir , user_ndk_dir ,
546
- user_android_api , user_ndk_version ):
546
+ user_android_api , user_ndk_ver ):
547
547
'''Checks that build dependencies exist and sets internal variables
548
548
for the Android SDK etc.
549
549
@@ -559,10 +559,10 @@ def prepare_build_environment(self, user_sdk_dir, user_ndk_dir,
559
559
sdk_dir = None
560
560
if user_sdk_dir :
561
561
sdk_dir = user_sdk_dir
562
- if sdk_dir is None :
562
+ if sdk_dir is None : # This is the old P4A-specific var
563
563
sdk_dir = environ .get ('ANDROIDSDK' , None )
564
- if sdk_dir is None :
565
- sdk_dir = environ .get ('ANDROID_HOME' , None )
564
+ if sdk_dir is None : # This seems used more conventionally
565
+ sdk_dir = environ .get ('ANDROID_HOME' , None )
566
566
if sdk_dir is None :
567
567
warning ('Android SDK dir was not specified, exiting.' )
568
568
exit (1 )
@@ -600,23 +600,81 @@ def prepare_build_environment(self, user_sdk_dir, user_ndk_dir,
600
600
# AND: If the android api target doesn't exist, we should
601
601
# offer to install it here
602
602
603
- # AND: We should check for ndk-build and ant?
604
- self .ndk_ver = environ .get ('ANDROIDNDKVER' , 'r9' )
605
- if self .sdk_dir is None :
606
- ok = False
607
- self .ndk_dir = environ .get ('ANDROIDNDK' , None )
608
- if self .ndk_dir is None :
609
- ok = False
603
+
604
+ # Find the Android NDK
605
+ # Could also use ANDROID_NDK, but doesn't look like many tools use this
606
+ ndk_dir = None
607
+ if user_ndk_dir :
608
+ ndk_dir = user_ndk_dir
609
+ if ndk_dir is not None :
610
+ info ('Getting NDK dir from from user argument' )
611
+ if ndk_dir is None : # The old P4A-specific dir
612
+ ndk_dir = environ .get ('ANDROIDNDK' , None )
613
+ if ndk_dir is not None :
614
+ info ('Found NDK dir in $ANDROIDNDK' )
615
+ if ndk_dir is None : # Apparently the most common convention
616
+ ndk_dir = environ .get ('NDK_HOME' , None )
617
+ if ndk_dir is not None :
618
+ info ('Found NDK dir in $NDK_HOME' )
619
+ if ndk_dir is None : # Another convention (with maven?)
620
+ ndk_dir = environ .get ('ANDROID_NDK_HOME' , None )
621
+ if ndk_dir is not None :
622
+ info ('Found NDK dir in $ANDROID_NDK_HOME' )
623
+ if ndk_dir is None :
624
+ warning ('Android NDK dir was not specified, exiting.' )
625
+ exit (1 )
626
+ self .ndk_dir = ndk_dir
627
+
628
+
629
+ # Find the NDK version, and check it against what the NDK dir
630
+ # seems to report
631
+ ndk_ver = None
632
+ if user_ndk_ver :
633
+ ndk_ver = user_ndk_ver
634
+ if ndk_dir is not None :
635
+ info ('Got NDK version from from user argument' )
636
+ if ndk_ver is None :
637
+ ndk_ver = environ .get ('ANDROIDNDKVER' , None )
638
+ if ndk_dir is not None :
639
+ info ('Got NDK version from $ANDROIDNDKVER' )
640
+
641
+ try :
642
+ with open (join (ndk_dir , 'RELEASE.TXT' )) as fileh :
643
+ reported_ndk_ver = fileh .read ().split (' ' )[0 ]
644
+ except IOError :
645
+ pass
610
646
else :
611
- self .ndk_platform = join (
612
- self .ndk_dir ,
613
- 'platforms' ,
614
- 'android-{}' .format (self .android_api ),
615
- 'arch-arm' )
616
- print ('ndk platform' , self .ndk_platform )
617
- if not exists (self .ndk_platform ):
618
- warning ('ndk_platform doesn\' t exist' )
619
- ok = False
647
+ if ndk_ver is None :
648
+ ndk_ver = reported_ndk_ver
649
+ info ('Got Android NDK version from the NDK dir: it is {}' .format (ndk_ver ))
650
+ else :
651
+ if ndk_ver != reported_ndk_ver :
652
+ warning ('NDK version was set as {}, but checking '
653
+ 'the NDK dir claims it is {}.' .format (
654
+ ndk_ver , reported_ndk_ver ))
655
+ warning ('The build will try to continue, but it may '
656
+ 'fail and you should check '
657
+ 'that your setting is correct.' )
658
+ warning ('If the NDK dir result is correct, you don\' t '
659
+ 'need to manually set the NDK ver.' )
660
+ if ndk_ver is None :
661
+ warning ('Android NDK version could not be found, exiting.' )
662
+
663
+ exit (1 )
664
+
665
+
666
+
667
+
668
+
669
+ self .ndk_platform = join (
670
+ self .ndk_dir ,
671
+ 'platforms' ,
672
+ 'android-{}' .format (self .android_api ),
673
+ 'arch-arm' )
674
+ print ('ndk platform' , self .ndk_platform )
675
+ if not exists (self .ndk_platform ):
676
+ warning ('ndk_platform doesn\' t exist' )
677
+ ok = False
620
678
621
679
virtualenv = None
622
680
if virtualenv is None :
0 commit comments