< prev index next >

test/compiler/aot/AotCompiler.java

Print this page
rev 13327 : [mq]: 8183337-2

*** 21,42 **** --- 21,48 ---- * questions. */ package compiler.aot; + import jdk.test.lib.Platform; + import jdk.test.lib.artifacts.Artifact; + import jdk.test.lib.artifacts.ArtifactResolver; import jdk.test.lib.process.OutputAnalyzer; import java.io.File; + import java.io.FileNotFoundException; import java.io.IOException; + import java.lang.annotation.Annotation; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import jdk.test.lib.JDKToolLauncher; import jdk.test.lib.Utils; + import jdk.test.lib.process.ProcessTools; /** * A simple class calling AOT compiler over requested items */ public class AotCompiler {
*** 100,109 **** --- 106,120 ---- args.add("--compile-commands"); args.add(file.toString()); } args.add("--class-name"); args.add(item); + String linker = resolveLinker(); + if (linker != null) { + args.add("--linker-path"); + args.add(linker); + } return launchJaotc(args, extraopts); } private static OutputAnalyzer launchJaotc(List<String> args, List<String> extraVmOpts) { JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jaotc");
*** 117,133 **** } for (String arg : args) { launcher.addToolArg(arg); } try { ! return new OutputAnalyzer(new ProcessBuilder(launcher.getCommand()).inheritIO().start()); ! } catch (IOException e) { throw new Error("Can't start test process: " + e, e); } } public static void printUsage() { System.err.println("Usage: " + AotCompiler.class.getName() + " -class <class> -libname <.so name>" + " [-compile <compileItems>]* [-extraopt <java option>]*"); } } --- 128,282 ---- } for (String arg : args) { launcher.addToolArg(arg); } try { ! return ProcessTools.executeCommand(new ProcessBuilder(launcher.getCommand()).redirectErrorStream(true)); ! } catch (Throwable e) { throw new Error("Can't start test process: " + e, e); } } public static void printUsage() { System.err.println("Usage: " + AotCompiler.class.getName() + " -class <class> -libname <.so name>" + " [-compile <compileItems>]* [-extraopt <java option>]*"); } + + public static String resolveLinker() { + Path linker = null; + // 1st, check if PATH has ld + for (String path : System.getenv("PATH").split(File.pathSeparator)) { + if (Files.exists(Paths.get(path).resolve("ld"))) { + // there is ld in PATH, jaotc is supposed to find it by its own + return null; + } + } + // there is no ld in PATH, will use ld from devkit + // artifacts are got from common/conf/jib-profiles.js + try { + if (Platform.isWindows()) { + if (Platform.isX64()) { + @Artifact(organization = "jpg.infra.builddeps", + name = "devkit-windows_x64", + revision = "VS2013SP4+1.0", + extension = "tar.gz") + class DevkitWindowsX64 { } + String artifactName = "jpg.infra.builddeps." + + "devkit-windows_x64-" + + "VS2013SP4+1.0"; + Path devkit = ArtifactResolver.resolve(DevkitWindowsX64.class) + .get(artifactName); + linker = devkit.resolve("VC") + .resolve("bin") + .resolve("amd64") + .resolve("link.exe"); + } + } else if (Platform.isOSX()) { + @Artifact(organization = "jpg.infra.builddeps", + name = "devkit-macosx_x64", + revision = "Xcode6.3-MacOSX10.9+1.0", + extension = "tar.gz") + class DevkitMacosx { } + String artifactName = "jpg.infra.builddeps." + + "devkit-macosx_x64-" + + "Xcode6.3-MacOSX10.9+1.0"; + Path devkit = ArtifactResolver.resolve(DevkitMacosx.class) + .get(artifactName); + linker = devkit.resolve("Xcode.app") + .resolve("Contents") + .resolve("Developer") + .resolve("Toolchains") + .resolve("XcodeDefault.xctoolchain") + .resolve("usr") + .resolve("bin") + .resolve("ld"); + } else if (Platform.isSolaris()) { + if (Platform.isSparc()) { + @Artifact(organization = "jpg.infra.builddeps", + name = "devkit-solaris_sparcv9", + revision = "SS12u4-Solaris11u1+1.0", + extension = "tar.gz") + class DevkitSolarisSparc { } + + String artifactName = "jpg.infra.builddeps." + + "devkit-solaris_sparcv9-" + + "SS12u4-Solaris11u1+1.0"; + Path devkit = ArtifactResolver.resolve(DevkitSolarisSparc.class) + .get(artifactName); + linker = devkit.resolve("SS12u4-Solaris11u1") + .resolve("gnu") + .resolve("bin") + .resolve("ld"); + } else if (Platform.isX64()) { + @Artifact(organization = "jpg.infra.builddeps", + name = "devkit-solaris_x64", + revision = "SS12u4-Solaris11u1+1.0", + extension = "tar.gz") + class DevkitSolarisX64 { } + + String artifactName = "jpg.infra.builddeps." + + "devkit-solaris_x64-" + + "SS12u4-Solaris11u1+1.0"; + Path devkit = ArtifactResolver.resolve(DevkitSolarisX64.class) + .get(artifactName); + linker = devkit.resolve("SS12u4-Solaris11u1") + .resolve("bin") + .resolve("amd64") + .resolve("ld"); + } + } else if (Platform.isLinux()) { + if (Platform.isAArch64()) { + @Artifact(organization = "jpg.infra.builddeps", + name = "devkit-linux_aarch64", + revision = "gcc-linaro-aarch64-linux-gnu-4.8-2013.11_linux+1.0", + extension = "tar.gz") + class DevkitLinuxAArch64 { } + + String artifactName = "jpg.infra.builddeps." + + "devkit-linux_aarch64-" + + "gcc-linaro-aarch64-linux-gnu-4.8-2013.11_linux+1.0"; + Path devkit = ArtifactResolver.resolve(DevkitLinuxAArch64.class) + .get(artifactName); + linker = devkit.resolve("aarch64-linux-gnu") + .resolve("bin") + .resolve("ld"); + } else if (Platform.isARM()) { + @Artifact(organization = "jpg.infra.builddeps", + name = "devkit-linux_arm", + revision = "gcc-linaro-arm-linux-gnueabihf-raspbian-2012.09-20120921_linux+1.0", + extension = "tar.gz") + class DevkitLinuxARM { } + + String artifactName = "jpg.infra.builddeps." + + "devkit-linux_arm-" + + "gcc-linaro-arm-linux-gnueabihf-raspbian-2012.09-20120921_linux+1.0"; + Path devkit = ArtifactResolver.resolve(DevkitLinuxARM.class) + .get(artifactName); + linker = devkit.resolve("arm-linux-gnueabihf") + .resolve("bin") + .resolve("ld"); + } else if (Platform.isX64()) { + @Artifact(organization = "jpg.infra.builddeps", + name = "devkit-linux_x64", + revision = "gcc4.9.2-OEL6.4+1.1", + extension = "tar.gz") + class DevkitLinuxX64 { } + + String artifactName = "jpg.infra.builddeps." + + "devkit-linux_x64-" + + "gcc4.9.2-OEL6.4+1.1"; + Path devkit = ArtifactResolver.resolve(DevkitLinuxX64.class) + .get(artifactName); + linker = devkit.resolve("bin") + .resolve("ld"); + } + } + } catch (FileNotFoundException e) { + throw new Error("artifact resolution error: " + e, e); + } + if (linker != null) { + return linker.toAbsolutePath().toString(); + } + return null; + } }
< prev index next >