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で推奨されているBSD検出方法である。
この変更は既に私のCMakeツリーで実施済みである。
Quote from: dkaparis on August 11, 2010, 11:00:16 PM
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で推奨されているBSD検出方法である。
この変更は既に私のCMakeツリーで実施済みである。
#ifdef WXMAC_OSX #define WXMAC 1 #define WXOSX 1 #define BSD 1 #endif #endif
そのコードはそもそもよくないアイデアだったので、削除する。Mac用のコードは__WXMAC_OSX__のみを使用すべきで、__WXMAC__や__WXOSX__は使わず、__BSD__の使用もやめるべきだ。
Quote #if (defined(unix) || defined(unix)) && !defined(USG) #include <sys/param.h> #endif
これでMacでBSDが確実に定義されるだろうか?
Quote from: satoshi on August 12, 2010, 12:02:06 AM
Quote from: dkaparis on August 11, 2010, 11:00:16 PM
headers.hにこのコードがある:
#ifdef WXMAC_OSX #define WXMAC 1 #define WXOSX 1 #define BSD 1 #endif #endif
そのコードはそもそもよくないアイデアだったので、削除する。Mac用のコードは__WXMAC_OSX__のみを使用すべきで、__WXMAC__や__WXOSX__は使わず、__BSD__の使用もやめるべきだ。
Quote #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に入っている。正しくコンパイルされるか確認してほしい。
Code:#if (defined(unix) || defined(unix)) && !defined(USG) #include <sys/param.h> // BSD定義を取得するため #endif #ifdef WXMAC_OSX #ifndef BSD #define BSD 1 #endif #endif