Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 3 Jul 2011 10:35:31 -0400
From:      Alexander Kabaev <kabaev@gmail.com>
To:        Garrett Cooper <yanegomi@gmail.com>
Cc:        freebsd-hackers@freebsd.org, Robert, Ed Maste <emaste@freebsd.org>, Millan <rmh@debian.org>
Subject:   Re: [PATCH] __FreeBSD_kernel__
Message-ID:  <20110703103531.4a553271@kan.dnsalias.net>
In-Reply-To: <CAGH67wQAv4Tf8HjccN2GZzgD2u1ZrORABtGehxXjeg109%2BRNWQ@mail.gmail.com>
References:  <CAOfDtXPUxQO1zbnxh8sh%2By7g=d8QaH2svYtEQJ06L4d%2BQKG8VA@mail.gmail.com> <20110702193724.5c55a6c9@kan.dnsalias.net> <20110703020827.GA5763@sandvine.com> <CAGH67wQAv4Tf8HjccN2GZzgD2u1ZrORABtGehxXjeg109%2BRNWQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--Sig_/iuc1qVM5aE7B20Se6WzXTHr
Content-Type: text/plain; charset=KOI8-R
Content-Transfer-Encoding: quoted-printable

On Sat, 2 Jul 2011 20:05:12 -0700
Garrett Cooper <yanegomi@gmail.com> wrote:

> On Sat, Jul 2, 2011 at 7:08 PM, Ed Maste <emaste@freebsd.org> wrote:
> > On Sat, Jul 02, 2011 at 07:37:24PM -0400, Alexander Kabaev wrote:
> >
> >> On Sat, 2 Jul 2011 17:41:03 +0200
> >> Robert Millan <rmh@debian.org> wrote:
> >>
> >> > My request is that FreeBSD also defines __FreeBSD_kernel__. =9AIf
> >> > this happens, life would be made a bit easier on both sides, as
> >> > it'd be more natural for porters of either system to support
> >> > both using a single macro [1].
> >
> > I think this is a good idea, especially if it means that a single
> > change can make it into upstream projects to support both FreeBSD
> > and Debian kFreeBSD.
> >
> >> I do not think this belongs in GCC at all. You should already have
> >> a defined symbol to identify your OS and that should be used in
> >> cases where it matters.
> >
> > I suspect the proposed patch put it in GCC based on the fact that we
> > already have __FreeBSD__ in contrib/gcc/config/freebsd-spec.h:
> > =9A =9A =9A =9Abuiltin_define_with_int_value ("__FreeBSD__", FBSD_MAJOR=
);
> > =9A =9A\
> >
> >> Alternatively, you should provide the symbol in
> >> similar way in which we provide __FreeBSD_version, through
> >> well-known header like sys/param.h and not pollute GCC.
> >
> > I suspect this is probably a reasonable alternative, but may mean
> > software will have to pick up an additional #include.
> >
> > Out of curiosity, what is the canonical way for software to
> > identify a Linux kernel -- __linux__ or some variant? =9AWhere is it
> > defined?
>=20
> linux is most often reliably defined value based on my personal
> experience and it's defined in gcc [look for
> `builtin_define.*("linux");' (note: this is a regexp..)]. Example:
>=20
> $ echo '' | gcc -E -xc -dM -c - 2>&1 | grep linux
> #define __linux 1
> #define __linux__ 1
> #define __gnu_linux__ 1
> #define linux 1
>=20
> HTH,
> -Garrett

__linux__ is exactly what __FreeBSD__ is and dies not identify kernel
but rather Linux as whole OS, whatever that might be these days.

There does not appear to be an universal macro that identifies
environment as using Linux kernel regardless of the rest of components
used (say, to identify Android and Ubuntu or something embedded with
ucLibc as running Linux kernel with different userland
implementations).
--=20
Alexander Kabaev

--Sig_/iuc1qVM5aE7B20Se6WzXTHr
Content-Type: application/pgp-signature; name=signature.asc
Content-Disposition: attachment; filename=signature.asc

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.17 (FreeBSD)

iD8DBQFOEH43Q6z1jMm+XZYRAl8ZAKDJtBR1I9io5uBJ8Cwb6gu7maPwaQCfcWu+
3xGLMqKLpOoGKj+9LJqNEHI=
=sPWw
-----END PGP SIGNATURE-----

--Sig_/iuc1qVM5aE7B20Se6WzXTHr--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110703103531.4a553271>