List,
we've compiled the 3.9-4 VM on the cygwin platform, only minor "*nix'en are platform[tm] independent" problems to solve: FIONBIO is in <sys/socket.h> # define O_ASYNC O_NONBLOCK timezone is _timezone (define is not part of cygwin) These three issues where solved using www.google.com :-) other people have already had this cygwin experience. #include "debug.h" (moved further down, dprintf must be redefined) # define dprintf(...) __sq_dprintf(__VA_ARGS__) There is a nice overview, on what gcc supports when it comes to variadic macros, at - http://gcc.gnu.org/onlinedocs/gcc/Variadic-Macros.html But the main problem is, compared to the subject line, ls -l /usr/local/lib/squeak/3.9-4/ -rw-r--r-- 1 kWitzel None 310484 May 15 11:56 B3DAcceleratorPlugin.a -rw-r--r-- 1 kWitzel None 57442 May 15 11:56 PseudoTTYPlugin.a -rw-r--r-- 1 kWitzel None 97012 May 15 11:56 UnixOSProcessPlugin.a -rw-r--r-- 1 kWitzel None 50022 May 15 11:56 XDisplayControlPlugin.a -rwxr-xr-x 1 kWitzel None 2386463 May 15 12:33 squeak.exe -rw-r--r-- 1 kWitzel None 326214 May 15 11:56 vm-display-X11.a -rw-r--r-- 1 kWitzel None 98856 May 15 11:56 vm-display-null.a -rw-r--r-- 1 kWitzel None 77634 May 15 11:56 vm-sound-OSS.a -rw-r--r-- 1 kWitzel None 26792 May 15 11:56 vm-sound-null.a A similiar problem is mentioned at - http://macos.tuwien.ac.at:9009/519430413.asHtml and because the scripts balks when linking npsqueak, we run --without-npsqueak - http://bugs.impara.de/view.php?id=559 Question: how can vm-display-X11.so be made, what's the trick? Suggestions, pointers, URLs, all warmly appreciated. /Klaus P.S. captured stdout and stderr from make and from ./config.status, if that is needed. |
Am 15.05.2006 um 12:43 schrieb Klaus D. Witzel:
> we've compiled the 3.9-4 VM on the cygwin platform Excuse my ignorance, but, why? - Bert - |
Hi Bert,
on Mon, 15 May 2006 13:38:40 +0200, Bert Freudenberg <[hidden email]> wrote: > Am 15.05.2006 um 12:43 schrieb Klaus D. Witzel: > >> we've compiled the 3.9-4 VM on the cygwin platform > > Excuse my ignorance, but, why? Couldn't find any other environment which compiles the 3.9 VM to run under windoze, easy that is. The only official source for squeak on win32 has the older 3.7.1 VM - http://www.squeakvm.org/win32/ Q into the other direction: why not, any problem? /Klaus > - Bert - > > |
Am 15.05.2006 um 13:46 schrieb Klaus D. Witzel: > Hi Bert, > > on Mon, 15 May 2006 13:38:40 +0200, Bert Freudenberg > <[hidden email]> wrote: > >> Am 15.05.2006 um 12:43 schrieb Klaus D. Witzel: >> >>> we've compiled the 3.9-4 VM on the cygwin platform >> >> Excuse my ignorance, but, why? > > Couldn't find any other environment which compiles the 3.9 VM to > run under windoze, easy that is. And what do you need a 3.9 VM for? I'm pretty sure you can happily run the 3.9 image even with a 3.7 VM. There haven't been major changes AFAIK. That aside, I agree we need to get 3.9 VM sources into an easily findable place. > The only official source for squeak on win32 has the older 3.7.1 VM > > - http://www.squeakvm.org/win32/ IIRC then the most recent Squeak VM for Windows can be found in the Croquet package. Not sure about the sources for that, might be in SVN? > Q into the other direction: why not, any problem? Well, I doubt anyone did that, yet. If it works at all (not sure how unixy cygwin actually is) you'll have to run an X server to see anything ... - Bert - |
In reply to this post by Klaus D. Witzel
Hi /Klaus,
You asked a question, >Question: how can vm-display-X11.so be made, what's the trick? And here is an answer: Make sure, your gcc knows about the X11 includes and your library path includes the X11 shared libs before you run configure. Check the makefile generated by config (in directory bld) for the target: vm-display-X11${la} : @$(SHELL) -ec 'cd vm-display-X11; $(MAKE) vm-display-X11${la}' And then check the file bld/libtool which is a shell script generated by config which is supposed to generate the shared objects. Hope, that helps. Wolfgang -- Weniger, aber besser. |
In reply to this post by Bert Freudenberg-3
Hi Bert,
on Mon, 15 May 2006 14:12:26 +0200, you <[hidden email]> wrote: > > Am 15.05.2006 um 13:46 schrieb Klaus D. Witzel: > >> Hi Bert, >> >> on Mon, 15 May 2006 13:38:40 +0200, Bert Freudenberg <[hidden email]> >> wrote: >> >>> Am 15.05.2006 um 12:43 schrieb Klaus D. Witzel: >>> >>>> we've compiled the 3.9-4 VM on the cygwin platform >>> >>> Excuse my ignorance, but, why? >> >> Couldn't find any other environment which compiles the 3.9 VM to run >> under windoze, easy that is. > > And what do you need a 3.9 VM for? That was a simple investment decision (investing into the future can be done when no longer investing into the past). Nothing more, nothing else. > I'm pretty sure you can happily run the 3.9 image even with a 3.7 VM. > There haven't been major changes AFAIK. Well, had the same thought. But giving the 3.9 VM a try was considered as costly (or as inexpensive, it depends) as trying the 3.9 image with a home-compiled 3.7 VM. Who does the latter anyways? There the seem to be not many (besides the VM's maintainers, Spoon, Croquet, Exupery) VMMaker users. > That aside, I agree we need to get 3.9 VM sources into an easily > findable place. Great! >> The only official source for squeak on win32 has the older 3.7.1 VM >> >> - http://www.squeakvm.org/win32/ > > IIRC then the most recent Squeak VM for Windows can be found in the > Croquet package. Not sure about the sources for that, might be in SVN? Now that you mention it: we DID try (1x) the win32 scripts from the trunk, to no avail under win32 :-( could have searched for a backwards+serialization+compatible JVM during the same time with the same result ;-) >> Q into the other direction: why not, any problem? > > Well, I doubt anyone did that, yet. If it works at all (not sure how > unixy cygwin actually is) For me it is easier to tell my colleagues to use *nix scripts, [easier for them] than to use the non-(Visual-scream+and+shout) 3.7.1 script material. We'll see if that (doing it under+for cygwin) works. > you'll have to run an X server to see anything ... Sure. At the moment we'd be happy if it would read script files. We think we will use X only for close-encounter debugging (perhaps someone can find a non-X fb.h for cygwin?). /Klaus > - Bert - > |
In reply to this post by Wolfgang Helbig-2
Hi Wolfgang,
on Mon, 15 May 2006 15:06:00 +0200, you <[hidden email]> wrote: > Hi /Klaus, :) > You asked a question, >> Question: how can vm-display-X11.so be made, what's the trick? > And here is an answer: > Make sure, your gcc knows about the X11 includes and your library path > includes > the X11 shared libs before you run configure. Configure reported: configure:24669: checking for X configure:24899: result: libraries /usr/X11R6/lib, headers /usr/X11R6/include configure:25071: gcc -o conftest.exe -g -O2 -fomit-frame-pointer -DLSB_FIRST=1 conftest.c -lm -L/usr/X11R6/lib -lX11 >&5 configure:25077: $? = 0 configure:25081: test -z || test ! -s conftest.err configure:25084: $? = 0 configure:25087: test -s conftest.exe configure:25090: $? = 0 > Check the makefile generated by config (in directory bld) for the target: > > vm-display-X11${la} : > @$(SHELL) -ec 'cd vm-display-X11; $(MAKE) vm-display-X11${la}' Looks like as if you had copied and pasted our makefile here. > And then check the file bld/libtool which is a shell script generated by > config which is supposed to generate the shared objects. Runs nicely, results are (also for vm-display-null): /bin/sh /home/kWitzel/platforms/unix/config/mkinstalldirs /usr/local/lib/squeak/3.9-4 /bin/sh /home/kWitzel/platforms/libtool --mode=install /usr/bin/install -c vm-display-X11.la /usr/local/lib/squeak/3.9-4/vm-display-X11.la /usr/bin/install -c vm-display-X11/.libs/vm-display-X11.lai /usr/local/lib/squeak/3.9-4/vm-display-X11.la /usr/bin/install -c vm-display-X11/.libs/vm-display-X11.a /usr/local/lib/squeak/3.9-4/vm-display-X11.a ranlib /usr/local/lib/squeak/3.9-4/vm-display-X11.a chmod 644 /usr/local/lib/squeak/3.9-4/vm-display-X11.a ---------------------------------------------------------------------- Libraries have been installed in: /usr/local/lib/squeak/3.9-4 > Hope, that helps. :-( Hah! You made me look after filio.h, I forgot last night: configure:20825: checking sys/filio.h usability configure:20837: gcc -c -g -O2 conftest.c >&5 conftest.c:72:23: sys/filio.h: No such file or directory configure:20843: $? = 1 Thank your for your time. /Klaus > Wolfgang > -- > Weniger, aber besser. > |
In reply to this post by Klaus D. Witzel
Am 15.05.2006 um 17:59 schrieb Klaus D. Witzel:
> At the moment we'd be happy if it would read script files. Which "it" doesn't? What are you trying to do? - Bert - |
Am 15.05.2006 um 22:09 schrieb Klaus D. Witzel: > Hi Bert, > > on Mon, 15 May 2006 21:18:33 +0200, you <[hidden email]> wrote: > >> Am 15.05.2006 um 17:59 schrieb Klaus D. Witzel: >> >>> At the moment we'd be happy if it would read script files. >> >> Which "it" doesn't? What are you trying to do? > > As I wrote earlier, the main problem is, compared to the subject > line, ls -l /usr/local/lib/squeak/3.9-4/ > -rw-r--r-- 1 kWitzel None 310484 May 15 11:56 B3DAcceleratorPlugin.a > -rw-r--r-- 1 kWitzel None 57442 May 15 11:56 PseudoTTYPlugin.a > -rw-r--r-- 1 kWitzel None 97012 May 15 11:56 UnixOSProcessPlugin.a > -rw-r--r-- 1 kWitzel None 50022 May 15 11:56 XDisplayControlPlugin.a > -rwxr-xr-x 1 kWitzel None 2386463 May 15 12:33 squeak.exe > -rw-r--r-- 1 kWitzel None 326214 May 15 11:56 vm-display-X11.a > -rw-r--r-- 1 kWitzel None 98856 May 15 11:56 vm-display-null.a > -rw-r--r-- 1 kWitzel None 77634 May 15 11:56 vm-sound-OSS.a > -rw-r--r-- 1 kWitzel None 26792 May 15 11:56 vm-sound-null.a > > That is, neither the X11 nor the null display *.so drivers are > found (and the message in the subject line, the reason for my post, > is printed). > > Ironically, > ./squeak -headless -nodisplay Squeak3.9b-7032.image > and only -headless and only -nodisplay, attempts to use the X11 > display driver... "-headless" is an option of the X11 driver, so that's not that surprising. As for loading the display modules, they have to be shared libraries suitable to be used by dlopen(). You only have static libraries, at least that's what I guess from the ".a" extension. I guess on Windows that would have to e a DLL. And even if you compile the modules as Windows DLL you might have to adjust the module loader to look for a ".dll" extension. - Bert - |
In reply to this post by Klaus D. Witzel
> we've compiled the 3.9-4 VM on the cygwin platform... Great! I'm interested in this, because it'd be nice to have the relative ease of the unix build environment (note that I said *relative* ease :) on those darned windoze boxes. The Visual Studio debugger is rather good, but creating the fiddly bits for the environment (compiler settings, dependencies, etc.) is even more tedious than with makefiles etc. If the C debugging facilities with cygwin are decent, I would happily dump the microsoft stuff completely. thanks! -C -- Craig Latta improvisational musical informaticist www.netjam.org Smalltalkers do: [:it | All with: Class, (And love: it)] |
In reply to this post by Klaus D. Witzel
Hi Klaus,
you checked >> And then check the file bld/libtool which is a shell script generated by >> config which is supposed to generate the shared objects. > >Runs nicely, results are (also for vm-display-null): >/bin/sh /home/kWitzel/platforms/unix/config/mkinstalldirs >/usr/local/lib/squeak/3.9-4 >/bin/sh /home/kWitzel/platforms/libtool --mode=install /usr/bin/install >-c vm-display-X11.la /usr/local/lib/squeak/3.9-4/vm-display-X11.la >/usr/bin/install -c vm-display-X11/.libs/vm-display-X11.lai >/usr/local/lib/squeak/3.9-4/vm-display-X11.la >/usr/bin/install -c vm-display-X11/.libs/vm-display-X11.a >/usr/local/lib/squeak/3.9-4/vm-display-X11.a >ranlib /usr/local/lib/squeak/3.9-4/vm-display-X11.a >chmod 644 /usr/local/lib/squeak/3.9-4/vm-display-X11.a >---------------------------------------------------------------------- >Libraries have been installed in: > /usr/local/lib/squeak/3.9-4 > >> Hope, that helps. > >:-( Well, it helps me. :-) Looks like your libtool is configured to build static libraries. Which is perfectly ok. The VM should run with static libraries as well. Here are the relevant lines in my libtool: # Whether or not to build shared libraries. build_libtool_libs=yes # Whether or not to build static libraries. build_old_libs=no # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=yes # Whether or not to disallow shared libs when runtime libs are static allow_libtool_libs_with_static_runtimes=no They should differ from your libtool if configure figured out that it is better to build static libraries. But if you know better, feel free to override it by configure --enabled-shared Greetings Wolfgang -- Weniger, aber besser. |
In reply to this post by Bert Freudenberg-3
Hi Bert,
on Mon, 15 May 2006 23:57:34 +0200, you wrote: ... > "-headless" is an option of the X11 driver, so that's not that > surprising. Right you are. Now I understand why on a debian sans X11 the only option was vm-display-null (for running squeak unattended as back-end to apache), alternately vm-display-fbdev. > As for loading the display modules, they have to be shared libraries > suitable to be used by dlopen(). This is exactly the point. Will have to find out how dlopen is on cygwin (google says that people use LoadLibrary on cygwin, even though dlopen is available). > You only have static libraries, at least that's what I guess from the > ".a" extension. Yes, and I couldn't convince whomsoever to make them non-static (have seen the various comments in ltmain.sh, some of which speak about cygwin). > I guess on Windows that would have to e a DLL. Yes, if there's need to dynamically load a library the win32 people must make a .dll. But nobody here expected that cygwin just uses what is lying around (thereby putting the burden on the library dev'er). Porting an app to cygwin seems to be easy; doing the same for supportive libs seems to be the difference between platform independence and windoze... > And even if you compile the modules as Windows DLL This would require changes to the source, beginning with - http://lists.debian.org/debian-win32/2002/08/msg00001.html and is not what we want here (have dev'ed some .dll's running on the ISAPI interface of MS' web server...). > you might have to adjust the module loader to look for a ".dll" > extension. I think we better hack the loader for not requesting vm-display-* , looks like that would save some time. And/or perhaps vm-display-custom needs to be employed for the cygwin job, starting with __declspec(dllimport). > - Bert - Your comments (and questions!) where very valuabe to us, thank you very much. /Klaus |
In reply to this post by ccrraaiigg
Hi Craig,
on Tue, 16 May 2006 00:50:51 +0200, you <[hidden email]> wrote: > > > we've compiled the 3.9-4 VM on the cygwin platform... > > Great! I'm interested in this, because it'd be nice to have the > relative ease of the unix build environment (note that I said *relative* > ease :) on those darned windoze boxes. The Visual Studio debugger is > rather good, but creating the fiddly bits for the environment (compiler > settings, dependencies, etc.) is even more tedious than with makefiles > etc. Unfortunately the future of that Visual+scream+and+shout debugger is, you can no longer make changes and continue - "just" recompile then rerun ... > If the C debugging facilities with cygwin are decent, I would happily > dump the microsoft stuff completely. Then, here we come: http://www.juno.co.uk/products/190142-01.htm :-) I prefer the album version :-) BTW my tools converted TV spots with that song - http://www.publisuisse.ch/deutsch/website/publispot/level0/spot_index.cfm Type either Peugeot or the number 179945 into the field named SUISA, enter, then select Peugeot 1007 and enjoy. > thanks! /Klaus |
In reply to this post by Wolfgang Helbig-2
Hi Wolfgang,
on Tue, 16 May 2006 00:53:32 +0200, you <[hidden email]> wrote: > Hi Klaus, > you checked ... >> ---------------------------------------------------------------------- >> Libraries have been installed in: >> /usr/local/lib/squeak/3.9-4 >> >>> Hope, that helps. >> >> :-( > > Well, it helps me. :-) Looks like your libtool is configured to build > static > libraries. Which is perfectly ok. The VM should run with static > libraries as > well. > > Here are the relevant lines in my libtool: > > # Whether or not to build shared libraries. > build_libtool_libs=yes > > # Whether or not to build static libraries. > build_old_libs=no > > # Whether or not to add -lc for building shared libraries. > build_libtool_need_lc=yes > > # Whether or not to disallow shared libs when runtime libs are static > allow_libtool_libs_with_static_runtimes=no Will try to manually set these. > They should differ from your libtool if configure figured out that it is > better > to build static libraries. But if you know better, feel free to override > it by > configure --enabled-shared /bin/sh /home/kWitzel/platforms/libtool --mode=link gcc -g -O2 -fomit-frame-pointer -DLSB_FIRST=1 -g -O2 -fomit-frame-pointer -DLSB_FIRST=1 -avoid-version -module -rpath /usr/local/lib/squeak/3.9-4 -o vm-display-X11.la sqUnixX11.lo sqUnixMozilla.lo -lGL -lXext -lSM -lICE -L/usr/X11R6/lib -lm -lX11 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> libtool: link: warning: undefined >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> symbols not allowed in i686-pc-cygwin >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> shared libraries rm -fr .libs/vm-display-X11.la .libs/vm-display-X11.* .libs/vm-display-X11.* ar cru .libs/vm-display-X11.a sqUnixX11.o sqUnixMozilla.o ranlib .libs/vm-display-X11.a creating vm-display-X11.la (cd .libs && rm -f vm-display-X11.la && ln -s ../vm-display-X11.la vm-display-X11.la) : vm-display-X11.la /bin/sh /home/kWitzel/platforms/libtool --mode=link gcc -g -O2 -fomit-frame-pointer -DLSB_FIRST=1 -Wall -Wno-unknown-pragmas -g -O2 -fomit-frame-pointer -DLSB_FIRST=1 -I/home/kWitzel/platforms -I/home/kWitzel/platforms/unix/vm -I/home/kWitzel/platforms/Cross/vm -I/home/kWitzel/platforms/unix/src/vm -I/usr/X11R6/include -avoid-version -module -rpath /usr/local/lib/squeak/3.9-4 -o vm-display-null.la sqUnixDisplayNull.lo >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> libtool: link: warning: undefined >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> symbols not allowed in i686-pc-cygwin >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> shared libraries rm -fr .libs/vm-display-null.la .libs/vm-display-null.* .libs/vm-display-null.* ar cru .libs/vm-display-null.a sqUnixDisplayNull.o ranlib .libs/vm-display-null.a creating vm-display-null.la (cd .libs && rm -f vm-display-null.la && ln -s ../vm-display-null.la vm-display-null.la) : vm-display-null.la :-( /Klaus > Greetings > Wolfgang > -- > Weniger, aber besser. > |
Last night Squeak woke up running on the cygwin platform,
$ ./squeak.exe ../Squeak3.9b-7032.image 2>squeak.exe.log displayModule 0x497170 null soundModule 0x4970f0 null (of course it currently has no io, so, who knows? :-) Linked the vm-display-null and vm-sound-null modules together with vm.a, by tweaking sqUnixMain.c and its makefile. Other vm-display-* and vm-sound-* modules are not so easy to harness, for example vm-display-X11 (see messages below). Next step is the -dlopen flag, for passing *** Warning: libtool could not satisfy all declared inter-library *** dependencies of module vm-display-X11. Therefore, libtool will create *** a static module, that should work as long as the dlopening *** application is linked with the -dlopen flag. /Klaus -------------------- /bin/sh /home/kWitzel/platforms/libtool --mode=link gcc -g -O2 -fomit-frame-poin ter -DLSB_FIRST=1 -g -O2 -fomit-frame-pointer -DLSB_FIRST=1 -avoid-version -no -undefined -module -rpath /usr/local/lib/squeak/3.9-4 -o vm-display-X11.la sqUni xX11.lo sqUnixMozilla.lo -lGL -lXext -lSM -lICE -L/usr/X11R6/lib -lm -lX11 mkdir .libs rm -fr .libs/vm-display-X11.la .libs/vm-display-X11.* .libs/vm-display-X11.* *** Warning: This library needs some functionality provided by -lGL. *** I have the capability to make that library automatically link in when *** you link to this library. But I can only do this if you have a *** shared version of the library, which you do not appear to have. *** Warning: This library needs some functionality provided by -lXext. *** I have the capability to make that library automatically link in when *** you link to this library. But I can only do this if you have a *** shared version of the library, which you do not appear to have. *** Warning: This library needs some functionality provided by -lSM. *** I have the capability to make that library automatically link in when *** you link to this library. But I can only do this if you have a *** shared version of the library, which you do not appear to have. *** Warning: This library needs some functionality provided by -lICE. *** I have the capability to make that library automatically link in when *** you link to this library. But I can only do this if you have a *** shared version of the library, which you do not appear to have. *** Warning: This library needs some functionality provided by -lX11. *** I have the capability to make that library automatically link in when *** you link to this library. But I can only do this if you have a *** shared version of the library, which you do not appear to have. *** Warning: libtool could not satisfy all declared inter-library *** dependencies of module vm-display-X11. Therefore, libtool will create *** a static module, that should work as long as the dlopening *** application is linked with the -dlopen flag. ar cru .libs/vm-display-X11.a sqUnixX11.lo sqUnixMozilla.lo ranlib .libs/vm-display-X11.a creating vm-display-X11.la (cd .libs && rm -f vm-display-X11.la && ln -s ../vm-display-X11.la vm-display-X1 1.la) : vm-display-X11.la |
List,
the 3.9-4 VM now runs on the cygwin platform just long enough for taking a first screen shot (attached). The vm-display-X11 module is linked together with vm.a, same with vm-sound-null, and a handsome sqUnixNoMozilla.a ;-) No other module or plugin is currently working. The VM terminates itself after some mouse+display activity - it does not crash, just stops - perhaps it gets bored because no externalized primitive does anything. The dlopen and linking facilities of cygwin have about the level functionally which was common at ASM/360 times, it is allowed to do everything manually. It will not be easy to reference plugins with dlopen. Now I must learn more on how to create makefiles from config files, is there an entry level doc and / or tutorial that someone here would recommend? /Klaus P.S. Thank you very much Bert and Wolfgang for your encouraging questions and suggestions, without you we still would be confused by gcc -shared and by libtool -dlopen self. cywinSqueak.jpeg (41K) Download Attachment |
Free forum by Nabble | Edit this page |