1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
/* Copyright (c) 2016 Matthias Bläsing, All Rights Reserved
*
* The contents of this file is dual-licensed under 2
* alternative Open Source/Free licenses: LGPL 2.1 or later and
* Apache License 2.0. (starting with JNA version 4.0.0).
*
* You can freely decide which license you want to apply to
* the project.
*
* You may obtain a copy of the LGPL License at:
*
* http://www.gnu.org/licenses/licenses.html
*
* A copy is also included in the downloadable source code package
* containing JNA, in file "LGPL2.1".
*
* You may obtain a copy of the Apache License at:
*
* http://www.apache.org/licenses/
*
* A copy is also included in the downloadable source code package
* containing JNA, in file "AL2.0".
*/
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.
*/
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.isArmHardFloat();
} catch (IOException ex) {
result = false;
}
project.setNewProperty(targetProperty, Boolean.toString(result));
}
}
|