提案 †
monalibc作者のshadowさんと nidalibcの作者さんで、nidalibcをmonalibcに取り込んでもらえないでしょうか?
nidalibcのReadMeを読むと、そもそもnidalibcがマージされたものっぽいのでお二人にかかれば結構簡単にできたりしないかなぁと
取り込みに必要なサポートはひげぽんが喜んでさせていただきます。
メリット †
monalibcが拡充されて、ビルドできるものが増えるでしょう。
Monaにおけるlibc †
過去の経緯はlibcにまとまっています。
現状はmonalibc がMonaのlibcとして採用されています。
polさんによるtmpmonalibcはshadowさんによりmonalibに取り込まれました。
Monalibcにnidalibc関数群を取り込む計画 †
- nidalibcに、monalibcのみにある関数を取り込んでmonalibcとする。
- monalibcに、nidalibcのみにある関数を取り込む。
- どっちにします?後者が手っ取り早いかな--shadow
- 環境面の構築の手間を省けるので後者が良いという意見にさんせい!-- ひげぽん
Monalibcにnidalibcを取り込む際にディレクトリ構造をどうするか? †
- 今のnidalibcはほぼ関数ごとにソースを分割してあるが、Monalibcはstdioなどの機能別に一塊になっている。
- Monalibcのソースを分割するか、nidalibcの関数を一塊にするべきかのどちらかで迷っている。
- ひげぽんさん、shadowさんご意見貰えないでしょか。 -- Yume
- nidalibcが関数ごとにソースを分割している理由ですが、リンク時に本当に必要なものだけがリンクされるような配慮によるものであるという前提で話を進めます。
- 上記理由であれば、monalibcのソース分割をするメリットがあると思うので分割に1票。
- そうすれば足りないものをソースファイル単位で nidalibcから持ってくればよいので作業も多少楽かと。shadowさんはいかがですか? -- ひげぽん
- 最初は、関数単独ソースコードと塊ソースコードとが混ざってていいと思います。追加の分だけ単独ソースで入れていき、コード修正(リファクタリング等)しようと思った奴を単独ソースコードに分割すればいいです。動かない関数たくさんありますし(w--shadow
- 最初はtmpmonalibcでうまく取り込めなかったmain周りくらいしか手のかかるものはなく、それ以外は、そのまま持ってくればいいはず。次に、きちんと実装されてないもので、nidalibcにあるものを塊ソースコードから消して、単独ソースコードを持ってくればいいです。単純作業なので自分がやりますよ。--shadow
- じゃあ、shadowさんお願いします。 -- Yume
計画2 nidalibcが2代目monalibcを襲名 †
- monalibcにnidalibcを取り込んでて気付いたのですが、構成の違いと実装の重複から、結局、上の単純作業部分がかなり無駄になりそうです。-- shadow
- nidalibcでそのまま置き換える方向で行きませんか?ブランチきってあるので、monalibc部分をnidalibcで置き換えて、coreがビルドできるまでをやる。最近、coreをいじってる人はいないので、一気に置き換えてしまった方が早そうです。-- shadow
状況 †
- monalibcを全削除して、nidalibcソースを展開、Makefileを書き換えまで完了 -- shadow
- monalibcはできても、coreのビルドはできず(何--shadow
- どうやら、monapi/stringとぶつかっている。monalibcの方を削る。--shadow
- logprintf完了。vsprintfに取り掛かり。--shadow
- monalibc独自関数群をmonalibc/private/に作成。ビルドできるまで、あと少し--shadow
- coreのビルドまでできた。いくつか関数なくなってるけど気にしない(何--shadow
- -nostdinc追加。include/monalibc/のヘッダ内は、<monalibc/xxx.h>とするように変更。--shadow
- file_serverが参照しているfat_write関連ソースがstdincを必要としてるので、file_serverのみ、Makefileで、INCLUDE += -I$(INCDIR)/monalibcとした。-- shadow
- これから、消えてる関数の復元します。--shadow
merge_libcのエラー1 †
/usr/bin/g++ -c -o main.o -nostdlib -UWIN32 -U_WIN32 -Wall -fno-builtin -O3 -DMO
NA -DDEBUG_BUILD -DHOST_CYGWIN -fno-exceptions -fno-rtti -I/cygdrive/c/higepon/t
mp/merge_monalibc/include main.cpp
In file included from PEParser.h:5,
from main.cpp:10:
pe.h:6: error: conflicting types for `typedef unsigned int uint32_t'
/usr/include/stdint.h:28: error: previous declaration as `typedef long unsigned
int uint32_t'
make[1]: *** [main.o] Error 1
make[1]: Leaving directory `/cygdrive/c/higepon/tmp/merge_monalibc/core/pe_serve
コメント †
コメントはありません。 コメント/提案/libc?