bug 748797 - support MOZ_LINKER_EXTRACT=1 as a configure option to turn on linker extraction all the time. r=glandium,blassey, a=android-only

CLOSED TREE
This commit is contained in:
Ted Mielczarek 2012-05-02 07:15:07 -04:00
parent d404b0a0a0
commit 2d8264acc2
6 changed files with 34 additions and 11 deletions

View File

@ -715,6 +715,8 @@ MOZ_SYSTEM_PLY = @MOZ_SYSTEM_PLY@
MOZ_PACKAGE_JSSHELL = @MOZ_PACKAGE_JSSHELL@
MOZ_LINKER_EXTRACT = @MOZ_LINKER_EXTRACT@
# We only want to do the pymake sanity on Windows, other os's can cope
ifeq ($(HOST_OS_ARCH),WINNT)
# Ensure invariants between GNU Make and pymake

View File

@ -8490,6 +8490,7 @@ AC_SUBST(MOZ_OS2_TOOLS)
AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
AC_SUBST(MOZ_LINKER_EXTRACT)
dnl ========================================================
dnl = Mac bundle name prefix

View File

@ -79,5 +79,12 @@ public class App extends GeckoApp {
#endif
return super.onOptionsItemSelected(item);
}
#ifdef MOZ_LINKER_EXTRACT
@Override
public boolean linkerExtract() {
return true;
}
#endif
};

View File

@ -2831,4 +2831,8 @@ abstract public class GeckoApp
}
});
}
public boolean linkerExtract() {
return false;
}
}

View File

@ -310,21 +310,26 @@ public class GeckoAppShell
File cacheFile = getCacheDir(context);
putenv("GRE_HOME=" + getGREDir(context).getPath());
File[] files = cacheFile.listFiles();
if (files != null) {
Iterator<File> cacheFiles = Arrays.asList(files).iterator();
while (cacheFiles.hasNext()) {
File libFile = cacheFiles.next();
if (libFile.getName().endsWith(".so"))
libFile.delete();
}
}
// setup the libs cache
String linkerCache = System.getenv("MOZ_LINKER_CACHE");
if (System.getenv("MOZ_LINKER_CACHE") == null) {
GeckoAppShell.putenv("MOZ_LINKER_CACHE=" + cacheFile.getPath());
if (linkerCache == null) {
linkerCache = cacheFile.getPath();
GeckoAppShell.putenv("MOZ_LINKER_CACHE=" + linkerCache);
}
if (GeckoApp.mAppContext != null &&
GeckoApp.mAppContext.linkerExtract()) {
GeckoAppShell.putenv("MOZ_LINKER_EXTRACT=1");
// Ensure that the cache dir is world-writable
File cacheDir = new File(linkerCache);
if (cacheDir.isDirectory()) {
cacheDir.setWritable(true, false);
cacheDir.setExecutable(true, false);
cacheDir.setReadable(true, false);
}
}
sLibsSetup = true;
}

View File

@ -212,6 +212,10 @@ DEFINES += \
-DUA_BUILDID=$(UA_BUILDID) \
$(NULL)
ifdef MOZ_LINKER_EXTRACT
DEFINES += -DMOZ_LINKER_EXTRACT=1
endif
GARBAGE += \
AndroidManifest.xml \
classes.dex \