package com.mobilesorcery.sdk.builder.android;
import java.io.File;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.TreeMap;
import org.eclipse.core.runtime.IPath;
import com.mobilesorcery.sdk.core.AbstractTool;
import com.mobilesorcery.sdk.core.Version;
public class NdkToolchain {
private IPath root;
private String arch;
private Version version;
public NdkToolchain(IPath root, String arch, Version version) {
this.root = root;
this.arch = arch;
this.version = version;
}
public boolean isCompatible() {
// We only support arm
return arch.contains("arm");
}
public Version getVersion() {
return version;
}
public String getPreferredPrebuilt() {
List<String> prebuilts = getPrebuilts();
TreeMap<Integer, String> prebuiltScores = new TreeMap<Integer, String>();
for (String prebuilt : prebuilts) {
int prebuiltScore = 0;
if (prebuilts.contains("win") && AbstractTool.isWindows()) {
prebuiltScore += 1;
}
if (prebuilts.contains("darwin") && AbstractTool.isMac()) {
prebuiltScore += 1;
}
if (!prebuilt.contains("_64")) {
prebuiltScore += 1;
}
prebuiltScores.put(prebuiltScore, prebuilt);
}
return prebuiltScores.isEmpty() ? null : prebuiltScores.lastEntry().getValue();
}
public List<String> getPrebuilts() {
File prebuiltRoot = root.append("prebuilt").toFile();
if (!prebuiltRoot.isDirectory()) {
return Collections.EMPTY_LIST;
}
return Arrays.asList(prebuiltRoot.list());
}
public IPath getTool(String prebuilt, String tool) {
if (prebuilt == null) {
prebuilt = getPreferredPrebuilt();
}
if (prebuilt == null) {
return null;
}
return root.append("prebuilt").append(prebuilt).append("bin").append(arch + "-" + tool);
}
}