ruby-1.9.2-p180のext/tk

投稿日: Leave a comment

いつだかにActiveTclを8.5.9にアップデートしてからRuby-1.9.2-p180をビルドし直したらext/tkのコンパイルに失敗していたことに最近気づいた。

昨日の夜からいろいろ調べたら、どうやら要因が2個あるっぽいことがわかった。

一つ目は、ActiveTcl側の変更でextconf.rb でのライブラリチェックに失敗していたこと。二つ目は、同じActiveTcl側の変更でVC++2010のヘッダーでdefineの競合がおきていたこと。

どちらも、C:\Tcl\lib\tclConfig.sh にある「-Dintptr_t=int -Duintptr_t=unsigned\ int」が悪さをしているよう。そういう意味では根本は1つか。

一つ目の方は、ここのパッチをあてる。ただし、そのままでは通らないので少し修正必要。要は途中に半角スペースのある「-Duintptr_t=unsigned\ int」をそのままコマンドラインオプションで指定するのではなくヘッダーファイルで指定するようにする変更。

2つ目の方は、c:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.hの以下の部分。

#ifndef _INTPTR_T_DEFINED
#ifdef  _WIN64
typedef __int64             intptr_t;
#else
typedef _W64 int            intptr_t;
#endif
#define _INTPTR_T_DEFINED
#endif

#ifndef _UINTPTR_T_DEFINED
#ifdef  _WIN64
typedef unsigned __int64    uintptr_t;
#else
typedef _W64 unsigned int   uintptr_t;
#endif
#define _UINTPTR_T_DEFINED
#endif

さっきの-Dで定義済みだとtypedefで同じ名前の型を定義することになってしまうので、とりあえずtclConfig.shに「-D_INTPTR_T_DEFINED=1 -D_UINTPTR_T=1」を追加。

これで無事コンパイルが通った。めでたしめでたし。

ディズニーシー

投稿日: 2 Comments

TDSに行ってきた。

梅雨の晴れ間ということもあってか、かなりの混雑。いつもの駐車場は満車で、ちょっと離れたR7に回された。

パーク内でふとバラが咲いているのを発見。色合いからしておそらくディズニーランドローズ。望遠レンズを付けていたので↓の写真は花だけ切り出したけど、引いた写真も撮っておきたかったくらい見ごたえがあった。

Disneyland rose in TDS
TDS, D80, AT-X M100 (2011/6/4)