intとlongのサイズ

x86Solaris環境でApacheのmakeをしているとエラー。なにやらintとlongのサイズが同じでswitchのcase文が同一条件になっているみたい。

 case; sizeof(int)
 (中略)
 case: sizeof(long)

実際には

typedef int apr_int32_t ;
typedef int apr_int64_t ;

sizeof(apr_int32_t) 

ってかかれていましたが。32bitモードでコンパイルすると、両方とも4になるんですね。64bitモードでコンパイルするとintは4,longは8になります。
へぇ。ということで

export CFLAGS='-m64'
export LDFLAGS='-64'

と指定してコンパイル、リンク。
このSolaris環境32bitと64bitの両モードが混在してしまって、ちょっとややこしいことになっちまっています。