BSD 検出

5 件のメッセージ BitcoinTalk dkaparis, サトシ・ナカモト 2010年8月11日 — 2010年8月13日
dkaparis 2010年8月11日 14:00 UTC 原文 ·

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 ツリーで実施済みである。

dkaparisの投稿(2010年8月11日 14:00 UTC)

headers.h に以下のコードがある:

そのコードはそもそもよくないアイデアだったので、削除する。Mac 用のコードは__WXMAC_OSX__のみを使用すべきで、__WXMAC__や__WXOSX__は使わず、__BSD__の使用もやめるべきだ。

#if (defined(__unix__) || defined(unix)) && !defined(USG)
#include <sys/param.h>
#endif

これで Mac で BSD が確実に定義されるだろうか?

dkaparis 2010年8月12日 08:24 UTC 原文 ·
サトシ・ナカモトの投稿(2010年8月11日 15:02 UTC)
#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
dkaparis 2010年8月13日 15:38 UTC 原文 ·

CMake のツリーに取り込んだ。Windows と FreeBSD で問題なし。