<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'><div style="text-align: left;">PPC_DARWIN also has problems...at least in the config.<br><br><br>If you take the 5.2.6 archive, install to /dev2/cm3, accept the defaults,<br>claim all the missing unused libs are in /usr/lib (opengl, postgres, x11)<br><br><br>you end up with:<br><br><br>jbook:/dev2/j/m3 jay$ cat Hello.m3 <br><br><br>MODULE Hello EXPORTS Main;<br>IMPORT IO;<br>BEGIN<br>IO.Put("Hello\n");<br>END Hello.<br><br><br>jbook:/dev2/j/m3 jay$ uname -a<br>Darwin jbook 8.11.0 Darwin Kernel Version 8.11.0: Wed Oct 10 18:26:00 PDT 2007; root:xnu-792.24.17~1/RELEASE_PPC Power Macintosh powerpc<br><br><br>jbook:/dev2/j/m3 jay$ cm3 -version<br>Critical Mass Modula-3 version 5.2.6<br>  last updated: 2003-06-27<br>  configuration: /cm3/bin/cm3.cfg<br><br><br>jbook:/dev2/j/m3 jay$ cm3<br>new source -> compiling Hello.m3<br> -> linking prog<br><br><br>jbook:/dev2/j/m3 jay$ PPC_DARWIN/prog<br>dyld: Library not loaded: /var/tmp/cm3/lib/libm3.5.2.dylib<br>  Referenced from: /dev2/j/m3/PPC_DARWIN/prog<br>  Reason: image not found<br>Trace/BPT trap<br><br><br>jbook:/dev2/j/m3 jay$ otool -L PPC_DARWIN/prog<br>PPC_DARWIN/prog:<br>        /var/tmp/cm3/lib/libm3.5.2.dylib (compatibility version 5.0.0, current version 5.2.0)<br>        /Users/wagner/local/cm3/lib/libm3core.5.2.dylib (compatibility version 5.0.0, current version 5.2.0)<br>        /Users/wagner/local/cm3/lib/libm3gcdefs.5.2.dylib (compatibility version 5.0.0, current version 5.2.0)<br>        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.1.10)<br>        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)<br><br><br>jbook:/dev2/j/m3 jay$ ls -l PPC_DARWIN/prog<br>-rwxr-xr-x   1 jay  admin  20264 Dec 25 04:43 PPC_DARWIN/prog<br><br><br>At the temporary cost of giving up dynamic linking, you can fix this by removing M3_SPLIT_LIBNAMES_IF_SHARED<br>and/or M3_SPLIT_LIBNAMES from cm3.cfg, yielding:<br><br><br>jbook:/dev2/j/m3 jay$ otool -L PPC_DARWIN/prog<br>PPC_DARWIN/prog:<br>        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.1.10)<br><br><br>jbook:/dev2/j/m3 jay$ ls -l PPC_DARWIN/prog<br>-rwxr-xr-x   1 jay  admin  1388380 Dec 25 04:48 PPC_DARWIN/prog<br><br><br>jbook:/dev2/j/m3 jay$ PPC_DARWIN/prog<br>Hello<br><br><br>I will fix the checked in config file...even though it varies a bunch from the 5.2.6 distributed<br>config, it results in the same.<br><br><br>And, um, does everyone understand what I did with Win32 and making cminstall obsolete?<br>Ok to do the same on Mac OS X?<br>You know, it's running things out of the path and/or finding them in their "very standard" locations.<br>In fact, you can hard code full paths and be ok.<br>That is, instead of asking the user where their compiler is, hardcoding any of cc, gcc, /usr/bin/cc, /usr/bin/gcc all work fine.<br>Asking them where ar/ranlib are, similar, though the docs say that libtool replaced those, and ar/ranlib vs. libtool is one way<br>in which the checked in config and the 5.2.6 distribution's config vary. I'll try for libtool.<br><br><br>The only thing the user really  needs to decide is where to install to, and<br>the cfg file can discover their choice without any editing.<br><br><br>INSTALL_ROOT = path() & "/.."<br>BIN_INSTALL   = path() % executables<br><br><br>In terms of wanting to provide some configurable redirection, well, I think an advanced user can manage..<br>An indirect SYSTEM_CC = "cc" can be left, I guess.<br><br><br>You know, I dare say, that platforms have been reduced and converged enough such that..you can get rid of<br>Quake and move it into cm3. Um.. do any of the Unix platforms support other than gcc? Other than GNU ld?<br>Ok, Apple ld is not GNU ld. (Geez, it is just me or is Apple an incredible hodgepodge mess these days?<br>I mean both in terms of their "system architecture" and their tools. The "system architecture" reveals bunches<br>of similar redundant subsystems. Try reading through man ld, man ranlib, just try to understand which<br>flag goes with which mode, which flags are for compatibility with which OS version, and which of the<br>compatibility flags is either ignored or does something useful... and should I say -lGL or -framework OpenGL??)<br><br><br>That I don't haven't adjusted to Modula-3 and don't mind/prefer writing Quake instead. :)<br><br><br>Some bootstrap was provided. I should look at it, and its config.<br>Otherwise..I'll look into what it takes to build it all and with dynamic linking.<br>Perhaps the bootstrap is just fine. But the checked in config is not.<br><br><br> - Jay<br></div><br /><hr />Share life as it happens with the new Windows Live. <a href='http://www.windowslive.com/share.html?ocid=TXT_TAGHM_Wave2_sharelife_122007' target='_new'>Share now!</a></body>
</html>