djgpp/building_on_msys2
djgpp/building_on_msys2
djgppのランタイム(開発環境)をWindowsのmsys2上でビルドしてみるための(自分用)メモ
必要なもの
- msys2(上のmingw-w64開発環境)
- mingw-w64-(i686|x86_64)-toolchainですね…
他にdjgppビルドに必要なツールがいくつかあったはずだが精査していない。bisonとtexinfoはすくなくとも必要だったはず。 - djgppのソース
- 公式配布のzipファイル(djlsr205.zip, djtzs205.zip, djcrx205.zip)、公式cvsサーバから取ってくる、など。非公式ミラーをgit cloneするのがいちばん簡単かもしれず。
- Windows用のdjgpp gccクロスコンパイラ
- ここからmingw版のバイナリ取ってくる。msys2に突っ込んであるmingw-w64のgccとの相性(?)的なことを考えると、standalone版が無難な気がする。gccのバージョンはたぶんどれでもいい(新しすぎると想定外の警告やエラーが出がち)
だいたいの手順
要点を先に書いておくと
- msys2のmakeじゃなくてmingw-w64側のmingw32-makeを使う
- make時に CROSS_BUILD=1 を明示する必要がある
- 一部のビルドツールはソースの修正が必要
-
djgppクロスコンパイラのインストール
適当に取ってきたdjgpp-mingw-*-standalone.zipをmsys2のルートディレクトリに展開。自分は D:\MSYS64 にmsys2をつっこんでいたのでそこでdjgpp-mingw-gcc830-standalone.zipをunzipした。バージョン8.30を選んだ理由は…なんとなく…。
msys2のターミナル上から /djgpp/bin/i586-pc-msdosdjgpp-gcc -v とか打ち込んでクロスコンパイラが起動するか確認しておく。 - djgppソース展開
msys2上ならgit cloneがいちばん楽なのでは。 - ソース修正
パッチ:build_djgpp-cvs_on_msys2.diff
(改行のCRLF→LFはどこまで必要なのか正確に確認していない) - (srcディレクトリ中で)ビルド
$ mingw32-make -C src CROSS_BUILD=1 CROSS_PREFIX=/djgpp/bin/i586-pc-msdosdjgpp-
CROSS_PREFIXでコンパイラへのフルパス指定すれば/djgpp/binにパスを通す必要はない。
なおtimezoneの下はビルドに失敗する(標準のmakefile中でもエラー無視するようになっている)。 mingwホスト向けのソース修正はけっこうめんどくさいと思う(cygwinならいけるのでは…)。