use of org.robovm.compiler.config.Config.Lib in project robovm by robovm.
the class ConfigTest method testMergeConfigsFromClasspath.
@Test
public void testMergeConfigsFromClasspath() throws Exception {
File tmpDir = createTempDir();
File cacheDir = new File(tmpDir, "cache");
File p1 = createMergeConfig(tmpDir, "p1", "Foo", OS.macosx, Arch.x86, false);
File p2 = createMergeConfig(tmpDir, "p2", "Wooz", OS.linux, Arch.x86, false);
// Create a jar file with both x86 and x86_64 by first creating a folder for x86 in p3/
// and then passing p3/ again but this time compress it to a jar.
createMergeConfig(tmpDir, "p3", "Baaz", OS.macosx, Arch.x86, false);
File p3 = createMergeConfig(tmpDir, "p3", "Raaz", OS.macosx, Arch.x86_64, true);
Config.Builder builder = new Config.Builder();
builder.cacheDir(cacheDir);
builder.os(OS.macosx);
builder.arch(Arch.x86);
builder.targetType(ConsoleTarget.TYPE);
builder.mainClass("Main");
builder.addClasspathEntry(p1);
builder.addClasspathEntry(p2);
builder.addClasspathEntry(p3);
builder.addExportedSymbol("YADA*");
builder.addFrameworkPath(new File(p1, "yada"));
builder.addFramework("Yada");
builder.addForceLinkClass("org.yada.**");
builder.addLib(new Lib("yada", true));
builder.addResource(new Resource(new File(p1, "resources")));
builder.addWeakFramework("WeakYada");
builder.home(fakeHome);
Config config = builder.build();
File p1X86Root = new File(p1, "META-INF/robovm/macosx/x86");
File p3X86Cache = config.getCacheDir(config.getClazzes().getClasspathPaths().get(2));
File p3X86Root = new File(p3X86Cache.getParentFile(), p3X86Cache.getName() + ".extracted/META-INF/robovm/macosx/x86");
assertEquals(Arrays.asList("FOO*", "BAAZ*", "YADA*"), config.getExportedSymbols());
assertEquals(Arrays.asList("com.foo.**", "com.baaz.**", "org.yada.**"), config.getForceLinkClasses());
assertEquals(Arrays.asList(new File(p1X86Root, "foo/bar"), new File(p3X86Root, "baaz/bar"), new File(p1, "yada")), config.getFrameworkPaths());
assertEquals(Arrays.asList("Foo", "Baaz", "Yada"), config.getFrameworks());
assertEquals(Arrays.asList(new Lib("foo", true), new Lib(new File(p1X86Root, "libfoo.a").getAbsolutePath(), true), new Lib("baaz", true), new Lib(new File(p3X86Root, "libbaaz.a").getAbsolutePath(), true), new Lib("yada", true)), config.getLibs());
assertEquals(Arrays.asList(new Resource(new File(p1X86Root, "resources")), new Resource(new File(p3X86Root, "resources")), new Resource(new File(p1, "resources"))), config.getResources());
assertEquals(Arrays.asList("WeakFoo", "WeakBaaz", "WeakYada"), config.getWeakFrameworks());
// Make sure builder() returns a config which merges in x86_64 configs instead
config = config.builder().arch(Arch.x86_64).build();
File p3X86_64Cache = config.getCacheDir(config.getClazzes().getClasspathPaths().get(2));
File p3X86_64Root = new File(p3X86_64Cache.getParentFile(), p3X86_64Cache.getName() + ".extracted/META-INF/robovm/macosx/x86_64");
assertEquals(Arrays.asList("RAAZ*", "YADA*"), config.getExportedSymbols());
assertEquals(Arrays.asList("com.raaz.**", "org.yada.**"), config.getForceLinkClasses());
assertEquals(Arrays.asList(new File(p3X86_64Root, "raaz/bar"), new File(p1, "yada")), config.getFrameworkPaths());
assertEquals(Arrays.asList("Raaz", "Yada"), config.getFrameworks());
assertEquals(Arrays.asList(new Lib("raaz", true), new Lib(new File(p3X86_64Root, "libraaz.a").getAbsolutePath(), true), new Lib("yada", true)), config.getLibs());
assertEquals(Arrays.asList(new Resource(new File(p3X86_64Root, "resources")), new Resource(new File(p1, "resources"))), config.getResources());
assertEquals(Arrays.asList("WeakRaaz", "WeakYada"), config.getWeakFrameworks());
}
use of org.robovm.compiler.config.Config.Lib in project robovm by robovm.
the class ConfigTest method testWriteConsole.
@Test
public void testWriteConsole() throws Exception {
Config.Builder builder = new Config.Builder();
builder.addClasspathEntry(new File("foo1.jar"));
builder.addClasspathEntry(new File(tmp, "foo2.jar"));
builder.addFramework("Foundation");
builder.addFramework("AppKit");
builder.addLib(new Config.Lib("dl", true));
builder.addLib(new Config.Lib("libs/libmy.a", true));
builder.addLib(new Config.Lib("libs/foo.o", true));
builder.addLib(new Config.Lib("/usr/lib/libbar.a", false));
builder.addResource(new Resource(new File("/tmp/wd/resources")));
builder.addResource(new Resource(new File("/usr/share/resources")));
builder.addResource(new Resource(new File("/tmp/wd"), null).include("data/**/*"));
builder.addResource(new Resource(null, null).include("videos/**/*.avi"));
builder.addResource(new Resource(new File("/tmp/wd/resources"), "data").include("**/*.png").exclude("**/foo.png").flatten(true));
builder.addForceLinkClass("javax.**.*");
builder.os(OS.macosx);
builder.archs(Arch.x86, Arch.x86_64);
StringWriter out = new StringWriter();
builder.write(out, wd);
assertEquals(IOUtils.toString(getClass().getResourceAsStream("ConfigTest.console.xml")), out.toString());
}
use of org.robovm.compiler.config.Config.Lib in project robovm by robovm.
the class ConfigTest method testCreateBuilderFromConfig.
@Test
public void testCreateBuilderFromConfig() throws Exception {
File tmpDir = createTempDir();
File cacheDir = new File(tmpDir, "cache");
Config.Builder builder = new Config.Builder();
builder.tmpDir(tmpDir);
builder.cacheDir(cacheDir);
builder.os(OS.macosx);
builder.arch(Arch.x86);
builder.targetType(ConsoleTarget.TYPE);
builder.mainClass("Main");
builder.addBootClasspathEntry(new File(tmpDir, "bcp1"));
builder.addBootClasspathEntry(new File(tmpDir, "bcp2"));
builder.addBootClasspathEntry(new File(tmpDir, "bcp3"));
builder.addClasspathEntry(new File(tmpDir, "cp1"));
builder.addClasspathEntry(new File(tmpDir, "cp2"));
builder.addClasspathEntry(new File(tmpDir, "cp3"));
builder.addExportedSymbol("YADA*");
builder.addFrameworkPath(new File(tmpDir, "yada"));
builder.addFramework("Yada");
builder.addForceLinkClass("org.yada.**");
builder.addLib(new Lib("yada", true));
builder.addResource(new Resource(new File(tmpDir, "resources")));
builder.addWeakFramework("WeakYada");
builder.addPluginArgument("foo:bar=yada");
builder.home(fakeHome);
Config config = builder.build();
Builder builder2 = config.builder();
builder2.arch(Arch.arm64);
Config config2 = builder2.build();
assertNotSame(config, config2);
assertEquals(config.getTmpDir(), config2.getTmpDir());
assertEquals(config.getCacheDir().getParentFile().getParentFile(), config2.getCacheDir().getParentFile().getParentFile());
assertEquals(config.getOs(), config2.getOs());
assertEquals(config.getMainClass(), config2.getMainClass());
assertEquals(config.getBootclasspath(), config2.getBootclasspath());
assertNotSame(config.getBootclasspath(), config2.getBootclasspath());
assertEquals(config.getClasspath(), config2.getClasspath());
assertNotSame(config.getClasspath(), config2.getClasspath());
assertEquals(config.getExportedSymbols(), config2.getExportedSymbols());
assertNotSame(config.getExportedSymbols(), config2.getExportedSymbols());
assertEquals(config.getFrameworkPaths(), config2.getFrameworkPaths());
assertNotSame(config.getFrameworkPaths(), config2.getFrameworkPaths());
assertEquals(config.getFrameworks(), config2.getFrameworks());
assertNotSame(config.getFrameworks(), config2.getFrameworks());
assertEquals(config.getForceLinkClasses(), config2.getForceLinkClasses());
assertNotSame(config.getForceLinkClasses(), config2.getForceLinkClasses());
assertEquals(config.getLibs(), config2.getLibs());
assertNotSame(config.getLibs(), config2.getLibs());
assertEquals(config.getResources(), config2.getResources());
assertNotSame(config.getResources(), config2.getResources());
assertEquals(config.getPluginArguments(), config2.getPluginArguments());
assertNotSame(config.getPluginArguments(), config2.getPluginArguments());
assertEquals(Arch.arm64, config2.getArch());
assertFalse(config.getPlugins().equals(config2.getPlugins()));
assertNotSame(config.getTarget(), config2.getTarget());
assertNotSame(config.getClazzes(), config2.getClazzes());
}
use of org.robovm.compiler.config.Config.Lib in project robovm by robovm.
the class ConfigTest method createMergeConfig.
private File createMergeConfig(File tmpDir, String dir, String id, OS os, Arch arch, boolean jar) throws Exception {
File p = new File(tmpDir, dir);
for (OS os2 : OS.values()) {
for (Arch arch2 : Arch.values()) {
File root = new File(p, "META-INF/robovm/" + os2 + "/" + arch2);
root.mkdirs();
if (!new File(root, "robovm.xml").exists()) {
new Config.Builder().write(new File(root, "robovm.xml"));
}
}
}
File root = new File(p, "META-INF/robovm/" + os + "/" + arch);
new Config.Builder().addExportedSymbol(id.toUpperCase() + "*").addForceLinkClass("com." + id.toLowerCase() + ".**").addFrameworkPath(new File(root, id.toLowerCase() + "/bar")).addFramework(id).addLib(new Lib(id.toLowerCase(), true)).addLib(new Lib(new File(root, "lib" + id.toLowerCase() + ".a").getAbsolutePath(), true)).addResource(new Resource(new File(root, "resources"))).addWeakFramework("Weak" + id).write(new File(root, "robovm.xml"));
if (jar) {
File jarFile = new File(tmpDir, p.getName() + ".jar");
ZipUtil.pack(p, jarFile);
FileUtils.deleteDirectory(p);
return jarFile;
} else {
return p;
}
}
use of org.robovm.compiler.config.Config.Lib in project robovm by robovm.
the class ConfigTest method testReadOldConsole.
@Test
public void testReadOldConsole() throws Exception {
Config.Builder builder = new Config.Builder();
builder.read(new InputStreamReader(getClass().getResourceAsStream("ConfigTest.old.console.xml"), "utf-8"), wd);
Config config = builder.config;
assertEquals(Arrays.asList(new File(wd, "foo1.jar"), new File(tmp, "foo2.jar")), config.getClasspath());
assertEquals(Arrays.asList("Foundation", "AppKit"), config.getFrameworks());
assertEquals(Arrays.asList(new Config.Lib("dl", true), new Config.Lib("/tmp/wd/libs/libmy.a", true), new Config.Lib("/tmp/wd/libs/foo.o", true), new Config.Lib("/usr/lib/libbar.a", false)), config.getLibs());
assertEquals(Arrays.asList(new Resource(new File("/tmp/wd/resources")), new Resource(new File("/usr/share/resources"))), config.getResources());
assertEquals(Arrays.asList("javax.**.*"), config.getForceLinkClasses());
assertEquals(OS.macosx, config.getOs());
assertEquals(1, config.getArchs().size());
assertEquals(Arch.x86, config.getArchs().get(0));
}
Aggregations