-default: $(patsubst src/java/%.java,build/%.class,$(shell find src/java -name \*.java))
+sources = $(shell find src/java -name \*.java)
+classes = $(sources:src/java/%.java=build/%.class)
+
+default: $(classes)
@cp -R src/rsc/* build/
-build/%.class:
+$(classes): $(sources)
@mkdir -p build
- @echo "Compiling $(subst /,.,$*)"
+ @echo "Compiling org.ibex.tool"
@javac -sourcepath src/java -d build -source 1.3 -target 1.1 \
- src/java/$*.java
+ $(sources)
clean:
@rm -rf build
final INameEnvironment env = new INameEnvironment() {
public NameEnvironmentAnswer findType(char[][] c) { return findType(name(c), pack(c)); }
public NameEnvironmentAnswer findType(char[] n, char[][] p) {
- if (DEBUG) System.out.println("requesting: "+ str(p, '.') + "."+new String(n));
+ if (DEBUG) System.out.println("findType: "+ str(p, '.') + "."+new String(n));
try {
Class c = Class.forName(str(p, '.') + '.' + new String(n));
} catch (ClassNotFoundException e) {}
// cut out searches for java.* packages in sources list
- if (p.length > 0 && eq(p[0], "java".toCharArray())) return null;
+ if (p.length > 0 && eq(p[0], "java".toCharArray())) {
+ if (DEBUG) System.out.println(" not found, unknown java.*");
+ return null;
+ }
try {
for (int i=0; i < sources.length; i++) {
System.out.println("Unexpected ClassFormatException"); // FIXME
e.printStackTrace();
}
+ if (DEBUG) System.out.println(" not found");
return null;
}
public boolean isPackage(char[][] parent, char[] name) {
+ if (DEBUG) System.out.println("isPackage: "+ str(parent, '.') + "."+new String(name));
String parentName = str(parent, '/');
- for (int i=0; i < sources.length; i++)
+ for (int i=0; i < sources.length; i++) {
if (eq(name, sources[i].n) && eq(parent, sources[i].p)) return false;
+ if (eq(pack(sources[i].p), parent) && eq(name(sources[i].p), name)) return true;
+ }
return
loader.getResource(parentName + ".class") == null &&
loader.getResource(parentName + '/' + new String(name) + ".class") == null;
/** Returns true of contents of both char arrays are equal. */
private static boolean eq(char[][] c1, char[][] c2) {
+ if (c1 == null || c2 == null) return c1 == c2;
if (c1.length != c2.length) return false;
for (int i=0; i < c1.length; i++) if (!eq(c1[i], c2[i])) return false;
return true;
/** Returns true of contents of both char arrays are equal. */
private static boolean eq(char[] c1, char[] c2) {
+ if (c1 == null || c2 == null) return c1 == c2;
if (c1.length != c2.length) return false;
for (int i=0; i < c1.length; i++) if (c1[i] != c2[i]) return false;
return true;