use of processing.data.StringDict in project processing by processing.
the class Library method handle.
/**
* Handles all the Java-specific parsing for library handling.
*/
protected void handle() {
File exportSettings = new File(libraryFolder, "export.txt");
StringDict exportTable = exportSettings.exists() ? Util.readSettings(exportSettings) : new StringDict();
exportList = new HashMap<String, String[]>();
// get the list of files just in the library root
String[] baseList = libraryFolder.list(standardFilter);
// System.out.println("Loading " + name + "...");
// PApplet.println(baseList);
String appletExportStr = exportTable.get("applet");
if (appletExportStr != null) {
appletExportList = PApplet.splitTokens(appletExportStr, ", ");
} else {
appletExportList = baseList;
}
String androidExportStr = exportTable.get("android");
if (androidExportStr != null) {
androidExportList = PApplet.splitTokens(androidExportStr, ", ");
} else {
androidExportList = baseList;
}
// for the host platform, need to figure out what's available
File nativeLibraryFolder = libraryFolder;
String hostPlatform = Platform.getName();
// System.out.println("1 native lib folder now " + nativeLibraryFolder);
// see if there's a 'windows', 'macosx', or 'linux' folder
File hostLibrary = new File(libraryFolder, hostPlatform);
if (hostLibrary.exists()) {
nativeLibraryFolder = hostLibrary;
}
// System.out.println("2 native lib folder now " + nativeLibraryFolder);
// check for bit-specific version, e.g. on windows, check if there
// is a window32 or windows64 folder (on windows)
hostLibrary = new File(libraryFolder, hostPlatform + Platform.getNativeBits());
if (hostLibrary.exists()) {
nativeLibraryFolder = hostLibrary;
}
if (hostPlatform.equals("linux") && System.getProperty("os.arch").equals("arm")) {
hostLibrary = new File(libraryFolder, "linux-armv6hf");
if (hostLibrary.exists()) {
nativeLibraryFolder = hostLibrary;
}
}
// save that folder for later use
nativeLibraryPath = nativeLibraryFolder.getAbsolutePath();
// for each individual platform that this library supports, figure out what's around
for (int i = 1; i < platformNames.length; i++) {
String platformName = platformNames[i];
String platformName32 = platformName + "32";
String platformName64 = platformName + "64";
String platformNameArmv6hh = platformName + "-armv6hf";
// First check for things like 'application.macosx=' or 'application.windows32' in the export.txt file.
// These will override anything in the platform-specific subfolders.
String platformAll = exportTable.get("application." + platformName);
String[] platformList = platformAll == null ? null : PApplet.splitTokens(platformAll, ", ");
String platform32 = exportTable.get("application." + platformName + "32");
String[] platformList32 = platform32 == null ? null : PApplet.splitTokens(platform32, ", ");
String platform64 = exportTable.get("application." + platformName + "64");
String[] platformList64 = platform64 == null ? null : PApplet.splitTokens(platform64, ", ");
String platformArmv6hf = exportTable.get("application." + platformName + "-armv6hf");
String[] platformListArmv6hf = platformArmv6hf == null ? null : PApplet.splitTokens(platformArmv6hf, ", ");
// If nothing specified in the export.txt entries, look for the platform-specific folders.
if (platformAll == null) {
platformList = listPlatformEntries(libraryFolder, platformName, baseList);
}
if (platform32 == null) {
platformList32 = listPlatformEntries(libraryFolder, platformName32, baseList);
}
if (platform64 == null) {
platformList64 = listPlatformEntries(libraryFolder, platformName64, baseList);
}
if (platformListArmv6hf == null) {
platformListArmv6hf = listPlatformEntries(libraryFolder, platformNameArmv6hh, baseList);
}
if (platformList32 != null || platformList64 != null || platformListArmv6hf != null) {
multipleArch[i] = true;
}
// then use the baseList (root of the library folder) as the default.
if (platformList == null && platformList32 == null && platformList64 == null && platformListArmv6hf == null) {
exportList.put(platformName, baseList);
} else {
// (also concatenate the list of files in the root folder as well
if (platformList != null) {
exportList.put(platformName, platformList);
}
if (platformList32 != null) {
exportList.put(platformName32, platformList32);
}
if (platformList64 != null) {
exportList.put(platformName64, platformList64);
}
if (platformListArmv6hf != null) {
exportList.put(platformNameArmv6hh, platformListArmv6hf);
}
}
}
// for (String p : exportList.keySet()) {
// System.out.println(p + " -> ");
// PApplet.println(exportList.get(p));
// }
// get the path for all .jar files in this code folder
packageList = Util.packageListFromClassPath(getClassPath());
}
Aggregations