summaryrefslogtreecommitdiffstats
path: root/jack-api
diff options
context:
space:
mode:
authormikaelpeltier <mikaelpeltier@google.com>2015-03-11 10:42:13 +0100
committermikaelpeltier <mikaelpeltier@google.com>2015-03-11 11:03:21 +0100
commit5bf40f1a249953e7152fa5900f3a6c5e048db30a (patch)
treeaf8c7cd52b2539c5b35e5bfb857af74a9ea5548d /jack-api
parent14f66d21a64021d5492c56aff5055e5e7382dfd4 (diff)
downloadtoolchain_jack-5bf40f1a249953e7152fa5900f3a6c5e048db30a.zip
toolchain_jack-5bf40f1a249953e7152fa5900f3a6c5e048db30a.tar.gz
toolchain_jack-5bf40f1a249953e7152fa5900f3a6c5e048db30a.tar.bz2
Add a sample based on service loader that really do a compilation
Change-Id: Ie54f774222827806859ccef37ebb2a50a7708d38
Diffstat (limited to 'jack-api')
-rw-r--r--jack-api/src/com/android/jack/api/example/SampleWithServiceLoader.java59
1 files changed, 57 insertions, 2 deletions
diff --git a/jack-api/src/com/android/jack/api/example/SampleWithServiceLoader.java b/jack-api/src/com/android/jack/api/example/SampleWithServiceLoader.java
index 995bd9d..3754946 100644
--- a/jack-api/src/com/android/jack/api/example/SampleWithServiceLoader.java
+++ b/jack-api/src/com/android/jack/api/example/SampleWithServiceLoader.java
@@ -16,8 +16,16 @@
package com.android.jack.api.example;
+import com.android.jack.api.ConfigNotSupportedException;
import com.android.jack.api.JackConfigProvider;
+import com.android.jack.api.v01.AbortException;
+import com.android.jack.api.v01.Api01CompilationTask;
+import com.android.jack.api.v01.Api01Config;
+import com.android.jack.api.v01.ConfigurationException;
+import com.android.jack.api.v01.UnrecoverableException;
+import java.io.File;
+import java.util.Arrays;
import java.util.NoSuchElementException;
import java.util.ServiceLoader;
@@ -28,12 +36,59 @@ import java.util.ServiceLoader;
public class SampleWithServiceLoader {
public static void main(String[] args) throws SecurityException, IllegalArgumentException {
+ if (args.length != 3) {
+ System.out.println(
+ "Usage: <jack core library> <source files directory> <output dex files directory>");
+ return;
+ }
+
ServiceLoader<JackConfigProvider> serviceLoader = ServiceLoader.load(JackConfigProvider.class);
+ JackConfigProvider confProvider;
try {
- JackConfigProvider confProvider = serviceLoader.iterator().next();
- System.out.println("Jack version: " + confProvider.getCompilerVersion());
+ confProvider = serviceLoader.iterator().next();
} catch (NoSuchElementException e) {
System.out.println("Check that jack.jar is on classpath");
+ return;
+ }
+
+ Api01CompilationTask compilationTask;
+ Api01Config config;
+
+ // Get configuration object
+ try {
+ config = confProvider.getConfig(Api01Config.class);
+ } catch (ConfigNotSupportedException e1) {
+ System.err.println("Brest config not supported)");
+ return;
+ }
+
+ // Configure the compiler
+ try {
+ config.setClasspath(Arrays.asList(new File(args[0])));
+
+ config.setSourceEntries(Arrays.asList(new File(args[1])));
+
+ config.setOutputDexDir(new File(args[2]));
+
+ // Check and build compiler
+ compilationTask = config.getTask();
+ } catch (ConfigurationException e) {
+ System.err.println(e.getMessage());
+ return;
+ }
+
+ // Run the compilation
+ try {
+ compilationTask.run();
+ } catch (AbortException e) {
+ System.out.println("User error, see reporter");
+ return;
+ } catch (UnrecoverableException e) {
+ System.out.println("Something out of Jack control has happen: " + e.getMessage());
+ return;
+ } catch (ConfigurationException e) {
+ System.err.println(e.getMessage());
+ return;
}
}
}