<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-15">
<META content="MSHTML 6.00.6000.16587" name=GENERATOR></HEAD>
<BODY style="MARGIN: 4px 4px 1px; FONT: 10pt Tahoma">
<DIV>"mapped" is probably a poor choice of words here.  Sorry.</DIV>
<DIV>--Randy<BR><BR>>>> Jay <jayk123@hotmail.com> 1/19/2008 11:27 PM >>><BR></DIV>
<DIV style="TEXT-ALIGN: left">What does "mapped" mean here?<BR><BR>The way it works, on Modula-3 NT386, and I haven't seen this done quite this way ever on Win32, not so systematically/mechanically/automatically, and I don't know how Posixish systems work here, but the way it works is that for every .dll, CM3 NT386 builds foo.lib and foo.lib.sa.<BR><BR>foo.lib is an "import lib", just containing essentially function names and a file name.<BR>foo.lib.sa is a regular old static .lib, sa for standalone.<BR><BR>You can also just build a static .lib -- for stuff that is never a .dll, for stuff that is only used once, but is broken up into multiple directories.<BR>For example m3quake, m3middle, m3objfile, m3back, etc. They are only used by cm3 so are just static .libs, just foo.lib, are built.<BR>(If we fix cm3.exe to be copy over itself, and I have some new clever ideas here, it might be profitable, for "developer productivity", to turn these into .dlls -- just so I can cd around and rebuild/reship less.)<BR><BR>When you ask to build a standalone executable, we have a list of .libs, foo.lib, bar.lib. They are full paths.<BR>For each one, we see if foo.lib.sa exists, and if so, we use that instead of foo.lib.<BR><BR>It is all rather simple and clever, but at least to me, it was surprising and new, so I explain it here.<BR>Perhaps Posixish systems work very similarly and this is old hat?<BR>I know cm3 doesn't implement this for Posix, but ar/ld/gcc could be handling things this way underneath for it.<BR><BR>For example, I know on Mac OS X, if you link to a full path to a file, that's what you get.<BR>But if you say -Ldirectory -lfoo, ld probes for directory/foo.dylib and then directory/foo.a.<BR>So modulo the extensions and unknown to me how you build the things in the first place, same thing.<BR>You have to be sure to use the setting to split lib paths like that, otherwise you break dynamic linking.<BR><BR>CM3 makes foo.sa.lib with its own mklib. This is also unusual. Normally one would use lib.exe or link.exe /lib for this,<BR>or ar/ld/gcc/dlltools. But the CM3 folks were obviously, openly en route to cutting dependencies through<BR>reimplementation.<BR>I had some initial trouble on NT385GNU building static .libs with ar/ld/gcc/dlltool, so, heck, I just do what NT386 does, and<BR>it seems to be working (modulo that SOMETHING is not working :) ).<BR><BR>I don't want to stop anyone else from debugging this but if nobody else figures it out I will try.<BR>I can repro it easily, thanks for the good repro Randy! (though I wish it would crash instead of mis-display :) )<BR><BR>There is no "vendor's equivalent library" here, it is all just Modula-3 foo.lib or foo.lib.sa.<BR>Look at NT386/*.txt, by the .exe.<BR>Build one way.<BR>Rename away NT386.<BR>Build the other way.<BR>Compare the directories.<BR>You will see what I am talking about.<BR><BR> - Jay<BR></DIV><BR><BR>
<BLOCKQUOTE>
<HR id=EC_stopSpelling>
Date: Sat, 19 Jan 2008 21:12:37 -0500<BR>From: rcoleburn@scires.com<BR>To: hosking@cs.purdue.edu; wagner@elegosoft.com<BR>CC: m3devel@elegosoft.com<BR>Subject: Re: [M3devel] my status on win32<BR><BR>
<META content="Microsoft SafeHTML" name=Generator>
<DIV>Hi Tony:</DIV>
<DIV> </DIV>
<DIV>Are you suggesting that when the program is built standalone it maps libraries differently?  I know there is a difference between dynamic vs. static libraries, but are you suggesting that a different library is being mapped than the vendor's equivalent of the dynamic library?  How would I check for this situation?</DIV>
<DIV> </DIV>
<DIV>Your suggestion seems plausible since the source is not recompiled; instead, the linker is used to change the way the EXE is put together and that seems to cause the difference in operation as far as pixmaps are concerned.</DIV>
<DIV> </DIV>
<DIV>Regards,</DIV>
<DIV>Randy<BR><BR>>>> Tony Hosking <hosking@cs.purdue.edu> 1/19/2008 6:47 PM >>><BR>I would perhaps suspect a bad library mapping.<BR><BR>On Jan 19, 2008, at 2:48 PM, Olaf Wagner wrote:<BR><BR>> Quoting Randy Coleburn <rcoleburn@scires.com>:<BR>>> 1.  pixmaps aren't rendered properly on the screen.  They look really<BR>>> bad.  I recall having this problem a while back with one of the early<BR>>> 5.x releases, so I guess it was never solved.  I've got some old test<BR>>> programs I try to dig out and see if I can find out what is going  <BR>>> on.  I<BR>>> seem to recall that building standalone in the past seemed to fix the<BR>>> problem, so this is a real mystery.<BR>><BR>> Hi Randy,<BR>><BR>> I'm afraid I wasn't able to solve it directly some years ago and<BR>> then forgot about it due to more urgent tasks.<BR>><BR>> I think we should try to narrow down the location of the problem<BR>> (i.e. is it in the runtime, code generation, linker, or windows<BR>> libraries).<BR>><BR>> As you still have the 4.1 code of the Windows libraries, could you<BR>> first try to build them with the new compiler and see if it makes<BR>> a difference if you link against them?<BR>><BR>> It may also be worthwhile to compare the commands actually used<BR>> for linking (use -commands). That is, before we turn to the actual<BR>> generated code...<BR>><BR>> I still haven't got Windows access here, so I can just suggest what<BR>> to do...<BR>><BR>> Olaf<BR>> -- <BR>> Olaf Wagner -- elego Software Solutions GmbH<BR>>                Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin,  <BR>> Germany<BR>> phone: +49 30 23 45 86 96  mobile: +49 177 2345 869  fax: +49 30 23  <BR>> 45 86 95<BR>>    <A href="http://www.elegosoft.com/" target=_blank>http://www.elegosoft.com</A> | Geschäftsführer: Olaf Wagner | Sitz:  <BR>> Berlin<BR>> Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr:  <BR>> DE163214194<BR>><BR><BR><BR></DIV></BLOCKQUOTE><BR>
<HR>
Helping your favorite cause is as easy as instant messaging. You IM, we give. <A href="http://im.live.com/Messenger/IM/Home/?source=text_hotmail_join" target=_new>Learn more.</A> </BODY></HTML>