SSブログ

amalgamationの様子をみる~その1 [SQLite]

前回の最後に上げた6つのソースの生成ルールは次の様に定義されています。

opcodes.c:	opcodes.h $(TOP)/mkopcodec.awk
	$(NAWK) -f $(TOP)/mkopcodec.awk opcodes.h >opcodes.c

opcodes.h:	parse.h $(TOP)/src/vdbe.c $(TOP)/mkopcodeh.awk
	cat parse.h $(TOP)/src/vdbe.c | \
		$(NAWK) -f $(TOP)/mkopcodeh.awk >opcodes.h

parse.h:	parse.c

parse.c:	$(TOP)/src/parse.y lemon $(TOP)/addopcodes.awk
	cp $(TOP)/src/parse.y .
	rm -f parse.h
	./lemon $(OPTS) parse.y
	mv parse.h parse.h.temp
	$(NAWK) -f $(TOP)/addopcodes.awk parse.h.temp >parse.h

sqlite3.h:	$(TOP)/src/sqlite.h.in $(TOP)/manifest.uuid $(TOP)/VERSION
	tclsh $(TOP)/tool/mksqlite3h.tcl $(TOP) >sqlite3.h

keywordhash.h:	$(TOP)/tool/mkkeywordhash.c
	$(BCC) -o mkkeywordhash $(OPTS) $(TOP)/tool/mkkeywordhash.c
	./mkkeywordhash >keywordhash.h


それぞれのソースの生成スクリプトはawkやtclで書かれている様ですね。スクリプトの中身をちらっと見てみたところ、たんに元ソースを加工するだけでなく、何らかのコードか定義を追加して行っているようです。この辺、なんでソースに含まれていないのかは分かりませんが、結合時に必要になったものを別途付けてる感じなんですかねぇ・・。

tclって、文法とかを知らないんですよねぇ・・。

最後の「keywordhash.h」は完全にプログラムで生成しているようです。なぜ、プログラムで生成する必要があるのかは、実際に出力を見ないと分かりそうにないですね。

これらのファイルについては、この辺にしておきます。


つづく。





nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

ブログを作る(無料) powered by SSブログ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。