1,2枚目はPC-98エミュレーションモードに入ったこと、3,4枚目は従来からDOSBoxの機能であるPC-DOSエミュレーションを示しています。 まあしかしDOSBoxの設定方法ともだいぶ違うようでPC-98の使いかたが全然わからん。 プロジェクトのウェブサイトはこちら、でソースコードはこちら DOSBox-X release 0.82.5 2018-04-18 23:51。 こちらのサイトでは Mac 用のバイナリも配布されていますが、おそらく Mountain Lion はサポート されておらず動きませんでした。そこで自前でビルドする必要があります。 ということで以下の通りにコンパイルできました。それでも大きな変更なく自前でビルドするだけでちゃんと動くのは大したもんだなあ。
ビルドにあたっては、配布されたソースコードの
src/dos/drive_local.cpp
の前処理部をじゃっかん書き足す必要がある。そのパッチを以下に示します:
この変更がない場合,--- drive_local.cpp.orig 2018-04-20 21:15:06.000000000 +0900 +++ drive_local.cpp 2018-04-20 22:04:48.000000000 +0900 @@ -31,6 +31,9 @@ #include "inout.h" #ifndef WIN32 #include <utime.h> +# if defined(__APPLE__) || defined(__MACH__) +# include <sys/syslimits.h> +# endif #else #include <sys/utime.h> #include <sys/locking.h>
src/dos/drive_local.cpp
で MAX_PATH
が定義されていない、といってコンパイルが途中で止まる。
MAX_PATH
は OS が受容できるパスの長さの最大値を示すのかもしれませんが、 Mountain Lion の場合、この値は /usr/include
にある sys/syslimits.h
で定義されたマクロ識別子 PATH_MAX
が必要です。
上記の src/dos/drive_local.cpp
では MAX_PATH
の値が PATH_MAX
の値だと定められていることによります。上記の変更前の状態では Windows (32bit版) でないかどうか、の条件分岐しかなく、 Windows でないがかつ Mountain Lion の場合にも utime.h
を読みに行くのでしょう。しかしすくなくとも /usr/include にそんな定義は sys/syslimits.h
にしかなかった。
これはたぶん Linux だけが念頭にある話なんでしょうか。※注記 なお、これはポーティングには違いないですがベストプラクティスとも思えないのでまあバッドノウハウの類なんじゃないでしょうか。ただし現時点でとくに不具合はありません。
そこで適用したコマンドは以下のとおり、ただしこれは上記パッチを当ててからの話:
フラグでヘッダファイルのインクルード先をやたら指定しているので要らないやつがあるかもしれんのですが、$ ./autogen.sh $ CFLAGS='-I/usr/include -I/opt/X11/include -I/opt/local/include'\ CPPFLAGS='-I/usr/include -I/opt/X11/include -I/opt/local/include'\ CC=gcc-mp-5 CXX=g++-mp-5 ./configure --disable-sdl2 $ make -j3 $ make install
/usr/include
は誰でも要るはずです。
ただし /opt/X11
は XQuartz だけが使用しておりもしかしたら要らんかもしれず(ここらへんはよくわかってない)、また /opt/local
はMacPortsが使用しているために俺の環境ではやはり外せないわけですが、これを手で与えるのではなくて自動にできんものかしらね。
あとは、俺の環境では SDL2 が共存しているので SDL1.2 の使用を明示することが必要でした (現状ではSDL2はサポートしてないとかREADMEとかINSTALLのファイルに説明してあるので)。とまあこのようにやると最初に掲げた画面が得られます。人によっては足りないライブラリがあると
make
に言われるかもしれません、俺の場合は xkbfile
がないと言われたので、 MacPorts で xorg-libxkbfile
をインストールしたら直ちに解決できました。
0 件のコメント:
コメントを投稿