cmake は、普通に使ってる分には簡単で良いんですが、
xv6 の cross compile build に使う
さすがに、いろいろ混迷。mkfs は普通のコマンドだったりするし。
cross compiler の指定とかは cmake コマンドライン オプションで渡すのが良いらしい。CMakeList.txt の実装依存が少し減るので。
まあ、でも、あまり意味はないんですけどね。
usr command の compiler option は kernel のとは別。
さらに、link の command line は、さらに特別。
なので、これらすべてを生成する perl script を書いて、cmake を呼び出すことに。
で、だいたい動いたんですが、
user command を含む fs.img を作って、それを kernel にlinkする方式
なんだけど、kernel が先に作られてしまう。add_subdirectory した sub project への dependency はどうするの?
なんですが、生成された Makefile を見ると、top の Makefileに
fs.img : ....
とか書いてある。make fs.img とかすると作りにいく。ってことは、
add_custom_command {
DEPENDS fs.img
...
で良いらしい。add で定義された TARGET は、top level の Makefile に全部定義されるわけね。
あと、BINARY_DIR とかをちゃんと参照してなくて、off the shelf な build でない。つまり、
mkdir build
(cd build ; cmake ../xv6-source)
みたいな使い方ができないみたい。cmake . だけ。
しかし、うっかり cmake 使ってしまいましたが、それが正解だったかどうかは... 疲れる〜
No comments:
Post a Comment