Version Identifiers for Platforms / Architectures not supported by DMD
Alex Rønne Petersen
xtzgzorex at gmail.com
Mon Nov 7 02:57:16 PST 2011
On 07-11-2011 01:17, Walter Bright wrote:
> On 11/6/2011 6:40 AM, Michel Fortin wrote:
> > On 2011-11-06 04:04:22 +0000, Walter Bright
> <newshound2 at digitalmars.com> said:
> >
> >> On 11/5/2011 2:07 PM, Jonathan M Davis wrote:
> >>> dmd's version identifiers are annoyingly variable (e.g. linux is
> camelcased,
> >>> whereas Windows is Pascal-cased and OSX is all uppercase).
> >>
> >> What they do is follow the casing and spelling of the pre-defined
> macros of
> >> the local C compiler.
> >
> > I find this statement puzzling. According to
> > <http://predef.sourceforge.net/preos.html>:
> >
> > * There's no OSX macro on OS X, just __APPLE__ and __MACH__.
> > * There's no Solaris macro on Solaris, only 'sun' and '__sun'.
> > * There's no Windows/Win32/Win64 macro on Windows, there's
> > __WINDOWS__/_WIN32/_WIN64.
> > * There's no FreeBSD macro on FreeBSD, instead you have __FreeBSD__.
> >
> > Beside linux, I don't see any of the predefined version identifiers
> > corresponding to the platform's standard C macros.
>
> Based on my research:
>
> _WIN32 Microsoft NT, Windows 95, Windows 98, Win32s, Windows 2000
> _WIN64 Windows for AMD64
> linux Linux
> __APPLE__ Mac OSX
> __FreeBSD__ FreeBSD
> __OpenBSD__ OpenBSD
> __sun&&__SVR4 Solaris, OpenSolaris (yes, both macros are necessary)
>
> Hence FreeBSD rather than freebsd or Freebsd. The underscores just
> looked awful :-) and are unnecessary for D since the version tags are in
> a separate namespace.
>
> Had to come up with one for Solaris.
>
> APPLE is hopelessly generic, considering Apple has produced many
> operating systems.
>
> __WINDOWS__ is not what DMC uses. See
>
> http://www.digitalmars.com/ctg/predefined.html
>
> Some people have protested that I have "trivialized" Linux by using
> "linux", but I am perplexed why that's ok for gcc but not for D.
My only actual complaint here would be the casing of the 'l'. The
version identifier itself seems fine to me.
>
> And finally, there is no such thing as a "sane" version identifier
> scheme. For one thing, OS vendors do not pick sane names. OS/2 is not an
> identifier. Neither is OS X. Nor is GNU/Linux. Nor do the OS vendors
> pick any sane identifiers for their own systems (look at what Sun did).
>
> Even if someone comes up with a naming scheme for D that most agree is
> sane, intuitive, and attractive, switching to it would again silently
> break a large swath of existing D code. D cannot advance by constantly
> breaking things.
- Alex
More information about the Digitalmars-d
mailing list