Date: Sat, 2 Jul 2011 20:05:12 -0700 From: Garrett Cooper <yanegomi@gmail.com> To: Ed Maste <emaste@freebsd.org> Cc: freebsd-hackers@freebsd.org, Robert Millan <rmh@debian.org> Subject: Re: [PATCH] __FreeBSD_kernel__ Message-ID: <CAGH67wQAv4Tf8HjccN2GZzgD2u1ZrORABtGehxXjeg109%2BRNWQ@mail.gmail.com> In-Reply-To: <20110703020827.GA5763@sandvine.com> References: <CAOfDtXPUxQO1zbnxh8sh%2By7g=d8QaH2svYtEQJ06L4d%2BQKG8VA@mail.gmail.com> <20110702193724.5c55a6c9@kan.dnsalias.net> <20110703020827.GA5763@sandvine.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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__. =A0If 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: > =A0 =A0 =A0 =A0builtin_define_with_int_value ("__FreeBSD__", FBSD_MAJOR);= =A0 =A0 =A0\ > >> 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 softwar= e > 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? =A0Where is it defined? 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: $ echo '' | gcc -E -xc -dM -c - 2>&1 | grep linux #define __linux 1 #define __linux__ 1 #define __gnu_linux__ 1 #define linux 1 HTH, -Garrett
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGH67wQAv4Tf8HjccN2GZzgD2u1ZrORABtGehxXjeg109%2BRNWQ>