the amalgamation generator script [SQLite]
Amalgamationってどうやってんの~? と、脱線気味に探していたところ、「the amalgamation generator script」と言うものが存在してそうな記述を見つけました。・・・それはどこにあるんかなぁ?
*
ズバリそのものが見つかりそうにないので、「README」に書かれていた「publish.sh」と言うのを見て行きます。すると「make sqlite3.c」と言う記述が!
ソースツリー内には「sqlite3.c」が無いため、それを作成する(Amalgamationする?)動作だと思われます。と言うことなので、「Makfile」を見て行こうと思いますが、これは、「publish.sh」の頭の方で「Makefile.linux-gcc」をコピーすることで作成している様なので、「Makefile.linux-gcc」を見て行きます。
「Makefile.linux-gcc」の中は定義っぽいのばかりで、最後に「main.mk」と言うのをインクルードしていますので、そっちを見ることに。「sqlite3.c」を作成する箇所は下記の様な記述になっていました。
「target_source」と「mksqlite3c.tcl」を参照してますね・・。
「target_source」の作成はこんな記述になってました。「mksqlite3c.tcl」は「./tool」配下にある様です。
こちらは「SRC」と「vdbe-compress.tcl」を参照しています。
「SRC」は「./src」「./ext」に含まれている全ソース(たぶん)と自動生成される(と言うかさせる)下記のファイルの全てを含む様です。
これらのルールもまた、この「main.mk」に書かれているようですね・・・。
長くなったので、つづく。
*
ズバリそのものが見つかりそうにないので、「README」に書かれていた「publish.sh」と言うのを見て行きます。すると「make sqlite3.c」と言う記述が!
ソースツリー内には「sqlite3.c」が無いため、それを作成する(Amalgamationする?)動作だと思われます。と言うことなので、「Makfile」を見て行こうと思いますが、これは、「publish.sh」の頭の方で「Makefile.linux-gcc」をコピーすることで作成している様なので、「Makefile.linux-gcc」を見て行きます。
「Makefile.linux-gcc」の中は定義っぽいのばかりで、最後に「main.mk」と言うのをインクルードしていますので、そっちを見ることに。「sqlite3.c」を作成する箇所は下記の様な記述になっていました。
sqlite3.c: target_source $(TOP)/tool/mksqlite3c.tcl tclsh $(TOP)/tool/mksqlite3c.tcl echo '#ifndef USE_SYSTEM_SQLITE' >tclsqlite3.c cat sqlite3.c >>tclsqlite3.c echo '#endif /* USE_SYSTEM_SQLITE */' >>tclsqlite3.c cat $(TOP)/src/tclsqlite.c >>tclsqlite3.c |
「target_source」と「mksqlite3c.tcl」を参照してますね・・。
「target_source」の作成はこんな記述になってました。「mksqlite3c.tcl」は「./tool」配下にある様です。
target_source: $(SRC) $(TOP)/tool/vdbe-compress.tcl rm -rf tsrc mkdir tsrc cp -f $(SRC) tsrc rm tsrc/sqlite.h.in tsrc/parse.y tclsh $(TOP)/tool/vdbe-compress.tcl |
こちらは「SRC」と「vdbe-compress.tcl」を参照しています。
「SRC」は「./src」「./ext」に含まれている全ソース(たぶん)と自動生成される(と言うかさせる)下記のファイルの全てを含む様です。
- keywordhash.h
- opcodes.c
- opcodes.h
- parse.c
- parse.h
- sqlite3.h
これらのルールもまた、この「main.mk」に書かれているようですね・・・。
長くなったので、つづく。
コメント 0