<div dir="ltr">Is there any value in having an LLDB_HOST_XXX set of macros such as the following:<div><br></div><div>LLDB_HOST_APPLE</div><div>LLDB_HOST_WIN32</div><div>LLDB_HOST_MINGW</div><div>LLDB_HOST_LINUX</div><div>LLDB_HOST_BSD</div><div><br></div><div>The last one would translate to __FreeBSD__ || __FreeBSD_kernel__ || __OpenBSD__ || __NetBSD__</div><div><br></div><div>In lldb/Host/Config.h, we use the presence of any of these 4 things to include lldb/Host/freebsd/Config.h.  But then in most other places, we either only check for __FreeBSD__ or only check for __FreeBSD_kernel__.  Since the platforms are similar, it seems like *most of the time* you just want to check for all 4, and checking for some subset of those would be the exception.</div><div><br></div><div>For example, in my previous HostThread refactoring changelist, I created this HostThreadFreeBSD class.  That class isn't going to be compiled on OpenBSD or NetBSD though (at least on the CMake build, which I know you don't use, but still).  So that seems like a bug.  Do you agree that more often than not, when we check for FreeBSD we want to check for all of the BSD variants?  Or am I wrong there?</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 12, 2014 at 10:14 AM, Ed Maste <span dir="ltr"><<a href="mailto:emaste@freebsd.org" target="_blank">emaste@freebsd.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 12 September 2014 12:59, Zachary Turner <<a href="mailto:zturner@google.com">zturner@google.com</a>> wrote:<br>
> The important thing seems to be whether glibc implies linux, not the other<br>
> way around.<br>
<br>
</span>It doesn't -- Debian k/FreeBSD has __GLIBC__ and __FreeBSD_kernel__,<br>
and not __linux__.<br>
<span class=""><br>
> The issue is that all of our CMake decisions are based on OS platform.  If I<br>
> want to conditionally compile an entire file based on one of these<br>
> conditions, I need to translate it into something that fits well into the<br>
> CMake build.<br>
<br>
</span>That should be fine, although in some cases there won't be a mapping<br>
to a single OS if multiple macros are used.<br>
<br>
An OS to macro map would include, for example:<br>
<br>
FreeBSD: __FreeBSD__, __FreeBSD_kernel__<br>
Linux distros: __linux__, __GLIBC__<br>
kFreeBSD: __GLIBC__, __FreeBSD_kernel__<br>
<br>
The kFreeBSD project needs to use the FreeBSD kernel's debugging<br>
interface (e.g., the ptrace syscall and constants) and glibc's<br>
userland interfaces (e.g., setting thread names).<br>
</blockquote></div><br></div>