From: Brian S. <bs...@bs...> - 2002-08-12 03:29:32
|
I poked a lot and think I've got most of what I need to do the jsr14 v1.2/javac 1.4.1 compiler adapter. There's just one huge problem: There is a somewhat unresolvable build dependency problem! Here's the catch: To compile the old compiler adapter, we need jsr14 1.0 (or javac < 1.4.1) in the classpath. But to compile the newer compiler adapter, we need jsr14 1.2 in the classpath. Yikes! So, I can see a couple of ways out of this situation: 1) Set up a framework like I used to talk about for having sub-projects that were compilable only sometimes. This same framework would apply to problems like this, as well as to OS-specific code. The idea is that the separate subprojects would be broken off into their own directories, and that on commit the class files would be committed as well as the source files. Then, the main project build system would take the committed class files and use them to compile. Thus, the main build would not need to satisfy the weird build-time dependencies of the various sub-modules. or, for just this problem: 2) Force all developers to have both JSR14 v1.0 and JSR14 v1.2 in their lib directory. Then, compile each's compiler adapter separately as a part of the compilation process, adding the relevant compiler to the classpath just for that compilation. I think this should work reasonably. What do you guys think? As I said, the actual issue of making a JSR14 v1.2 compiler adapter is not really that hard, but it brings up this tough issue. :) BTW, one side tiny problem that's easy to fix is the fact that if you try to compile DrJava via Ant using JSR14 v1.2, it doesn't work. The reason is that JSR14 v1.2 seems to default to having generics off unless you pass "-gj" on the compiler command line. Anyhow, this can be done trivially in the build-common.xml task by putting a <compilerarg value="-gj" /> inside the <javac>. This will keep the build script working on JSR14 1.0 as well, but the one small catch is that it requires Ant 1.5 to execute. No big deal I guess. Anyway ... . -brian PS: As you can see, I'm still playing a bit with DrJava in my spare time. :) Another side project I'm beginning to investigate is creating a REPL module to put into Oracle's IDE JDeveloper. JDeveloper, by the way, is actually not bad (and they're not paying me to say this!). I mean, it helps a lot for making big goofy apps like Web applications, but it's also got some nice stuff like good code completion, etc. It is, however, a memory hog and pretty slow on my home P2/350. Also, the new version that's not out yet (9.0.3) is much better. Anyhow ... :) |