2017年12月14日

wxWidgets のクロスコンパイル (PowerPC 編)

 wxWidgets の件の続き。PowerPC は対応は諦めようかとおもっていたのだが、古い Xcode から古いコンパイラや SDK を抽出して新しい Xcode にインストールすることができるらしい。これは試してみなくては。

 使うツールはこちら。

 Clone or Download -> Download ZIP でソースをダウンロード・解凍する。xcodelegacy-master というフォルダができるので、そこに cd する。

$ cd path/to/xcodelegacy-master
$ chmod +x Xcodelegacy.sh

 下の URL から Xcode 3.2.6 と 4.6.3 をダウンロード(Apple ID 必要)。

 コンパイラと 10.5 SDK を取り出して Xcode8 にインストール。

$ ./Xcodelegacy.sh -compilers -osx105 buildpackages
$ sudo ./Xcodelegacy.sh -compilers -osx105 install

 以下のメッセージが出る。

*** Warning: /Developer/SDKs should be a symlink to /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
Check that /Developer exists, and fix /Developer/SDKs with:
 $ sudo ln -sf '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs' /Developer/SDKs

 このように対応する。指示された通り。

$ sudo mkdir /Developer
$ sudo ln -sf '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs' /Developer/SDKs

 試しに Molby プロジェクトを開いてビルドしてみた。なんと、あっさり通ってしまった! Release ビルドで "Dsymutil" 関連のエラーが出たが、デバッグシンボルを DWARF with Dsym から DWARF に変更すると通った。これで、しばらくは PowerPC 対応を継続できるな。(実行テストは相当めんどくさいけど…)

posted by toshinagata at 21:49| 日記

2017年12月13日

wxWidgets のクロスコンパイル

 wxWidgets の開発環境整備の件。調べてみると、先人がいらっしゃった。すばらしい。「Mac OSX El CapitanにwxWidgetsのwin32クロスコンパイル開発環境構築しました。」(黄昏フリーランスの日記) こちらを参考にして、うちでも開発環境を整備してみる。

 クロスコンパイラはこちらから。

 32 bits targets (2013/05/31), 64 bits targets (2013/06/22) がある。当面は、32 bits でいくことにする。

 展開して /usr/local にインストール。

$ cd path/to/Downloads
$ mkdir mingw-w32; cd mingw-w32
$ tar xvfz ../mingw-w32-bin_i686-darwin_20130531.tar.bz2
$ cd ..
$ sudo mv mingw-w32 /usr/local

 実行できることを確かめる。

$ export PATH=/usr/local/mingw-w32/bin:$PATH
$ i686-w64-mingw32-gcc -v
Using built-in specs.
COLLECT_GCC=/usr/local/mingw-w32/bin/i686-w64-mingw32-gcc
COLLECT_LTO_WRAPPER=/usr/local/mingw-w32/bin/../libexec/gcc/i686-w64-mingw32/4.9.0/lto-wrapper
Target: i686-w64-mingw32
Configured with: ../../../build/gcc/src/configure --target=i686-w64-mingw32 --prefix=/Users/nightstrike/buildbot/mw64/darwin-x86-x86/build/build/root --with-sysroot=/Users/nightstrike/buildbot/mw64/darwin-x86-x86/build/build/root --with-gnu-ld --with-gnu-as --enable-fully-dynamic-string --disable-multilib
Thread model: win32
gcc version 4.9.0 20130531 (experimental) (GCC) 

 結構古いバージョンだけど大丈夫かな。今まで MinGW 上で使っていた gcc も同じぐらいのバージョンだったから、まあいいか。

 ビルドしてみる。

$ cd path/to/wxWidgets-3.0.0
$ mkdir mswx-build; cd mswx-build
$ ../configure --host=i686-w64-mingw32 --disable-shared --enable-monolithic 2>&1 | tee configure.log
checking build system type... x86_64-apple-darwin15.6.0
checking host system type... i686-w64-mingw32
checking for --disable-gui... no
checking for --enable-monolithic... yes
...(snip)...
Configured wxWidgets 3.0.0 for `i686-w64-mingw32'

  Which GUI toolkit should wxWidgets use?                 msw
  Should wxWidgets be compiled into single library?       yes
  Should wxWidgets be linked as a shared library?         no
  Should wxWidgets support Unicode?                       yes (using wchar_t)
  What level of wxWidgets compatibility should be enabled?
                                       wxWidgets 2.6      no
                                       wxWidgets 2.8      yes
  Which libraries should wxWidgets use?
                                       STL                no
                                       jpeg               builtin
                                       png                builtin
                                       regex              builtin
                                       tiff               builtin
                                       zlib               builtin
                                       expat              builtin
                                       libmspack          no
                                       sdl                no
$ make -j 2 2>&1 | tee make.log

 2時間ぐらいかかったが、無事終了。生成したファイルは下の通り。i686-w64-minw32 がついていることに注意。

$ ls lib
libwx_mswu-3.0-i686-w64-mingw32.a	libwxregexu-3.0-i686-w64-mingw32.a
libwx_mswu_gl-3.0-i686-w64-mingw32.a	libwxscintilla-3.0-i686-w64-mingw32.a
libwxexpat-3.0-i686-w64-mingw32.a	libwxtiff-3.0-i686-w64-mingw32.a
libwxjpeg-3.0-i686-w64-mingw32.a	libwxzlib-3.0-i686-w64-mingw32.a
libwxpng-3.0-i686-w64-mingw32.a		wx
$ ls lib/wx/include
i686-w64-mingw32-msw-unicode-static-3.0

 wxWidgets のサンプルをビルドしてみた。ちゃんと動きます。VMWare 上の MinGW/MSYS でビルドしていた時と比べると、make が普通に速いのが本当に快適です。

1213-1.png

 自分のプロジェクトをビルドしてみると、undefined reference to `....' というリンクエラーが大量に出た。Makefile を調べてみると、ar, ranlibi686-w64-mingw32- がついていなくて、Mac のバージョンが呼び出されていた。そりゃエラーになるわな。要注意。

posted by toshinagata at 23:35| 日記

2017年12月10日

島村楽器・丸善名古屋店

 恒例の家族丸善ツアー。その前に、名古屋パルコに立ち寄って、家族それぞれ買い物(または冷やかし)の用事を済ませた。自分は島村楽器で、MIDIキーボードを物色。DTM の入力用に Korg MicroKey を考えていたのだが、実際触ってみると、やっぱりミニ鍵盤は辛いなと感じた。本当に音符の入力だけだったらいいんだけど、ワンフレーズと言えども「演奏」したいんだよな。フルサイズの鍵盤で、なるべくコンパクトなものを探したところ、店頭にあったものの中では Roland の A-300 Pro がよかった。ただ、幅 60 cm はやっぱりちょっとでかい。引き続き検討事項かな。

 丸善では、以下の書籍を購入。

  • 「ティンパニストかく語りき」(近藤高顯著、学研)。半分ぐらい読んだ。めっちゃ面白い。クラシックのオーケストラ曲の知識がないと、あんまり楽しめないかもしれないけど。
  • 「一人で始めるプリント基板作り」(トランジスタ技術SPECIAL No.127、CQ出版社)。実はプリント基板作りってちょっと憧れてるんですよね。個人レベルでの外注もだいぶ広まってきているようなので、そのうち挑戦したい。
  • 「もうおうちへかえりましょう」(穂村弘著、小学館文庫)。気づいたら穂村さんの本がどんどん増えている…。
  • "Matilda" (Roald Dahl, Puffin Books). ダールの翻訳書はうちにたくさんあるが、原書もぼちぼち買っている。
  • "Diary of a Wimpy Kid" (Jeff Kinney, Puffin Books). 「グレッグのダメ日記」という翻訳もあって、けっこう有名らしい。まだよく読んでないけど、アホっぽくて面白そう。

 洋書は、そのうち子供達が手にとってくれればいいな、とは思っているが、特に期待しているわけでもない。上記2冊は、内容的には少年向けだと思うけど、英文としてはわりと難しいからね。

タグ:読書 DTM
posted by toshinagata at 09:21| 日記