package com.sun.jna;
import java.io.File;
import java.io.IOException;
import org.apache.tools.ant.Project;
/**
* Ant task to expose the arm soft-/hardfloat detection routines of the JNA core
* for the build script.
*
* <p>The build script is expected to build a minimal set of classes that are
* required to execute this. At the time of writing these are:</p>
*
* <ul>
* <li>com.sun.jna.ELFAnalyser</li>
* </ul>
*/
public class BuildArmSoftFloatDetector {
private String targetProperty;
private Project project;
public void setProject(Project proj) {
project = proj;
}
/**
* targetProperty receives the name of the property, that should take the
* new property
*
* @param targetProperty
*/
public void setTargetProperty(String targetProperty) {
this.targetProperty = targetProperty;
}
public void execute() throws IOException {
boolean result = false;
// On linux /proc/self/exe is a symblink to the currently executing
// binary (the JVM)
File self = new File("/proc/self/exe");
try {
// The self.getCanonicalPath() resolves the symblink to the backing
// realfile and passes that to the detection routines
ELFAnalyser ahfd = ELFAnalyser.analyse(self.getCanonicalPath());
result = ahfd.isArmSoftFloat();
} catch (IOException ex) {
result = false;
}
project.setNewProperty(targetProperty, Boolean.toString(result));
}
}