< prev index next >

test/hotspot/jtreg/compiler/aot/AotCompiler.java

Print this page
rev 59103 : imported patch hotspot


 131             for (String vmOpt : extraVmOpts) {
 132                 launcher.addVMArg(vmOpt);
 133             }
 134         }
 135         for (String arg : args) {
 136             launcher.addToolArg(arg);
 137         }
 138         try {
 139             return ProcessTools.executeCommand(new ProcessBuilder(launcher.getCommand()).redirectErrorStream(true));
 140         } catch (Throwable e) {
 141             throw new Error("Can't start test process: " + e, e);
 142         }
 143     }
 144 
 145     public static void printUsage() {
 146         System.err.println("Usage: " + AotCompiler.class.getName()
 147                 + " -class <class> -libname <.so name>"
 148                 + " [-compile <compileItems>]* [-extraopt <java option>]*");
 149     }
 150 
 151     // runs ld -v (or ld -V on solaris) and check its exit code
 152     private static boolean checkLd(Path bin) {
 153         try {
 154             return 0 == ProcessTools.executeCommand(bin.toString(),
 155                                                     Platform.isSolaris() ? "-V" : "-v")
 156                                     .getExitValue();
 157         } catch (Throwable t) {
 158             // any errors mean ld doesn't work
 159             return false;
 160         }
 161     }
 162 
 163     public static String resolveLinker() {
 164         Path linker = null;
 165         // if non windows, 1st, check if PATH has ld
 166         if (!Platform.isWindows()) {
 167             String bin = "ld";
 168             for (String path : System.getenv("PATH").split(File.pathSeparator)) {
 169                 Path ld = Paths.get(path).resolve("ld");
 170                 if (Files.exists(ld)) {
 171                     // there is ld in PATH
 172                     if (checkLd(ld)) {
 173                         System.out.println("found working linker: " + ld);
 174                         // ld works, jaotc is supposed to find and use it
 175                         return null;


 203                 }
 204             } else if (Platform.isOSX()) {
 205                 @Artifact(organization =  "jpg.infra.builddeps",
 206                         name = "devkit-macosx_x64",
 207                         revision = "Xcode6.3-MacOSX10.9+1.0",
 208                         extension = "tar.gz")
 209                 class DevkitMacosx { }
 210                 String artifactName = "jpg.infra.builddeps."
 211                         + "devkit-macosx_x64-"
 212                         + "Xcode6.3-MacOSX10.9+1.0";
 213                 Path devkit = ArtifactResolver.resolve(DevkitMacosx.class)
 214                                               .get(artifactName);
 215                 linker = devkit.resolve("Xcode.app")
 216                                .resolve("Contents")
 217                                .resolve("Developer")
 218                                .resolve("Toolchains")
 219                                .resolve("XcodeDefault.xctoolchain")
 220                                .resolve("usr")
 221                                .resolve("bin")
 222                                .resolve("ld");
 223             } else if (Platform.isSolaris()) {
 224                 if (Platform.isSparc()) {
 225                     @Artifact(organization =  "jpg.infra.builddeps",
 226                             name = "devkit-solaris_sparcv9",
 227                             revision = "SS12u4-Solaris11u1+1.1",
 228                             extension = "tar.gz")
 229                     class DevkitSolarisSparc { }
 230 
 231                     String artifactName = "jpg.infra.builddeps."
 232                             + "devkit-solaris_sparcv9-"
 233                             + "SS12u4-Solaris11u1+1.1";
 234                     Path devkit = ArtifactResolver.resolve(DevkitSolarisSparc.class)
 235                                                   .get(artifactName);
 236                     linker = devkit.resolve("SS12u4-Solaris11u1")
 237                                    .resolve("gnu")
 238                                    .resolve("bin")
 239                                    .resolve("ld");
 240                 } else if (Platform.isX64()) {
 241                     @Artifact(organization =  "jpg.infra.builddeps",
 242                             name = "devkit-solaris_x64",
 243                             revision = "SS12u4-Solaris11u1+1.0",
 244                             extension = "tar.gz")
 245                     class DevkitSolarisX64 { }
 246 
 247                     String artifactName = "jpg.infra.builddeps."
 248                             + "devkit-solaris_x64-"
 249                             + "SS12u4-Solaris11u1+1.0";
 250                     Path devkit = ArtifactResolver.resolve(DevkitSolarisX64.class)
 251                                                   .get(artifactName);
 252                     linker = devkit.resolve("SS12u4-Solaris11u1")
 253                                    .resolve("bin")
 254                                    .resolve("amd64")
 255                                    .resolve("ld");
 256                 }
 257             } else if (Platform.isLinux()) {
 258                 if (Platform.isAArch64()) {
 259                     @Artifact(organization = "jpg.infra.builddeps",
 260                             name = "devkit-linux_aarch64",
 261                             revision = "gcc-linaro-aarch64-linux-gnu-4.8-2013.11_linux+1.0",
 262                             extension = "tar.gz")
 263                     class DevkitLinuxAArch64 { }
 264 
 265                     String artifactName = "jpg.infra.builddeps."
 266                             + "devkit-linux_aarch64-"
 267                             + "gcc-linaro-aarch64-linux-gnu-4.8-2013.11_linux+1.0";
 268                     Path devkit = ArtifactResolver.resolve(DevkitLinuxAArch64.class)
 269                                                   .get(artifactName);
 270                     linker = devkit.resolve("aarch64-linux-gnu")
 271                                    .resolve("bin")
 272                                    .resolve("ld");
 273                 } else if (Platform.isARM()) {
 274                     @Artifact(organization = "jpg.infra.builddeps",
 275                             name = "devkit-linux_arm",
 276                             revision = "gcc-linaro-arm-linux-gnueabihf-raspbian-2012.09-20120921_linux+1.0",




 131             for (String vmOpt : extraVmOpts) {
 132                 launcher.addVMArg(vmOpt);
 133             }
 134         }
 135         for (String arg : args) {
 136             launcher.addToolArg(arg);
 137         }
 138         try {
 139             return ProcessTools.executeCommand(new ProcessBuilder(launcher.getCommand()).redirectErrorStream(true));
 140         } catch (Throwable e) {
 141             throw new Error("Can't start test process: " + e, e);
 142         }
 143     }
 144 
 145     public static void printUsage() {
 146         System.err.println("Usage: " + AotCompiler.class.getName()
 147                 + " -class <class> -libname <.so name>"
 148                 + " [-compile <compileItems>]* [-extraopt <java option>]*");
 149     }
 150 
 151     // runs ld -v and check its exit code
 152     private static boolean checkLd(Path bin) {
 153         try {
 154             return 0 == ProcessTools.executeCommand(bin.toString(), "-v")

 155                                     .getExitValue();
 156         } catch (Throwable t) {
 157             // any errors mean ld doesn't work
 158             return false;
 159         }
 160     }
 161 
 162     public static String resolveLinker() {
 163         Path linker = null;
 164         // if non windows, 1st, check if PATH has ld
 165         if (!Platform.isWindows()) {
 166             String bin = "ld";
 167             for (String path : System.getenv("PATH").split(File.pathSeparator)) {
 168                 Path ld = Paths.get(path).resolve("ld");
 169                 if (Files.exists(ld)) {
 170                     // there is ld in PATH
 171                     if (checkLd(ld)) {
 172                         System.out.println("found working linker: " + ld);
 173                         // ld works, jaotc is supposed to find and use it
 174                         return null;


 202                 }
 203             } else if (Platform.isOSX()) {
 204                 @Artifact(organization =  "jpg.infra.builddeps",
 205                         name = "devkit-macosx_x64",
 206                         revision = "Xcode6.3-MacOSX10.9+1.0",
 207                         extension = "tar.gz")
 208                 class DevkitMacosx { }
 209                 String artifactName = "jpg.infra.builddeps."
 210                         + "devkit-macosx_x64-"
 211                         + "Xcode6.3-MacOSX10.9+1.0";
 212                 Path devkit = ArtifactResolver.resolve(DevkitMacosx.class)
 213                                               .get(artifactName);
 214                 linker = devkit.resolve("Xcode.app")
 215                                .resolve("Contents")
 216                                .resolve("Developer")
 217                                .resolve("Toolchains")
 218                                .resolve("XcodeDefault.xctoolchain")
 219                                .resolve("usr")
 220                                .resolve("bin")
 221                                .resolve("ld");


































 222             } else if (Platform.isLinux()) {
 223                 if (Platform.isAArch64()) {
 224                     @Artifact(organization = "jpg.infra.builddeps",
 225                             name = "devkit-linux_aarch64",
 226                             revision = "gcc-linaro-aarch64-linux-gnu-4.8-2013.11_linux+1.0",
 227                             extension = "tar.gz")
 228                     class DevkitLinuxAArch64 { }
 229 
 230                     String artifactName = "jpg.infra.builddeps."
 231                             + "devkit-linux_aarch64-"
 232                             + "gcc-linaro-aarch64-linux-gnu-4.8-2013.11_linux+1.0";
 233                     Path devkit = ArtifactResolver.resolve(DevkitLinuxAArch64.class)
 234                                                   .get(artifactName);
 235                     linker = devkit.resolve("aarch64-linux-gnu")
 236                                    .resolve("bin")
 237                                    .resolve("ld");
 238                 } else if (Platform.isARM()) {
 239                     @Artifact(organization = "jpg.infra.builddeps",
 240                             name = "devkit-linux_arm",
 241                             revision = "gcc-linaro-arm-linux-gnueabihf-raspbian-2012.09-20120921_linux+1.0",


< prev index next >