<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>I found Compiler.i3 recently.<BR><BR>I had been writing Quake code like:<BR>
 <BR>
if equal ($OS, "Windows_NT")<BR>
 <BR>
and:<BR>
 <BR>
if equal (SL, "/")<BR>
 <BR>
I propose that the data in Compiler.i3 be exposed to Quake with variable names something like:<BR><BR>
HOST -- ALPHA_OSF, NT386, LINUXLIBC6, AMD64_DARWIN, etc.<BR>
HOST_OSTYPE -- POSIX, WIN32<BR>
/maybe/ booleans thereof:<BR>
  HOST_IS_POSIX <BR>
  HOST_IS_WIN32 <BR>
 <BR>
and /possibly/ others:<BR>
HOST_GNU_PLATFORM  -- maybe needed, maybe not -- currently m3makefile maps from HOST, and the config files have unused declarations for the target.<BR>
HOST_WORDSIZE -- shouldn't be relevant<BR>
 <BR>
I /speculate/ as well that the following should be introduced:<BR>
TARGET_ARCHITECTURE -- AMD64, I386, PPC (Compiler.i3 already separates this out) <BR>
HOST_ARCHITECTURE<BR>
TARGET_OS -- SOLARIS (SOL?), NT, DARWIN (MACOSX? Too late.), LINUX, OSF, VMS, HPUX, FREEBSD, OPENBSD, NETBSD (FBSD, OBSD, NBSD?)<BR>
HOST_OS<BR>
 <BR>
And then, /maybe/ ultimately, the full calculus I have described:<BR>
 TARGET_C_LIBRARY -- native, cygwin, ms (multiple versions?)  <BR>
 TARGET_C_COMPILER -- gnu, sun, ms, dmars, mwerks, borland, watcom, darwin  <BR>
 TARGET_C_LINKER -- similar to previous  <BR>
 TARGET_WINDOW_LIBRARY -- xwin, mswin <BR>
 TARGET_THREAD_LIBRARY -- pthreads, alarmthreads, nt <BR>
 <BR>
or at least just the very first two:<BR>
  HOST -- ALPHA_OSF, NT386, LINUXLIBC6, AMD64_DARWIN, etc.<BR>
  HOST_OSTYPE -- POSIX, WIN32<BR>
 <BR>
This is super easy, like two lines of code in m3quake to expose the data in Compiler.i3.<BR>
 <BR>
Also, related, all the places that check Pathname.Join(a, b) == a/b or Epoch = 0, should use Compiler.OSType instead, or whatever it is. I'd have to check if Compiler.i3 puts anything in the .i3 vs. the .m3, if in the .m3, that could be slower, but easily fixed too.<BR>
 <BR>
Oh, and maybe cm3 --print-var HOST.<BR>
gcc has all those useful --print flags.<BR>
Thus, all the uname stuff in sysinfo could go away, you just default to what the compiler runs on.<BR>
You'd override it for cross builds with -D on the command line or a config file as usual (ie: the Quake variable would lose its read-onlyness, possibly taking on a new special form of "write-once").<BR>
One downside is that, as written, the config files are more readable and self-documenting by starting with the important settings up front. Whatever is buried in cm3 is more hidden from users, good and bad.<BR>
 <BR>
 - Jay<BR></body>
</html>