BSD 検出
headers.h に以下のコードがある:
#ifdef WXMAC_OSX #define WXMAC 1 #define WXOSX 1 #define BSD 1 #endif #endif
私のテストでは、FreeBSD 8.1 で検出されなかった。
以下のように変更することを提案する:
#if (defined(unix) || defined(unix)) && !defined(USG) #include <sys/param.h> #endif
そして BSD の検出は以下のようにすべきである:
#ifdef BSD
これは FreeBSD Porter’s Handbook (http://www.freebsd.org/doc/en/books/porters-handbook/porting-versions.html) で推奨されている BSD 検出方法である。
この変更は既に私の CMake ツリーで実施済みである。
headers.h に以下のコードがある:
そのコードはそもそもよくないアイデアだったので、削除する。Mac 用のコードは__WXMAC_OSX__のみを使用すべきで、__WXMAC__や__WXOSX__は使わず、__BSD__の使用もやめるべきだ。
#if (defined(__unix__) || defined(unix)) && !defined(USG)
#include <sys/param.h>
#endif
これで Mac で BSD が確実に定義されるだろうか?
#if (defined(__unix__) || defined(unix)) && !defined(USG) #include <sys/param.h> #endifこれで Mac で BSD が確実に定義されるだろうか?
Mac OS X が技術的に BSD かどうかは分からないし、Mac にアクセスする環境もない。他の誰かがテストできるかもしれない。 他に Mac 固有の(BSD 以外の)特殊事情があるなら、__WXMAC_OSX__と BSD の両方を確認するか、これらを別の方法で検出する必要があるだろう。
SVN rev 130 に入っている。正しくコンパイルされるか確認してほしい。
#if (defined(__unix__) || defined(unix)) && !defined(USG)
#include <sys/param.h> // BSD定義を取得するため
#endif
#ifdef __WXMAC_OSX__
#ifndef BSD
#define BSD 1
#endif
#endif