summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormikaelpeltier <mikaelpeltier@google.com>2014-12-15 17:55:06 +0100
committermikaelpeltier <mikaelpeltier@google.com>2014-12-17 13:37:00 +0100
commita78d3e0da09e6d7206ebd33b31407d88f2008209 (patch)
treeab4701887d5a54c387d884d95a6f8576d0c1e0dd
parente1606650fd5ffff22f1a8daed77c6539f28755ce (diff)
downloadtoolchain_jack-a78d3e0da09e6d7206ebd33b31407d88f2008209.tar.gz
toolchain_jack-a78d3e0da09e6d7206ebd33b31407d88f2008209.tar.bz2
toolchain_jack-a78d3e0da09e6d7206ebd33b31407d88f2008209.zip
Add property jack.library.jayce
Change-Id: I0538f4adf0b92ae84afb981b7666cb2f78db7f71
-rw-r--r--jack/src/com/android/jack/Jack.java33
-rw-r--r--jack/src/com/android/jack/Options.java14
-rw-r--r--jack/src/com/android/jack/backend/jayce/JayceInLibraryProduct.java (renamed from jack/src/com/android/jack/backend/jayce/JayceFormatProduct.java)6
-rw-r--r--jack/src/com/android/jack/backend/jayce/JayceInLibraryWriter.java (renamed from jack/src/com/android/jack/backend/jayce/JayceSingleTypeWriter.java)13
-rw-r--r--jack/src/com/android/jack/scheduling/feature/JayceFileOutput.java29
-rw-r--r--jack/tests/com/android/jack/TestTools.java4
6 files changed, 31 insertions, 68 deletions
diff --git a/jack/src/com/android/jack/Jack.java b/jack/src/com/android/jack/Jack.java
index 9f3900da..d8de3b60 100644
--- a/jack/src/com/android/jack/Jack.java
+++ b/jack/src/com/android/jack/Jack.java
@@ -55,8 +55,8 @@ import com.android.jack.backend.dex.multidex.legacy.RuntimeAnnotationFinder;
import com.android.jack.backend.dex.rop.CodeItemBuilder;
import com.android.jack.backend.jayce.ImportConflictException;
import com.android.jack.backend.jayce.JayceFileImporter;
-import com.android.jack.backend.jayce.JayceFormatProduct;
-import com.android.jack.backend.jayce.JayceSingleTypeWriter;
+import com.android.jack.backend.jayce.JayceInLibraryProduct;
+import com.android.jack.backend.jayce.JayceInLibraryWriter;
import com.android.jack.cfg.CfgBuilder;
import com.android.jack.cfg.CfgMarkerRemover;
import com.android.jack.config.id.JavaVersionPropertyId.JavaVersion;
@@ -121,7 +121,6 @@ import com.android.jack.scheduling.adapter.JMethodAdapter;
import com.android.jack.scheduling.adapter.JPackageAdapter;
import com.android.jack.scheduling.feature.CompiledTypeStats;
import com.android.jack.scheduling.feature.DxLegacy;
-import com.android.jack.scheduling.feature.JayceFileOutput;
import com.android.jack.scheduling.feature.Resources;
import com.android.jack.scheduling.feature.SourceVersion7;
import com.android.jack.shrob.obfuscation.Mapping;
@@ -566,19 +565,9 @@ public abstract class Jack {
request.addFeature(MultiDexLegacy.class);
}
- if (config.get(Options.GENERATE_JACK_LIBRARY).booleanValue()) {
- request.addFeature(JayceFileOutput.class);
- }
-
request.addInitialTagsOrMarkers(getJavaSourceInitialTagSet());
request.addInitialTagsOrMarkers(getJackFormatInitialTagSet());
- if (options.ecjArguments != null) {
- if (config.get(Options.GENERATE_JACK_LIBRARY).booleanValue()) {
- request.addProduction(JayceFormatProduct.class);
- }
- }
-
if (ThreadConfig.get(Options.GENERATE_DEX_IN_LIBRARY).booleanValue()) {
request.addProduction(DexInLibraryProduct.class);
}
@@ -588,8 +577,8 @@ public abstract class Jack {
session.addGeneratedFileType(FileType.DEX);
}
- if (options.libraryOutDir != null || options.libraryOutZip != null) {
- request.addProduction(JayceFormatProduct.class);
+ if (ThreadConfig.get(Options.GENERATE_JAYCE_IN_LIBRARY).booleanValue()) {
+ request.addProduction(JayceInLibraryProduct.class);
}
ProductionSet targetProduction = request.getTargetProductions();
@@ -612,12 +601,12 @@ public abstract class Jack {
if (targetProduction.contains(DexFileProduct.class)) {
planBuilder.append(ResourceWriter.class);
}
- if (targetProduction.contains(JayceFormatProduct.class)) {
+ if (targetProduction.contains(JayceInLibraryProduct.class)) {
planBuilder.append(LibraryResourceWriter.class);
}
}
- if (targetProduction.contains(JayceFormatProduct.class)) {
+ if (targetProduction.contains(JayceInLibraryProduct.class)) {
planBuilder.append(LibraryMetaWriter.class);
}
@@ -635,13 +624,13 @@ public abstract class Jack {
// ... but use a manual one if not supported
plan = planBuilder.getPlan();
- assert !targetProduction.contains(JayceFormatProduct.class)
+ assert !targetProduction.contains(JayceInLibraryProduct.class)
|| targetProduction.contains(DexFileProduct.class)
|| (plan.computeFinalTagsOrMarkers(
request.getInitialTags()).contains(JackFormatIr.class)
&& !targetProduction.contains(DexInLibraryProduct.class))
|| (targetProduction.contains(DexInLibraryProduct.class)
- && targetProduction.contains(JayceFormatProduct.class));
+ && targetProduction.contains(JayceInLibraryProduct.class));
}
PlanPrinterFactory.getPlanPrinter().printPlan(plan);
@@ -1201,8 +1190,8 @@ public abstract class Jack {
{
SubPlanBuilder<JDefinedClassOrInterface> typePlan =
planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
- if (features.contains(JayceFileOutput.class)) {
- typePlan.append(JayceSingleTypeWriter.class);
+ if (productions.contains(JayceInLibraryProduct.class)) {
+ typePlan.append(JayceInLibraryWriter.class);
typePlan.append(TypeDependenciesCollector.class);
typePlan.append(FileDependenciesCollector.class);
}
@@ -1256,7 +1245,7 @@ public abstract class Jack {
}
}
- if (features.contains(JayceFileOutput.class)) {
+ if (productions.contains(JayceInLibraryProduct.class)) {
planBuilder.append(TypeDependenciesWriter.class);
planBuilder.append(FileDependenciesWriter.class);
}
diff --git a/jack/src/com/android/jack/Options.java b/jack/src/com/android/jack/Options.java
index ea165dca..fbe90527 100644
--- a/jack/src/com/android/jack/Options.java
+++ b/jack/src/com/android/jack/Options.java
@@ -116,8 +116,15 @@ public class Options {
.addDefaultValue(Boolean.TRUE).withCategory(Private.get());
@Nonnull
- public static final BooleanPropertyId GENERATE_JACK_LIBRARY = BooleanPropertyId.create(
- "jack.library", "Generate jack library").addDefaultValue(Boolean.FALSE);
+ public static final BooleanPropertyId GENERATE_JAYCE_IN_LIBRARY = BooleanPropertyId.create(
+ "jack.library.jayce", "Generate Jayce files in library")
+ .addDefaultValue(Boolean.FALSE).withCategory(Private.get());
+
+ @Nonnull
+ public static final BooleanPropertyId GENERATE_JACK_LIBRARY = BooleanPropertyId
+ .create("jack.library", "Generate jack library")
+ .addDefaultValue(Boolean.FALSE).requiredIf(GENERATE_DEX_IN_LIBRARY.getValue().isTrue()
+ .or(GENERATE_JAYCE_IN_LIBRARY.getValue().isTrue()));
@Nonnull
@@ -615,11 +622,12 @@ public class Options {
configBuilder.setString(LIBRARY_OUTPUT_ZIP, libraryOutZip.getAbsolutePath());
configBuilder.set(LIBRARY_OUTPUT_CONTAINER_TYPE, Container.ZIP);
configBuilder.set(GENERATE_JACK_LIBRARY, true);
+ configBuilder.set(GENERATE_JAYCE_IN_LIBRARY, true);
} else if (libraryOutDir != null) {
configBuilder.setString(LIBRARY_OUTPUT_DIR, libraryOutDir.getAbsolutePath());
configBuilder.set(LIBRARY_OUTPUT_CONTAINER_TYPE, Container.DIR);
configBuilder.set(GENERATE_JACK_LIBRARY, true);
- configBuilder.set(GENERATE_DEX_IN_LIBRARY, true);
+ configBuilder.set(GENERATE_JAYCE_IN_LIBRARY, true);
configBuilder.setString(Options.INTERNAL_LIBRARY_OUTPUT_DIR, libraryOutDir.getPath());
}
diff --git a/jack/src/com/android/jack/backend/jayce/JayceFormatProduct.java b/jack/src/com/android/jack/backend/jayce/JayceInLibraryProduct.java
index f667dd14..72c34ef5 100644
--- a/jack/src/com/android/jack/backend/jayce/JayceFormatProduct.java
+++ b/jack/src/com/android/jack/backend/jayce/JayceInLibraryProduct.java
@@ -20,8 +20,8 @@ import com.android.sched.item.Description;
import com.android.sched.item.Production;
/**
- * Represents the production of Jayce format.
+ * {@link Production} of Jayce files in a library.
*/
-@Description("Jayce format production")
-public class JayceFormatProduct implements Production {
+@Description("Production of Jayce files in a library")
+public class JayceInLibraryProduct implements Production {
}
diff --git a/jack/src/com/android/jack/backend/jayce/JayceSingleTypeWriter.java b/jack/src/com/android/jack/backend/jayce/JayceInLibraryWriter.java
index b110bbd2..d1aa6a32 100644
--- a/jack/src/com/android/jack/backend/jayce/JayceSingleTypeWriter.java
+++ b/jack/src/com/android/jack/backend/jayce/JayceInLibraryWriter.java
@@ -25,14 +25,11 @@ import com.android.jack.jayce.JayceWriterFactory;
import com.android.jack.library.FileType;
import com.android.jack.library.LibraryIOException;
import com.android.jack.library.OutputJackLibrary;
-import com.android.jack.scheduling.feature.JayceFileOutput;
import com.android.sched.item.Description;
-import com.android.sched.item.Name;
import com.android.sched.item.Synchronized;
import com.android.sched.schedulable.Constraint;
import com.android.sched.schedulable.Produce;
import com.android.sched.schedulable.RunnableSchedulable;
-import com.android.sched.schedulable.Support;
import com.android.sched.vfs.OutputVFile;
import com.android.sched.vfs.VPath;
@@ -43,14 +40,12 @@ import java.io.OutputStream;
import javax.annotation.Nonnull;
/**
- * Writer of Jayce files in a folder organized according to package names.
+ * Writer of Jayce files in a library organized according to package names.
*/
-@Description("Writer of Jayce files in a folder organized according to package names")
-@Name("JayceSingleTypeWriter")
+@Description("Writer of Jayce files in a library organized according to package names")
@Constraint(need = {JackFormatIr.class}, no = {NonJackFormatIr.class})
-@Produce(JayceFormatProduct.class)
-@Support(JayceFileOutput.class)
-public class JayceSingleTypeWriter implements RunnableSchedulable<JDefinedClassOrInterface> {
+@Produce(JayceInLibraryProduct.class)
+public class JayceInLibraryWriter implements RunnableSchedulable<JDefinedClassOrInterface> {
@Nonnull
private final OutputJackLibrary outputJackLibrary;
diff --git a/jack/src/com/android/jack/scheduling/feature/JayceFileOutput.java b/jack/src/com/android/jack/scheduling/feature/JayceFileOutput.java
deleted file mode 100644
index 8a73d730..00000000
--- a/jack/src/com/android/jack/scheduling/feature/JayceFileOutput.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.jack.scheduling.feature;
-
-import com.android.sched.item.Description;
-import com.android.sched.item.Feature;
-import com.android.sched.item.Name;
-
-/**
- * Jayce file output
- */
-@Description("Jayce file output")
-@Name("JayceFileOutput")
-public class JayceFileOutput implements Feature {
-}
diff --git a/jack/tests/com/android/jack/TestTools.java b/jack/tests/com/android/jack/TestTools.java
index 3987b819..75df6110 100644
--- a/jack/tests/com/android/jack/TestTools.java
+++ b/jack/tests/com/android/jack/TestTools.java
@@ -20,7 +20,7 @@ import com.android.dx.command.dexer.Main.Arguments;
import com.android.jack.Options.VerbosityLevel;
import com.android.jack.backend.dex.DexFileWriter;
import com.android.jack.backend.dex.DexInLibraryProduct;
-import com.android.jack.backend.jayce.JayceFormatProduct;
+import com.android.jack.backend.jayce.JayceInLibraryProduct;
import com.android.jack.ir.ast.JDefinedClassOrInterface;
import com.android.jack.ir.ast.JMethod;
import com.android.jack.ir.ast.JSession;
@@ -554,7 +554,7 @@ public class TestTools {
request.addInitialTagsOrMarkers(Jack.getJavaSourceInitialTagSet());
request.addProduction(DexInLibraryProduct.class);
if (ThreadConfig.get(Options.GENERATE_JACK_LIBRARY).booleanValue()) {
- request.addProduction(JayceFormatProduct.class);
+ request.addProduction(JayceInLibraryProduct.class);
}
OutputJackLibrary outputLibrary = null;