<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>I just realized...<br><br>As I said, there are several variables.<br><br><br>"platform" is a big tuple<br><br><br>architecture -- x86, ppc, sparc<br>OS -- NT, Linux, Darwin, Solaris<br>ostype -- win32, posix<br>  This probably not -- embodied instead by C runtime and threading model<br>C compiler -- Visual C++, gcc, Sun, Watcom, DigitalMars, Metrowerks<br>    and version thereof<br>Linker -- Visual C++, gcc/ld, <br>C runtime -- msvc*, linuxlibc6, cygwin (newline)<br>executable format -- aout, elf, pe (witness the three Linux x86 targets;<br>  yes, I know aout is dead and the elf target probably also)<br>oh..maybe object file format -- coff, elf, mach-o<br>Threading model -- vtalarm, pthreads, Win32<br>backend -- integrated, gcc, C generating<br>Windows library -- X Windows, Windows<br>naming convention -- Unix/Posix, Windows, grumpy Unix<br><br><br>Many combinations make sense and work -- two threading models on most systems.<br>Many combinations do not -- Win32 threads on most. Maybe call this "native" threads.<br>Many combinations interoperate -- gcc and Visual C++ output the same .obj file format<br>But you don't want to mix jmpbuf size with the wrong C runtime<br>Naming conventions are sometimes arbitrary, sometimes not, depending on<br>if the linker is given precise paths or like on Mac it probes (is that how a bunch work?).<br><br>Each variable could contribute a little bit to BUILD_DIR<br>OS -- n, l, d, s<br>  This would probably come first and be spelled out.<br>   NT, Linux, Solaris<br>architecture -- x, p, s, mi (mips), a (alpha), m6 (m68k or just 6), a (amd64)<br>   This might be longer too -- x86, PPC, SPARC<br>C compiler -- ms6, ms7,ms71, ms8, g2, g3, g4, mw6, mw7, mw8, w<br>Linker -- g, m<br>C runtime -- m, g (glibc), c<br>Executable format -- a, e, p (or w for Windows), m (mach-o), pef<br>obj format -- c, e, m<br>threading model -- v, p, w; or v and n (native)<br>backend -- i, g, c<br>Windowing library -- x, w<br>naming convention -- u or p, m (Microsoft) or w (windows), g<br><br><br>Ok, I know, crazy, unwieldy, crazy long directory names, but somehow seems true.<br><br><br>Imagine there was an "integrated linker". It could consume at least three different obj formats<br>and output at least three different executable formats (elf, pe/coff, mach-o).<br><br><br>A smaller version of this however is to let the user set OSTYPE and NAMING_CONVENTION, and perhaps<br>a few other variables (Windowing library is one obviously missing), in the config, honor them, and<br>possibly build up BUILD_DIR in this way.<br>Several variables can be omited..well mainly obj format. That seems to vary the least or vary<br>along with compiler/linker.<br><br><br> - Jay<br><br><br /><hr />Climb to the top of the charts! Play the word scramble challenge with star power. <a href='http://club.live.com/star_shuffle.aspx?icid=starshuffle_wlmailtextlink_jan' target='_new'>Play now!</a></body>
</html>