Allow 'update' and 'buildjni' to accept list of subdir paths to run tools within.

This is useful for multi-component projects (main app + libraries in separate
dirs). Older adhoc values (update=no, buildjni=yes) for both options are
retained, except that to ignore jni/ directory, buildjni=no instead of
buildjni=manual should be used now.

Also, if --verbose is given, print message about runnibg ndk-build - native
libraries can be quite big and process long, so this is useful to keep user
in loop. To achieve this, had to global'ize options.
This commit is contained in:
Paul Sokolovsky 2012-03-07 08:46:56 +02:00
parent 22f9895927
commit d26f2d1ffa
2 changed files with 21 additions and 8 deletions

View file

@ -687,7 +687,7 @@ def prepare_source(vcs, app, build, build_dir, extlib_dir, sdk_path, ndk_path, j
raise BuildException("Error running init command")
# Generate (or update) the ant build file, build.xml...
if (build.get('update', 'yes') != 'no' and
if (build.get('update', '.') != 'no' and
not build.has_key('maven')):
parms = [os.path.join(sdk_path, 'tools', 'android'),
'update', 'project', '-p', '.']
@ -695,14 +695,17 @@ def prepare_source(vcs, app, build, build_dir, extlib_dir, sdk_path, ndk_path, j
if build.has_key('target'):
parms.append('-t')
parms.append(build['target'])
update_dirs = build.get('update', '.').split(';')
# Force build.xml update if necessary...
if build.get('update', 'yes') == 'force' or build.has_key('target'):
if build.get('update', '.') == 'force' or build.has_key('target'):
update_dirs = ['.']
buildxml = os.path.join(root_dir, 'build.xml')
if os.path.exists(buildxml):
print 'Force-removing old build.xml'
os.remove(buildxml)
if subprocess.call(parms, cwd=root_dir) != 0:
raise BuildException("Failed to update project")
for d in update_dirs:
if subprocess.call(parms, cwd=root_dir + '/' + d) != 0:
raise BuildException("Failed to update project")
# If the app has ant set up to sign the release, we need to switch
# that off, because we want the unsigned apk...
@ -974,7 +977,7 @@ def scan_source(build_dir, root_dir, thisbuild):
# Presence of a jni directory without buildjni=yes might
# indicate a problem...
if (os.path.exists(os.path.join(root_dir, 'jni')) and
thisbuild.get('buildjni', 'no') == 'no'):
thisbuild.get('buildjni') is None):
msg = 'Found jni directory, but buildjni is not enabled'
problems.append(msg)