Gauche:Windows/MinGW-w64
試行錯誤中の部分もありますが、メモを残しておきます。
MinGW-w64 は、本家の MinGW.org から分岐した開発環境で、64bit/32bit 向けの開発が可能とのことです。
動作確認は Windows 8.1 (64bit) で行いました。
hamayama(2016/01/10 10:55:44 UTC)(2016/01/12 13:34:48 UTC)(2016/01/13 04:55:08 UTC)
(2016/01/14 05:40:18 UTC)(2016/05/29 11:22:41 UTC)(2016/10/11 12:02:58 UTC)
(2017/05/06 12:41:46 UTC)
MSYS2/MinGW-w64 (64bit/32bit) 開発環境のインストール
https://gist.github.com/Hamayama/eb4b4824ada3ac71beee0c9bb5fa546d
Gauche のビルド
https://gist.github.com/Hamayama/6666e5d2c8d5167d22f7
開発環境の検出
拡張ライブラリの作成等で、開発環境の検出が必要な場合には、以下の方法が使用できます。
- シェルスクリプト内
環境変数 MSYSTEM の値で判別する MINGW64 ==> MSYS2/MinGW-w64 (64bit) MINGW32 ==> MSYS2/MinGW-w64 (32bit) なし ==> MinGW.org (32bitのみ)
- C言語のソース内
シンボルが定義されているかどうかで判別する __MINGW32__ ==> MSYS2/MinGW-w64 (64bit/32bit), MinGW.org (32bitのみ) __MINGW64_VERSION_MAJOR ==> MSYS2/MinGW-w64 (64bit/32bit) __MINGW64__ ==> MSYS2/MinGW-w64 (64bit)
- configure.ac 内
$target の値で判別する x86_64-w64-mingw32 ==> MSYS2/MinGW-w64 (64bit) i686-w64-mingw32 ==> MSYS2/MinGW-w64 (32bit) i686-pc-mingw32 ==> MinGW.org (32bitのみ)
(参考URL : https://github.com/shirok/Gauche/pull/283 )
Wixインストーラ関連
Gauche のソースの winnt/wix フォルダには、Windows版のインストーラ作成のためのファイルが格納されています。
インストーラの作成には、Wix というツールを使用します。
(参考URL : https://github.com/shirok/Gauche/tree/master/winnt/wix
http://wixtoolset.org/ )
- wxs ファイル内の ProgramFilesFolder を ProgramFiles64Folder に切り換えて、
candle コマンドのオプションに -arch x64 を付けることで、
64bit版のインストーラを作成できます。
(Gauche のHEADでは対応済みです)
- また、heat コマンドで 64bit 版のファイルを検索するとエラーが出るため、
`-sreg` オプションを追加する必要があります。
(Gauche のHEADでは対応済みです)
- 64bit版のインストーラは、デフォルトで、
c:\Program Files
の下にインストールを行います( (x86) が付きません )。
(candle コマンドに -arch x64 オプションを付けた場合には、
wxs ファイル内で、ProgramFilesFolder を指定するとエラーになる。
逆に、candle コマンドに -arch x64 オプションを付けなかった場合には、
wxs ファイル内で、ProgramFiles64Folder を指定するとエラーになる。
したがって基本的には、64bit版と32bit版では、インストール先のデフォルトは異なることになる。
ただし、これらの標準のフォルダ指定をやめて、直接パスを指定するようにすれば、
任意のフォルダをデフォルトにできるのかもしれない。
(参考URL : http://d.hatena.ne.jp/torutk/20110529/p1
http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Installing-outside-ProgramFilesFolder-td7581537.html ))
- 32bit版のインストールとの共存はできないので、事前にアンインストールが必要です。
(Gaucheのフォルダごと取っておいて使い分けることは可能です)
- 動作を確認した Wix のバージョンは、v3.10.1 (Stable) です。
その他
- 32bitと64bitの成果物の混在には注意が必要です。
(例えば、32bitのexeから、64bitのdllを呼び出すとエラーになります)