From f7c992263610c9246a2c81b4e015b9c7f216fd50 Mon Sep 17 00:00:00 2001 From: Liam Miller-Cushon Date: Fri, 8 May 2015 18:18:43 +0000 Subject: Add a --javac_extdir flag to enable configuring the javac -extdirs flag The -extdirs flag sets a search path to the directory containing the JDK's extension classes, and should always be set explicitly when cross-compiling. If it is unset, the ext directory of the host JDK will be used instead. javac requires that -extdirs be a list of directories. The blaze --javac_extdir flag takes the label of a filegroup with the 'path' attribute set, and passes the directory path through to JavaBuilder. RELNOTES: N/A -- MOS_MIGRATED_REVID=93147656 --- .../devtools/build/buildjar/CommonJavaLibraryProcessor.java | 5 +++++ .../google/devtools/build/buildjar/JavaLibraryBuildRequest.java | 7 +++++++ .../java/com/google/devtools/build/buildjar/OptionsParser.java | 9 +++++++++ 3 files changed, 21 insertions(+) (limited to 'src/java_tools/buildjar/java/com') diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/CommonJavaLibraryProcessor.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/CommonJavaLibraryProcessor.java index dae8d9715b..38d16dfd10 100644 --- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/CommonJavaLibraryProcessor.java +++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/CommonJavaLibraryProcessor.java @@ -60,6 +60,11 @@ public abstract class CommonJavaLibraryProcessor { args.add("-sourcepath"); args.add(":"); + if (build.getExtdir() != null) { + args.add("-extdirs"); + args.add(build.getExtdir()); + } + return args; } } diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/JavaLibraryBuildRequest.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/JavaLibraryBuildRequest.java index c243948fc0..64ca443bab 100644 --- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/JavaLibraryBuildRequest.java +++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/JavaLibraryBuildRequest.java @@ -48,6 +48,8 @@ public final class JavaLibraryBuildRequest { private final String classPath; + private final String extdir; + private final String processorPath; private final List processorNames; @@ -145,6 +147,7 @@ public final class JavaLibraryBuildRequest { this.resourceJars = ImmutableList.copyOf(optionsParser.getResourceJars()); this.rootResourceFiles = ImmutableList.copyOf(optionsParser.getRootResourceFiles()); this.classPath = optionsParser.getClassPath(); + this.extdir = optionsParser.getExtdir(); this.processorPath = optionsParser.getProcessorPath(); this.processorNames = optionsParser.getProcessorNames(); // Since the default behavior of this tool with no arguments is "rm -fr ", let's not @@ -215,6 +218,10 @@ public final class JavaLibraryBuildRequest { return classPath; } + public String getExtdir() { + return extdir; + } + public String getProcessorPath() { return processorPath; } diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/OptionsParser.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/OptionsParser.java index d2917dbfa4..99962bcca3 100644 --- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/OptionsParser.java +++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/OptionsParser.java @@ -61,6 +61,8 @@ public final class OptionsParser { private String classPath; + private String extdir; + private String processorPath = ""; private final List processorNames = new ArrayList<>(); @@ -163,6 +165,9 @@ public final class OptionsParser { case "--processors": collectProcessorArguments(processorNames, argQueue, "-"); break; + case "--extdir": + extdir = getArgument(argQueue, arg); + break; case "--output": outputJar = getArgument(argQueue, arg); break; @@ -358,6 +363,10 @@ public final class OptionsParser { return classPath; } + public String getExtdir() { + return extdir; + } + public String getProcessorPath() { return processorPath; } -- cgit v1.2.3