Satoshi Forum Archive
Thread #0178

BSD detection

dkaparis2010-08-11T23:00:16Z

There is this piece of code in headers.h:
#ifdef __WXMAC_OSX__
#define __WXMAC__ 1
#define __WXOSX__ 1
#define __BSD__ 1
#endif
#endif
In my testing it's not caught on FreeBSD 8.1
I propose it be changed to:
#if (defined(__unix__) || defined(unix)) && !defined(USG)
#include <sys/param.h>
#endif
And then checks for BSD should be
#ifdef BSD
This is the recommended way of detecting BSD in the FreeBSD Porter's Handbook (http://www.freebsd.org/doc/en/books/porters-handbook/porting-versions.html).
This change is already done in my CMake tree.

Original message

satoshi2010-08-12T00:02:06Z

Quote from: dkaparis on August 11, 2010, 11:00:16 PM (https://bitcointalk.org/index.php?topic=790.msg8807#msg8807)

There is this piece of code in headers.h:
#ifdef __WXMAC_OSX__
#define __WXMAC__ 1
#define __WXOSX__ 1
#define __BSD__ 1
#endif
#endif

That code was a bad idea anyway, I'm deleting it. Any Mac code should only use __WXMAC_OSX__, not __WXMAC__ or __WXOSX__, and we should stop using __BSD__.

Quote

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

Will that definitely cause BSD to be defined on Mac?

Original message

dkaparis2010-08-12T08:24:37Z

Quote from: satoshi on August 12, 2010, 12:02:06 AM (https://bitcointalk.org/index.php?topic=790.msg8814#msg8814)

Quote

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

Will that definitely cause BSD to be defined on Mac?

Don't know if Mac OS X is technically a BSD and I don't have access to a Mac, maybe someone else may test it.
If there are other Mac (and not BSD) specialties, then we'd need to check both for __WXMAC_OSX__ and BSD or detect these in some other way altogether.

Original message

satoshi2010-08-12T21:14:20Z

This is in SVN rev 130. Check that it compiles right.

Code:

#if (defined(__unix__) || defined(unix)) && !defined(USG)
#include <sys/param.h> // to get BSD define
#endif
#ifdef __WXMAC_OSX__
#ifndef BSD
#define BSD 1
#endif
#endif

Original message