[M3devel] PPC_DARWIN problems, at least config/5.2.6, maybe all moot

Tony Hosking hosking at cs.purdue.edu
Tue Dec 25 17:02:59 CET 2007


On Dec 25, 2007, at 7:09 AM, Jay wrote:

> PPC_DARWIN also has problems...at least in the config.

This is the cm3.cfg I use for PPC_DARWIN and it works fine for me.   
Notice that it installs into /usr/local/cm3.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: cm3.cfg
Type: application/octet-stream
Size: 12662 bytes
Desc: not available
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20071225/518ceb1c/attachment-0002.obj>
-------------- next part --------------
>
>
>
> If you take the 5.2.6 archive, install to /dev2/cm3, accept the  
> defaults,
> claim all the missing unused libs are in /usr/lib (opengl,  
> postgres, x11)
>
>
> you end up with:
>
>
> jbook:/dev2/j/m3 jay$ cat Hello.m3
>
>
> MODULE Hello EXPORTS Main;
> IMPORT IO;
> BEGIN
> IO.Put("Hello\n");
> END Hello.
>
>
> jbook:/dev2/j/m3 jay$ uname -a
> 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
>
>
> jbook:/dev2/j/m3 jay$ cm3 -version
> Critical Mass Modula-3 version 5.2.6
>   last updated: 2003-06-27
>   configuration: /cm3/bin/cm3.cfg
>
>
> jbook:/dev2/j/m3 jay$ cm3
> new source -> compiling Hello.m3
>  -> linking prog
>
>
> jbook:/dev2/j/m3 jay$ PPC_DARWIN/prog
> dyld: Library not loaded: /var/tmp/cm3/lib/libm3.5.2.dylib
>   Referenced from: /dev2/j/m3/PPC_DARWIN/prog
>   Reason: image not found
> Trace/BPT trap
>
>
> jbook:/dev2/j/m3 jay$ otool -L PPC_DARWIN/prog
> PPC_DARWIN/prog:
>         /var/tmp/cm3/lib/libm3.5.2.dylib (compatibility version  
> 5.0.0, current version 5.2.0)
>         /Users/wagner/local/cm3/lib/libm3core.5.2.dylib  
> (compatibility version 5.0.0, current version 5.2.0)
>         /Users/wagner/local/cm3/lib/libm3gcdefs.5.2.dylib  
> (compatibility version 5.0.0, current version 5.2.0)
>         /usr/lib/libSystem.B.dylib (compatibility version 1.0.0,  
> current version 88.1.10)
>         /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0,  
> current version 1.0.0)
>
>
> jbook:/dev2/j/m3 jay$ ls -l PPC_DARWIN/prog
> -rwxr-xr-x   1 jay  admin  20264 Dec 25 04:43 PPC_DARWIN/prog
>
>
> At the temporary cost of giving up dynamic linking, you can fix  
> this by removing M3_SPLIT_LIBNAMES_IF_SHARED
> and/or M3_SPLIT_LIBNAMES from cm3.cfg, yielding:
>

Dynamic linking works fine for me.

>
> jbook:/dev2/j/m3 jay$ otool -L PPC_DARWIN/prog
> PPC_DARWIN/prog:
>         /usr/lib/libSystem.B.dylib (compatibility version 1.0.0,  
> current version 88.1.10)
>
>
> jbook:/dev2/j/m3 jay$ ls -l PPC_DARWIN/prog
> -rwxr-xr-x   1 jay  admin  1388380 Dec 25 04:48 PPC_DARWIN/prog
>
>
> jbook:/dev2/j/m3 jay$ PPC_DARWIN/prog
> Hello
>
>
> I will fix the checked in config file...even though it varies a  
> bunch from the 5.2.6 distributed
> config, it results in the same.

Not sure how that differs with my config file.

> And, um, does everyone understand what I did with Win32 and making  
> cminstall obsolete?
> Ok to do the same on Mac OS X?

Please don't.  I would prefer to keep the OS X install the same as  
for other Unix/POSIX platforms, if only because it means less  
splitting of the code base.

> You know, it's running things out of the path and/or finding them  
> in their "very standard" locations.
> In fact, you can hard code full paths and be ok.
> 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.

Why not just hardcode the cminstall config file so it doesn't ask  
questions except were absolutely necessary.

> Asking them where ar/ranlib are, similar, though the docs say that  
> libtool replaced those, and ar/ranlib vs. libtool is one way
> in which the checked in config and the 5.2.6 distribution's config  
> vary. I'll try for libtool.

Please see my config file.

>
>
>
> The only thing the user really  needs to decide is where to install  
> to, and
> the cfg file can discover their choice without any editing.

Indeed.
>
>
>
> INSTALL_ROOT = path() & "/.."
> BIN_INSTALL   = path() % executables
>
>
> In terms of wanting to provide some configurable redirection, well,  
> I think an advanced user can manage..
> An indirect SYSTEM_CC = "cc" can be left, I guess.
>
>
> You know, I dare say, that platforms have been reduced and  
> converged enough such that..you can get rid of
> Quake and move it into cm3.

I'm not sure what you mean by this.

> Um.. do any of the Unix platforms support other than gcc? Other  
> than GNU ld?
> Ok, Apple ld is not GNU ld. (Geez, it is just me or is Apple an  
> incredible hodgepodge mess these days?
> I mean both in terms of their "system architecture" and their  
> tools. The "system architecture" reveals bunches
> of similar redundant subsystems. Try reading through man ld, man  
> ranlib, just try to understand which
> flag goes with which mode, which flags are for compatibility with  
> which OS version, and which of the
> compatibility flags is either ignored or does something useful...  
> and should I say -lGL or -framework OpenGL??)
>
>
> That I don't haven't adjusted to Modula-3 and don't mind/prefer  
> writing Quake instead. :)
>
>
> Some bootstrap was provided. I should look at it, and its config.
> Otherwise..I'll look into what it takes to build it all and with  
> dynamic linking.
> Perhaps the bootstrap is just fine. But the checked in config is not.

I have a PPC_DARWIN bootstrap file at ftp://ftp.cs.purdue.edu/pub/ 
hosking/m3 and in the PPC_DARWIN subdirectory.

>
>
>
>  - Jay
>
> Share life as it happens with the new Windows Live. Share now!



More information about the M3devel mailing list