Flex SDK の asc をビルドしてみた

ソース公開された Flex 3 SDK には ActionScript -> ActionScript ByteCode 変換する asc.jar のソースコードも含まれている。これをビルドしてやろうというお話。

下準備

modules/asc/README.txt によると、jdk 1.5 以降が必要とのこと。推奨されている 5.0_13 をインストールした。Ant 1.6.2 以降も必要らしいが、これは Windows で Flex SDK をビルドしてみた ときに入れたので省略。

環境変数設定

cygwin を起動して、PATH と JAVA_HOME と ANT_HOME を設定。

$ cd trunk/modules/asc/build/java
$ export JAVA_HOME="c:/Program Files/Java/jdk1.5.0_13"
$ export ANT_HOME="c:/apache-ant-1.6.2"
$ export PATH="/cygdrive/c/Program Files/Java/jdk1.5.0_13/bin:/cygdrive/c/apache-ant-1.6.2/bin:$PATH"

ビルド

$ ant clean main

出力:

Buildfile: build.xml

clean:

clean:

classes:
    [javac] Compiling 220 source files to N:\program\as\flexsdk\trunk\modules\asc\build\java\classes
    [javac] 注:一部の入力ファイルは推奨されない API を使用またはオーバーライドしています。
    [javac] 注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてください。
    [javac] 注:入力ファイルの操作のうち、未チェックまたは安全ではないものがあります。
    [javac] 注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。

jar:
      [jar] Building jar: N:\program\as\flexsdk\trunk\modules\asc\lib\asc.jar
      [jar] Building MANIFEST-only jar: N:\program\as\flexsdk\trunk\modules\asc\lib\abcdump.jar
      [jar] Building jar: N:\program\as\flexsdk\trunk\modules\asc\lib\abcdump.jar
      [jar] Building MANIFEST-only jar: N:\program\as\flexsdk\trunk\modules\asc\lib\ash.jar
      [jar] Building jar: N:\program\as\flexsdk\trunk\modules\asc\lib\ash.jar

main:

BUILD SUCCESSFUL
Total time: 12 seconds

lib フォルダに asc.jar が出力されている。

確認

1年ほど前に、Tamarin と遊んでみた ときのソースコード

// hoge.as : 正規表現で grep
import avmplus.*;
var re = RegExp(System.argv[0]);
var line;
while (line = System.readLine()) 
  if (line.match(re))
    System.write(line + '\n');

をビルドしてみる。

$ bin/asc.exe hoge.as

hoge.abc, 221 bytes written

できた!

実行は付属の avmplus_s.exe で。

$ bin/windows/avmplus_s.exe hoge.abc -- var < hoge.as
var re = RegExp(System.argv[0]);
var line;

コマンドライン引数を与えるためには -- が必要になっていてちょっと悩んだ。

おわり

来週末に開かれるという Shibuya.abc で発表したいんだが、先は険しい…。

付け焼刃では火傷しそう。