summaryrefslogtreecommitdiffstats
path: root/jack-tests/src/com/android
diff options
context:
space:
mode:
authorJean-Marie Henaff <jmhenaff@google.com>2015-03-02 14:50:31 +0100
committerJean-Marie Henaff <jmhenaff@google.com>2015-03-06 14:12:20 +0100
commitd235ed6f21b7b21aefb4b066b0c64acfa2bbb229 (patch)
treee2a963acc70ba664991df32bf3f64176cbcc6a82 /jack-tests/src/com/android
parentd6059b4371b3039f5e6e473664302b4c6cada7dc (diff)
downloadtoolchain_jack-d235ed6f21b7b21aefb4b066b0c64acfa2bbb229.tar.gz
toolchain_jack-d235ed6f21b7b21aefb4b066b0c64acfa2bbb229.tar.bz2
toolchain_jack-d235ed6f21b7b21aefb4b066b0c64acfa2bbb229.zip
Start using jack-api for jack API based test toolchains
Implementation is still to be done. Change-Id: I010ab9f00f4c00275982d4abfcbf6c94248f3fb4
Diffstat (limited to 'jack-tests/src/com/android')
-rw-r--r--jack-tests/src/com/android/jack/test/helper/IncrementalTestHelper.java6
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/AbstractTestTools.java14
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/JackApiToolchain.java269
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/JackApiToolchainBase.java125
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java193
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/JackBasedToolchain.java36
-rw-r--r--jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java25
7 files changed, 355 insertions, 313 deletions
diff --git a/jack-tests/src/com/android/jack/test/helper/IncrementalTestHelper.java b/jack-tests/src/com/android/jack/test/helper/IncrementalTestHelper.java
index 90bffbc2..11af77bc 100644
--- a/jack-tests/src/com/android/jack/test/helper/IncrementalTestHelper.java
+++ b/jack-tests/src/com/android/jack/test/helper/IncrementalTestHelper.java
@@ -22,7 +22,7 @@ import com.android.jack.test.runner.AbstractRuntimeRunner;
import com.android.jack.test.runner.RuntimeRunner;
import com.android.jack.test.toolchain.AbstractTestTools;
import com.android.jack.test.toolchain.IToolchain;
-import com.android.jack.test.toolchain.JackApiToolchain;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
import com.android.jack.test.toolchain.JackBasedToolchain.MultiDexKind;
import com.android.jack.test.toolchain.JillBasedToolchain;
@@ -176,8 +176,8 @@ public class IncrementalTestHelper {
List<Class<? extends IToolchain>> excludeList = new ArrayList<Class<? extends IToolchain>>(1);
excludeList.add(JillBasedToolchain.class);
- JackApiToolchain jackToolchain =
- AbstractTestTools.getCandidateToolchain(JackApiToolchain.class, excludeList);
+ JackApiToolchainBase jackToolchain =
+ AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class, excludeList);
jackToolchain.setIncrementalFolder(getCompilerStateFolder());
jackToolchain.addStaticLibs(imports.toArray(new File[imports.size()]));
jackToolchain.setMultiDexKind(multiDexKind);
diff --git a/jack-tests/src/com/android/jack/test/toolchain/AbstractTestTools.java b/jack-tests/src/com/android/jack/test/toolchain/AbstractTestTools.java
index 0c9fa324..be3414b3 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/AbstractTestTools.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/AbstractTestTools.java
@@ -82,10 +82,10 @@ public abstract class AbstractTestTools {
static {
toolchainBuilders = new HashMap<String, ToolchainBuilder>();
- toolchainBuilders.put("jack-cli" , new JackCliToolchainBuilder());
- toolchainBuilders.put("jack-api" , new JackApiToolchainBuilder());
- toolchainBuilders.put("legacy" , new LegacyToolchainBuilder());
- toolchainBuilders.put("jill-legacy", new LegacyJillToolchainBuilder());
+ toolchainBuilders.put("jack-cli" , new JackCliToolchainBuilder());
+ toolchainBuilders.put("jack-api-v01" , new JackApiV01ToolchainBuilder());
+ toolchainBuilders.put("legacy" , new LegacyToolchainBuilder());
+ toolchainBuilders.put("jill-legacy" , new LegacyJillToolchainBuilder());
try {
runtimes.addAll(parseRuntimeList(TestsProperties.getProperty(RUNTIME_LIST_KEY)));
@@ -122,12 +122,12 @@ public abstract class AbstractTestTools {
}
}
- private static class JackApiToolchainBuilder implements ToolchainBuilder {
+ private static class JackApiV01ToolchainBuilder implements ToolchainBuilder {
@Override
@Nonnull
- public JackApiToolchain build() {
- return new JackApiToolchain();
+ public JackApiV01Toolchain build() {
+ return new JackApiV01Toolchain(getPrebuilt("jack"));
}
}
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchain.java
deleted file mode 100644
index e48177e0..00000000
--- a/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchain.java
+++ /dev/null
@@ -1,269 +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.test.toolchain;
-
-import com.android.jack.Jack;
-import com.android.jack.Options;
-import com.android.jack.Sourcelist;
-import com.android.jack.backend.dex.rop.CodeItemBuilder;
-import com.android.jack.shrob.spec.Flags;
-import com.android.sched.util.config.cli.TokenIterator;
-import com.android.sched.util.location.NoLocation;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import javax.annotation.Nonnull;
-
-/**
- * This class implements a {@link JackBasedToolchain} by calling Jack via API.
- */
-public class JackApiToolchain extends JackBasedToolchain {
-
- @Nonnull
- private Options jackOptions = new Options();
-
- JackApiToolchain() {}
-
- @Override
- @Nonnull
- protected JackApiToolchain setVerbosityLevel(@Nonnull Options.VerbosityLevel level) {
- jackOptions.setVerbosityLevel(level);
- return this;
- }
-
- @Override
- public void srcToExe(@Nonnull File out, boolean zipFile,
- @Nonnull File... sources) throws Exception {
-
- try {
-
- srcToCommon(sources);
-
- if (zipFile) {
- jackOptions.setOutputZip(out);
- } else {
- jackOptions.setOutputDir(out);
- }
-
- System.setOut(outRedirectStream);
- System.setErr(errRedirectStream);
-
- Jack.checkAndRun(jackOptions);
- } finally {
- System.setOut(stdOut);
- System.setErr(stdErr);
- }
- }
-
- @Override
- public void srcToLib(@Nonnull File out, boolean zipFiles,
- @Nonnull File... sources) throws Exception {
-
- try {
-
- srcToCommon(sources);
-
- if (zipFiles) {
- jackOptions.setJayceOutputZip(out);
- } else {
- jackOptions.setJayceOutputDir(out);
- }
-
- System.setOut(outRedirectStream);
- System.setErr(errRedirectStream);
-
- Jack.checkAndRun(jackOptions);
- } finally {
- System.setOut(stdOut);
- System.setErr(stdErr);
- }
- }
-
- private void srcToCommon(@Nonnull File... sources) throws Exception {
- addProperties(properties, jackOptions);
-
- jackOptions.setSanityChecks(sanityChecks);
-
- if (jackOptions.getFlags() != null) {
- jackOptions.applyShrobFlags();
- }
-
- if (classpath.size() > 0) {
- jackOptions.setClasspath(getClasspathAsString());
- }
-
- fillEcjArgs(sources);
-
- for (File res : resImport) {
- jackOptions.addResource(res);
- }
-
- jackOptions.setImportedLibraries(staticLibs);
-
- if (jarjarRules != null) {
- jackOptions.setJarjarRulesFile(jarjarRules);
- }
-
- if (proguardFlags.size() > 0) {
- jackOptions.setProguardFlagsFile(proguardFlags);
- }
-
- jackOptions.addProperty(Options.EMIT_LOCAL_DEBUG_INFO.getName(),
- Boolean.toString(withDebugInfos));
-
- jackOptions.addProperty(CodeItemBuilder.DEX_OPTIMIZE.getName(),
- Boolean.toString(!withDebugInfos));
-
- }
-
- @Override
- public void libToExe(@Nonnull File[] in, @Nonnull File out, boolean zipFile) throws Exception {
-
- try {
-
- libToCommon(in);
-
- if (zipFile) {
- jackOptions.setOutputZip(out);
- } else {
- jackOptions.setOutputDir(out);
- }
-
- System.setOut(outRedirectStream);
- System.setErr(errRedirectStream);
-
- Jack.checkAndRun(jackOptions);
- } finally {
- System.setOut(stdOut);
- System.setErr(stdErr);
- }
- }
-
- @Override
- public void libToLib(@Nonnull File[] in, @Nonnull File out, boolean zipFiles) throws Exception {
-
- try {
-
- libToCommon(in);
-
- if (zipFiles) {
- jackOptions.setJayceOutputZip(out);
- } else {
- jackOptions.setJayceOutputDir(out);
- }
-
- System.setOut(outRedirectStream);
- System.setErr(errRedirectStream);
-
- Jack.checkAndRun(jackOptions);
- } finally {
- System.setOut(stdOut);
- System.setErr(stdErr);
- }
- }
-
- private void libToCommon(@Nonnull File[] in) {
- addProperties(properties, jackOptions);
-
- jackOptions.setSanityChecks(sanityChecks);
-
- if (jarjarRules != null) {
- jackOptions.setJarjarRulesFile(jarjarRules);
- }
-
- if (classpath.size() > 0) {
- jackOptions.setClasspath(getClasspathAsString());
- }
-
- if (jackOptions.getFlags() != null) {
- jackOptions.applyShrobFlags();
- }
-
- if (proguardFlags.size() > 0) {
- jackOptions.setProguardFlagsFile(proguardFlags);
- }
-
- for (File res : resImport) {
- jackOptions.addResource(res);
- }
-
- List<File> libsToImport = new ArrayList<File>();
- for (File staticLib : in) {
- libsToImport.add(staticLib);
- }
- libsToImport.addAll(staticLibs);
- jackOptions.setImportedLibraries(libsToImport);
-
- }
-
- @Nonnull
- public JackApiToolchain setShrobFlags(@Nonnull Flags shrobFlags) {
- jackOptions.setFlags(shrobFlags);
- return this;
- }
-
- @Override
- @Nonnull
- public JackApiToolchain setIncrementalFolder(@Nonnull File incrementalFolder) {
- jackOptions.setIncrementalFolder(incrementalFolder);
- return this;
- }
-
- private static final void addProperties(@Nonnull Map<String, String> properties,
- @Nonnull Options jackOptions) {
- for (Entry<String, String> entry : properties.entrySet()) {
- jackOptions.addProperty(entry.getKey(), entry.getValue());
- }
- }
-
- private final void fillEcjArgs(@Nonnull File... sources) throws Exception {
- List<String> ecjArgs = new ArrayList<String>();
-
- if (annotationProcessorClass != null) {
- ecjArgs.add("-processor");
- ecjArgs.add(annotationProcessorClass.getName());
- }
-
- if (annotationProcessorOutDir != null) {
- ecjArgs.add("-d");
- ecjArgs.add(annotationProcessorOutDir.getAbsolutePath());
- }
-
- ArrayList<File> toCompile = new ArrayList<File>();
- for (File srcFile : sources) {
- if (srcFile instanceof Sourcelist) {
- TokenIterator iterator =
- new TokenIterator(new NoLocation(), '@' + srcFile.getAbsolutePath());
- while (iterator.hasNext()) {
- toCompile.add(new File(iterator.next()));
- }
- } else {
- toCompile.add(srcFile);
- }
- }
-
- if (sources.length > 0) {
- jackOptions.setEcjExtraArguments(ecjArgs);
- jackOptions.setInputSources(toCompile);
- }
- }
-
-}
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchainBase.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchainBase.java
new file mode 100644
index 00000000..33fb3ddf
--- /dev/null
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackApiToolchainBase.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2015 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.test.toolchain;
+
+import com.android.jack.api.ConfigNotSupportedException;
+import com.android.jack.api.JackConfig;
+import com.android.jack.api.JackConfigProvider;
+import com.android.jack.api.example.Main;
+import com.android.jack.api.v01.VerbosityLevel;
+import com.android.jack.shrob.spec.Flags;
+import com.android.jack.test.TestConfigurationException;
+
+import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
+/**
+ * This class implements a {@link JackBasedToolchain} by calling Jack via API.
+ */
+public abstract class JackApiToolchainBase extends JackBasedToolchain {
+
+ @Nonnull
+ protected JackConfig config;
+
+ @Nonnull
+ private String compilerCodeName;
+ @Nonnull
+ private String compilerVersion;
+ @Nonnull
+ private String compilerBuildId;
+ @Nonnull
+ private String compilerCodeBase;
+
+ @CheckForNull
+ protected File incrementalFolder;
+ @Nonnull
+ protected VerbosityLevel verbosityLevel = VerbosityLevel.WARNING;
+
+ public String getCompilerCodeName() {
+ return compilerCodeName;
+ }
+
+ public String getCompilerVersion() {
+ return compilerVersion;
+ }
+
+ public String getCompilerBuildId() {
+ return compilerBuildId;
+ }
+
+ public String getCompilerCodeBase() {
+ return compilerCodeBase;
+ }
+
+ protected <T extends JackConfig> JackApiToolchainBase(@Nonnull File jackPrebuilt,
+ @Nonnull Class<T> jackConfig) {
+ try {
+ ClassLoader loader;
+ JackConfigProvider confProvider;
+ loader = URLClassLoader.newInstance(new URL[] {jackPrebuilt.toURI().toURL()},
+ Main.class.getClassLoader());
+
+ Class<? extends JackConfigProvider> confProviderClass = Class.forName(
+ JackConfigProvider.CLASS_NAME, true, loader).asSubclass(JackConfigProvider.class);
+
+ JackConfigProvider configProvider = confProviderClass.getConstructor().newInstance();
+
+ compilerCodeName = configProvider.getCompilerCodeName();
+ compilerVersion = configProvider.getCompilerVersion();
+ compilerBuildId = configProvider.getCompilerBuildId();
+ compilerCodeBase = configProvider.getCompilerCodeBase();
+
+ config = confProviderClass.getConstructor().newInstance().getConfig(jackConfig);
+
+ } catch (ConfigNotSupportedException e) {
+ throw new TestConfigurationException("Jack API v01 not supported", e);
+ } catch (MalformedURLException e) {
+ throw new TestConfigurationException(e);
+ } catch (ClassNotFoundException e) {
+ throw new TestConfigurationException(e);
+ } catch (InstantiationException e) {
+ throw new TestConfigurationException(e);
+ } catch (IllegalAccessException e) {
+ throw new TestConfigurationException(e);
+ } catch (IllegalArgumentException e) {
+ throw new TestConfigurationException(e);
+ } catch (InvocationTargetException e) {
+ throw new TestConfigurationException(e);
+ } catch (NoSuchMethodException e) {
+ throw new TestConfigurationException(e);
+ } catch (SecurityException e) {
+ throw new TestConfigurationException(e);
+ }
+ }
+
+ @Override
+ @Nonnull
+ public JackApiToolchainBase setIncrementalFolder(@Nonnull File incrementalFolder) {
+ this.incrementalFolder = incrementalFolder;
+ return this;
+ }
+
+ @Nonnull
+ public abstract JackApiToolchainBase setShrobFlags(@Nonnull Flags shrobFlags);
+
+}
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java
new file mode 100644
index 00000000..83efb1e9
--- /dev/null
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2015 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.test.toolchain;
+
+import com.google.common.collect.Lists;
+
+import com.android.jack.Options;
+import com.android.jack.api.v01.Api01Config;
+import com.android.jack.api.v01.ConfigurationException;
+import com.android.jack.api.v01.VerbosityLevel;
+import com.android.jack.shrob.spec.Flags;
+import com.android.jack.test.TestConfigurationException;
+import com.android.sched.vfs.Container;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.annotation.Nonnull;
+
+/**
+ * This {@link Toolchain} uses Jack through v01 API
+ */
+public class JackApiV01Toolchain extends JackApiToolchainBase {
+
+ @Nonnull
+ private Api01Config apiV01Config;
+
+ JackApiV01Toolchain(@Nonnull File jackPrebuilt) {
+ super(jackPrebuilt, Api01Config.class);
+ apiV01Config = (Api01Config) config;
+ }
+
+ @Override
+ public void srcToExe(@Nonnull File out, boolean zipFile, @Nonnull File... sources)
+ throws Exception {
+ srcToCommon(sources);
+ setOutputDex(out);
+ apiV01Config.getTask().run();
+ }
+
+ @Override
+ public void srcToLib(@Nonnull File out, boolean zipFiles, @Nonnull File... sources)
+ throws Exception {
+ srcToCommon(sources);
+ setOutputJack(out);
+ apiV01Config.getTask().run();
+ }
+
+ @Override
+ public void libToExe(@Nonnull File[] in, @Nonnull File out, boolean zipFile) throws Exception {
+ libToCommon(in);
+ setOutputDex(out);
+ apiV01Config.getTask().run();
+ }
+
+ @Override
+ public void libToLib(@Nonnull File[] in, @Nonnull File out, boolean zipFiles) throws Exception {
+ libToCommon(in);
+ setOutputJack(out);
+ apiV01Config.getTask().run();
+ }
+
+ @Override
+ @Nonnull
+ public JackApiV01Toolchain setIncrementalFolder(@Nonnull File incrementalFolder) {
+ try {
+ apiV01Config.setIncrementalDir(incrementalFolder);
+ return this;
+ } catch (ConfigurationException e) {
+ throw new TestConfigurationException(e);
+ }
+ }
+
+ @Override
+ @Nonnull
+ public JackApiV01Toolchain setVerbose(boolean isVerbose) {
+ super.setVerbose(isVerbose);
+ try {
+ if (isVerbose) {
+ apiV01Config.setVerbosityLevel(VerbosityLevel.DEBUG);
+ } else {
+ apiV01Config.setVerbosityLevel(VerbosityLevel.WARNING);
+ }
+ return this;
+ } catch (ConfigurationException e) {
+ throw new TestConfigurationException(e);
+ }
+ }
+
+ @Override
+ @Nonnull
+ public final JackApiV01Toolchain addProperty(@Nonnull String propertyName,
+ @Nonnull String propertyValue) {
+ try {
+ apiV01Config.setProperty(propertyName, propertyValue);
+ return this;
+ } catch (ConfigurationException e) {
+ throw new TestConfigurationException(e);
+ }
+ }
+
+ @Override
+ @Nonnull
+ public JackApiV01Toolchain setWithDebugInfos(boolean withDebugInfos) {
+ try {
+ apiV01Config.setEmitDebug(withDebugInfos);
+ return this;
+ } catch (ConfigurationException e) {
+ throw new TestConfigurationException(e);
+ }
+ }
+
+ @Override
+ @Nonnull
+ public JackApiV01Toolchain setShrobFlags(@Nonnull Flags shrobFlags) {
+ // STOPSHIP(jmhenaff): another CL remove the need for this API
+ throw new AssertionError("Must no be used");
+ }
+
+ @Override
+ @Nonnull
+ public JackApiV01Toolchain setSanityChecks(boolean sanityChecks) {
+ try {
+ apiV01Config.setProperty(Options.SANITY_CHECKS.getName(), Boolean.toString(sanityChecks));
+ return this;
+ } catch (ConfigurationException e) {
+ throw new TestConfigurationException(e);
+ }
+ }
+
+ private void srcToCommon(@Nonnull File... sources) throws Exception {
+ apiV01Config.setClasspath(classpath);
+ apiV01Config.setImportedJackLibraryFiles(staticLibs);
+ apiV01Config.setSourceEntries(Lists.newArrayList(sources));
+ apiV01Config.setResourceDirs(resImport);
+ apiV01Config.setProguardConfigFiles(proguardFlags);
+ if (jarjarRules != null) {
+ apiV01Config.setJarJarConfigFile(jarjarRules);
+ }
+ }
+
+ private void libToCommon(@Nonnull File... in) throws Exception {
+ apiV01Config.setClasspath(classpath);
+ List<File> importedLibs = new ArrayList<File>(staticLibs);
+ Collections.addAll(importedLibs, in);
+ apiV01Config.setImportedJackLibraryFiles(importedLibs);
+ apiV01Config.setResourceDirs(resImport);
+ apiV01Config.setProguardConfigFiles(proguardFlags);
+ if (jarjarRules != null) {
+ apiV01Config.setJarJarConfigFile(jarjarRules);
+ }
+ }
+
+ private void setOutputDex(@Nonnull File outDex) throws Exception {
+ if (outDex.isDirectory()) {
+ apiV01Config.setOutputDexDir(outDex);
+ } else {
+ apiV01Config.setProperty(Options.DEX_OUTPUT_CONTAINER_TYPE.getName(), Container.ZIP.name());
+ apiV01Config.setProperty(Options.GENERATE_DEX_FILE.getName(), "true");
+ apiV01Config.setProperty(Options.DEX_OUTPUT_ZIP.getName(), outDex.getAbsolutePath());
+ }
+ }
+
+ private void setOutputJack(@Nonnull File outjack) throws Exception {
+ if (!outjack.isDirectory()) {
+ apiV01Config.setOutputJackFile(outjack);
+ } else {
+ apiV01Config.setProperty(Options.LIBRARY_OUTPUT_CONTAINER_TYPE.getName(),
+ Container.DIR.name());
+ apiV01Config.setProperty(Options.LIBRARY_OUTPUT_DIR.getName(), outjack.getAbsolutePath());
+ apiV01Config.setProperty(Options.GENERATE_JACK_LIBRARY.getName(), "true");
+ apiV01Config.setProperty(Options.GENERATE_JAYCE_IN_LIBRARY.getName(), "true");
+ apiV01Config.setProperty(Options.GENERATE_DEPENDENCIES_IN_LIBRARY.getName(), "true");
+ }
+ }
+
+}
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackBasedToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackBasedToolchain.java
index b7f0f552..34610eb8 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/JackBasedToolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackBasedToolchain.java
@@ -16,8 +16,6 @@
package com.android.jack.test.toolchain;
-import com.android.jack.Options;
-import com.android.jack.Options.VerbosityLevel;
import com.android.jack.backend.dex.DexFileWriter;
import com.android.jack.backend.dex.MultiDexLegacy;
import com.android.jack.backend.dex.rop.CodeItemBuilder;
@@ -25,9 +23,7 @@ import com.android.jack.test.TestsProperties;
import java.io.File;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
@@ -46,21 +42,15 @@ public abstract class JackBasedToolchain extends AndroidToolchain {
LEGACY
}
- @Nonnull
- protected final Map<String, String> properties = new HashMap<String, String>();
+
@CheckForNull
protected File annotationProcessorOutDir;
@Nonnull
protected List<File> resImport = new ArrayList<File>();
- protected boolean sanityChecks = true;
-
@Nonnull
- public final JackBasedToolchain addProperty(@Nonnull String propertyName,
- @Nonnull String propertyValue) {
- properties.put(propertyName, propertyValue);
- return this;
- }
+ public abstract JackBasedToolchain addProperty(@Nonnull String propertyName,
+ @Nonnull String propertyValue);
public final JackBasedToolchain setMultiDexKind(@Nonnull MultiDexKind kind) {
switch (kind) {
@@ -119,26 +109,8 @@ public abstract class JackBasedToolchain extends AndroidToolchain {
return this;
}
- @Override
@Nonnull
- public JackBasedToolchain setVerbose(boolean isVerbose) {
- super.setVerbose(isVerbose);
- if (isVerbose) {
- setVerbosityLevel(VerbosityLevel.DEBUG);
- } else {
- setVerbosityLevel(VerbosityLevel.WARNING);
- }
- return this;
- }
-
- @Nonnull
- protected abstract JackBasedToolchain setVerbosityLevel(@Nonnull Options.VerbosityLevel level);
-
- @Nonnull
- public JackBasedToolchain setSanityChecks(boolean sanityChecks){
- this.sanityChecks = sanityChecks;
- return this;
- }
+ public abstract JackBasedToolchain setSanityChecks(boolean sanityChecks);
@Override
@Nonnull
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java
index 280f8c9b..3542d03e 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java
@@ -22,6 +22,7 @@ import com.android.jack.util.ExecuteFile;
import java.io.File;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -43,6 +44,10 @@ public class JackCliToolchain extends JackBasedToolchain {
protected File incrementalFolder;
@Nonnull
protected Options.VerbosityLevel verbosityLevel = VerbosityLevel.WARNING;
+ @Nonnull
+ protected final Map<String, String> properties = new HashMap<String, String>();
+
+ protected boolean sanityChecks = true;
JackCliToolchain(@Nonnull File prebuilt) {
this.jackPrebuilt = prebuilt;
@@ -50,8 +55,9 @@ public class JackCliToolchain extends JackBasedToolchain {
@Override
@Nonnull
- protected JackCliToolchain setVerbosityLevel(@Nonnull Options.VerbosityLevel level) {
- verbosityLevel = level;
+ public JackCliToolchain setVerbose(boolean isVerbose) {
+ super.setVerbose(isVerbose);
+ verbosityLevel = isVerbose ? VerbosityLevel.DEBUG : VerbosityLevel.WARNING;
return this;
}
@@ -306,6 +312,14 @@ public class JackCliToolchain extends JackBasedToolchain {
return this;
}
+ @Override
+ @Nonnull
+ public JackBasedToolchain addProperty(@Nonnull String propertyName,
+ @Nonnull String propertyValue) {
+ properties.put(propertyName, propertyValue);
+ return this;
+ }
+
protected static void addProperties(@Nonnull Map<String, String> properties,
@Nonnull List<String> args) {
for (Entry<String, String> entry : properties.entrySet()) {
@@ -314,4 +328,11 @@ public class JackCliToolchain extends JackBasedToolchain {
}
}
+ @Override
+ @Nonnull
+ public JackBasedToolchain setSanityChecks(boolean sanityChecks){
+ this.sanityChecks = sanityChecks;
+ return this;
+ }
+
}