Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Falcon is written in Java 1.6. Its build scripts use Ant 1.7.1. Eclipse projects for development use Eclipse 4.2 (Juno).

...

Occasionally one of these downloads hangs. Just interrupt Ant and try again. These JARs will remain in the lib directory until you do a wipe.

If you do ant -q main (where the -q switch means "quiet" and turns off a lot of noisy output), the output the first time should look like this:

No Format

$ ant -q
     [echo] JFLEX_JAR is d:/jflex-1.4.3/jflex/lib/JFlex.jar
     [echo] Obtaining lib/antlr.jar
     [echo] Obtaining lib/commons-cli.jar
     [echo] Obtaining lib/commons-io.jar
     [echo] Obtaining lib/guava.jar
     [echo] Obtaining lib/jburg.jar
     [echo] Obtaining lib/lzma.jar
     [echo] Building lib/lzma.jar
     [echo] Deleting 'generated' directory
     [echo] Generating RawASTokenizer and RawASDocTokenizer
     [echo] Generating ASParser and ASTokenTypes
    [antlr] ANTLR Parser Generator   Version 2.7.7 (20060906)   1989-2005
    [antlr] ANTLR Parser Generator   Version 2.7.7 (20060906)   1989-2005
     [echo] Generating CmcEmitter
     [echo] Generating CSSLexer, CSSParser, and CSSTree
     [echo] Generating CSSEmitter
     [echo] Generating RawMXMLTokenizer
     [echo] Compiling Java code
     [echo] Creating generated/dist/sdk/lib/compiler.jar
     [echo] Creating generated/dist/sdk/lib/falcon-asc.jar
     [echo] Creating generated/dist/sdk/lib/falcon-mxmlc.jar
     [echo] Creating generated/dist/sdk/lib/falcon-compc.jar
     [echo] Creating generated/dist/sdk/lib/falcon-optimizer.jar
     [echo] Creating generated/dist/sdk/lib/falcon-swfdump.jar
     [echo] Creating lib/aet.jar
     [echo] Creating generated/dist/sdk/lib/flexTasks.jar
     [echo] Building support.swc
     [echo] compiler main completed on 09/14/2012 10:13:39 AM

BUILD SUCCESSFUL
Total time: 1 minute 16 seconds

From this you can see that the overall flow of the build is

  • Download the necessary third-party JAR files.
  • Generate Java-based lexer classes from JFlex .lex files, Java-based parser classes from ANTLR .g files, and Java-based BURM classes from JBurg .jbg files.
  • Compile the Java code (both the code that's in Subversion and the lexers/parsers/BURMs that are generated by the previous step).
  • Create the JAR files that are the Falcon deliverables.
  • Create a SWC file that needs to be used when compiling Flex with Falcon (because Falcon generates different code for CSS than the old compiler).

All the compiled Java classes that comprise Falcon are packaged as compiler.jar, which is generated at generated/dist/sdk/lib. Other JAR files such as falcon-mxmlc.jar and falcon-compc.jar are codeless launcher JARs which serve only to run a particular entry point within Falcon. Launchers such as the shell script mxmlc or the batch file mxmlc.bat simply run these launch JARs from the command line.

...