ビットコイン・インスティテュート

BSD検出

5件のメッセージ BitcoinTalk dkaparis, サトシ・ナカモト 2010年8月11日 — 2010年8月13日
dkaparis 2010年8月11日23: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日23:00 UTC)

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

#ifdef __WXMAC_OSX__
#define __WXMAC__ 1
#define __WXOSX__ 1
#define __BSD__ 1
#endif
#endif

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

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

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

dkaparis 2010年8月12日08:24 UTC
サトシ・ナカモトの投稿(2010年8月12日00: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で問題なし。