@@ -64,20 +64,72 @@ class Setup
64
64
{
65
65
Log .v (" checks default ndk-bundle in android sdk" );
66
66
var ndkBundle = defines .get (" ANDROID_SDK" )+ " /ndk-bundle" ;
67
+ var newStyle = false ;
68
+ if (! FileSystem .exists (ndkBundle ) )
69
+ {
70
+ Log .v (" ndk-bundle directory not found in sdk,try ndk" );
71
+ var altDir = defines .get (" ANDROID_SDK" )+ " /ndk/" ;
72
+ if (FileSystem .exists (altDir ) )
73
+ {
74
+ var alt = findBestNdk (altDir );
75
+ if (alt != null )
76
+ {
77
+ Log .v (' using $alt ndk dir' );
78
+ ndkBundle = alt ;
79
+ }
80
+ }
81
+ }
67
82
ndkBundle = ndkBundle .split (" \\ " ).join (" /" );
68
- var version = getNdkVersion (ndkBundle );
83
+ var version = getNdkVersion (ndkBundle , newStyle );
69
84
if (version > bestVersion && (inBaseVersion == 0 || inBaseVersion == Std .int (version )) )
70
85
{
71
- Log .v (" Using default ndk-bundle in android sdk" );
86
+ Log .v (" Using default ndk-bundle in android sdk: " + ndkBundle );
72
87
result = ndkBundle ;
73
88
}
74
89
}
75
90
76
91
return result ;
77
92
}
78
93
79
- static public function getNdkVersion ( inDirName : String ): Float
94
+ static function findBestNdk ( root : String ) : String
80
95
{
96
+ var versionMatch = ~/ (\d + )\. (\d + \. \d + )/ ;
97
+ var version : String = null ;
98
+ var best = 0.0 ;
99
+ try
100
+ {
101
+ for (file in FileSystem .readDirectory (root ))
102
+ {
103
+ if (versionMatch .match (file ))
104
+ {
105
+ var maj = Std .parseInt (versionMatch .matched (1 ));
106
+ var minor = Std .parseFloat (versionMatch .matched (2 ));
107
+ var combined = maj * 1000 + minor ;
108
+ Log .v (" found ndk:" + file );
109
+ if (combined > best )
110
+ {
111
+ best = combined ;
112
+ version = file ;
113
+ }
114
+ }
115
+ }
116
+ }
117
+ catch (e : Dynamic )
118
+ {
119
+ }
120
+
121
+ if (version != null )
122
+ return root + " /" + version ;
123
+
124
+ return null ;
125
+ }
126
+
127
+ static var gotNdkVersion = 0.0 ;
128
+ static public function getNdkVersion (inDirName : String , newStyle = false ): Float
129
+ {
130
+ if (gotNdkVersion != 0 )
131
+ return gotNdkVersion ;
132
+
81
133
Log .v (" Try to get version from source.properties" );
82
134
var src = toPath (inDirName + " /source.properties" );
83
135
if (sys. FileSystem .exists (src ))
@@ -97,8 +149,9 @@ class Setup
97
149
var result : Float = 1.0 * Std .parseInt (split2 [0 ]) + 0.001 * Std .parseInt (split2 [1 ]);
98
150
if (result >= 8 )
99
151
{
100
- Log .v (' Deduced NDK version ' + result + ' from " $inDirName " /source.properties' );
152
+ Log .v (' Deduced NDK version ' + result + ' from " $inDirName /source.properties" ' );
101
153
fin .close ();
154
+ gotNdkVersion = result ;
102
155
return result ;
103
156
}
104
157
}
@@ -121,11 +174,13 @@ class Setup
121
174
var minor = extract_version .matched (3 );
122
175
if (minor != null && minor .length > 0 )
123
176
result + = 0.001 * (minor .toLowerCase ().charCodeAt (0 )- ' a' .code );
177
+ gotNdkVersion = result ;
124
178
return result ;
125
179
}
126
180
127
181
Log .v (' Could not deduce NDK version from " $inDirName " - assuming 8' );
128
- return 8 ;
182
+ gotNdkVersion = 8 ;
183
+ return gotNdkVersion ;
129
184
}
130
185
131
186
public static function initHXCPPConfig (ioDefines : Hash <String >)
0 commit comments