スポンサーサイト

    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    第43回「Apache Flex – Falcon コンパイラ (ビルド)」の巻


    Apache Flex T 


    Adobe社からFalconコンパイラが、Apache Flexに寄贈されました。

    せっかくなので
    Falconコンパイラオーバービューを中心に
    Falconコンパイラ情報を掲載したく思います。
    (間違っている点があると思います。気づいた方はご連絡ください。)

    ここではFalconコンパイラのビルド環境を中心に
    記載していきたいと思います。

    ステータスと目標についてはこちらをご覧ください。


    ソースコード

    FalconコンパイラのソースコードはApache Flexの
    SubversionもしくはGitHubに置かれています。
    ソースをWEBから閲覧したい場合は、こちらにアクセスしてください。

    ※ ビルド時はtrunk直下にある全てのプロジェクトとbuild.xmlをチェックアウトしてください。


    バイナリの配布

    バイナリによる配布を行っていない為、入手することができません。
    誰かが自動ビルドを行うか、バイナリのダウンロードページを
    提供する形でサポートを行うかもしれません。


    Falcon コンパイラのセットアップ

    FalconはJava1.6で実装しています。
    ビルドはAnt1.7.1を使用しています。
    統合開発環境はEclipse4.2を使用しています。

    セットアップ前に
    JFlex(バージョン1.4.3)というライブラリを
    入手する必要があります。

    環境変数にJFLEX_JARを作成します。
    パス先は入手したJFlex.jar のあるファイルパスを指定します。


    JFlexとは…
    The Fast Lexical Analyser for Java の略称。
    Java用の字句解析ルーチン生成系(Lexical analyzer generator)ライブラリ。

    JLexの上位互換ツールです。



    Falconコンパイラのビルド

    チェックアウトしたbuild.xml(Antスクリプト)を実行します。

    構成

    ターゲット目的
    javadocFalconコンパイラのJavadocを生成します。
    generated/javadoc
    eclipseEclipseで使用するプロジェクトの準備または
    更新を行います。

    lexers, parsers, BURM のJavaコードを自動生成します。
    main(default) Falconコンパイラを生成します。
    generated/dist/sdk

    Falconと今までのコンパイラを含有したものになります。
    cleanビルドしたファイルを全てクリアにします。
    ダウンロードしたJARファイルは残ります。
    wipeSVNで取得したファイル以外、
    全て消去します。

    main, eclipse, javadocをターゲットに実行した場合、
    一度、6つのJarファイルがダウンロードされます。
    • lib/antlr.jar
    • lib/commons-cil.jar
    • lib/common-io.jar
    • lib/guava.jar
    • lib/lzma-sdk.jar
    • lib/jburg.jar
    稀にダウンロード中にフリーズします。
    フリーズした場合、一度、Antを中断して頂き、wipeを実行してください。
    その後、Ant の引数に -qを指定して、再実行します。
    (余計なコンソール出力を抑えるため。)


    このような情報が出力されます。

    $ 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] Generating RawASTokenizer
    [echo] Generating RawASDocTokenizer
    [echo] Generating RawMXMLTokenizer
    [echo] Generating ASParser and ASTokenTypes
    [antlr] ANTLR Parser Generator Version 2.7.7 (20060906) 1989-2005
    [echo] Generating MetadataParser and MetadataTokenTypes
    [antlr] ANTLR Parser Generator Version 2.7.7 (20060906) 1989-2005
    [echo] Generating CSSLexer and CSSParser
    [echo] Generating CSSTree
    [echo] Generating CmcEmitter
    [echo] Generating CSSEmitter
    [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] Copying Apache SDK
    [echo] Building support.swc
    [echo] compiler main completed on 09/14/2012 11:32:37 PM

    BUILD SUCCESSFUL
    Total time: 1 minute 16 seconds


    ビルドの全体的な流れ
    • 必要なJARファイルをダウンロードします。
    • JFlexからJavaベースのレクサークラス(.lex)を生成。
    • ANTLRからJavaべ―スのパーサークラス(.g)とJBurgからJavaベースのBURMクラス(.jbg)を生成。
    • 生成したレクサー、パーサー、BURMクラスをコンパイル。
    • Falconコンパイラ用のjarファイルを生成。
    • FalconでFlexをコンパイルする際に必要となるSWCファイルを生成。(Falconが生成するCSSコードは、レガシーコンパイラとは異なる為。)
    Falconの全てのJavaクラスはcompiler.jarにパッケージングされます。(出力先:generated/dist/sdk/lib)
    他のJarファイル、falcon-mxmlc.jarとfalcon-compc.jarは、Falcon内のエントリポイントを、
    実行するためのJarファイルです。mxmlc(シェルスクリプトやバッチファイル)は、
    このjarファイルを実行します。

    Falconはコンパイル時、多くのファイルが必要です。(flex-config.xml, framework.swc...etc)
    実際に作成されるFalconコンパイラは、Apache Flex SDKをベースにFalconのbuildスクリプトも含まれた
    SDKを作成します。(必要なファイルが全て配備されたファイル構成、フォルダ構成となっている。)
    generated/dist にある sdkが、
    Apache Flex SDK をベースにプラスアルファ
    Falcon コンパイラも含まれた"Falcon SDK" となります。

    Falconへのコミット条件

    コミット時、以下の状態であること
    • Eclipse の全プロジェクトの警告数は0件。
    • ant javadoc 実行時、警告数は0件。
    • 新しいAPI(プライベートでない)を含んだJavadocを提供する。
    • パブリックAPIのインタフェースを変更しない。(Flash Builderとの統合を容易にするため)
    • 一旦、私たちのテストを行う場合、Ant のテストは全て通っていること。
    Falconコンパイラ(ビルド)は以上です。次回は実行方法について記載予定です。

    スポンサーサイト

    テーマ : みんなに紹介したいこと
    ジャンル : ブログ

    コメント

    Secret

    プロフィール

    tokufxug

    Author:tokufxug
    FxUGの中の人。

    ガジェット

    最新記事
    最新コメント
    月別アーカイブ
    カテゴリ
    検索フォーム
    RSSリンクの表示
    リンク
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。