[Vm-dev] Failed to build FloatMathPlugin on FreeBSD

Gary Dunn garydunnhi at gmail.com
Sun Mar 13 20:31:43 UTC 2011


On Sat, Mar 12, 2011 at 11:59 AM, David T. Lewis <lewis at mail.msen.com> wrote:
> On Thu, Mar 10, 2011 at 09:04:18PM -0800, Gary Dunn wrote:
>> On Thu, Mar 10, 2011 at 12:12 PM, David T. Lewis <lewis at mail.msen.com> wrote:
>> >
>> > On Thu, Mar 10, 2011 at 09:27:23AM -0800, Gary Dunn wrote:
>> >>
>> >> I am setting up to try to add DBus support to the vm. Decided it was
>> >> time to practice building an unmodified vm. Downloaded sources for
>> >> 4.4.7.2357. I have been running Squeak with 3.11.3.2135 and that seems
>> >> to work fine.
>> >>
>> >> make stopped with
>> >>
>> >> [ 10%] Building C object
>> >> FloatMathPlugin/CMakeFiles/FloatMathPlugin.dir/usr/home/gary/OpenSlate/Squeak/Squeak-4.4.7.2357-src/unix/src/vm/intplugins/FloatMathPlugin/FloatMathPlugin.c.o
>> >> cc1: error: unrecognized command line option "-mno-fused-madd"
>> >> *** Error code 1
>> >>
>> >> I was able to make squeak
>> >>
>> >> This is a slightly old version of FreeBSD:
>> >>
>> >> $ uname -a
>> >> FreeBSD slate01 8.0-RELEASE-p2 FreeBSD 8.0-RELEASE-p2 #0: Thu Jan 28
>> >> 06:16:14 HST 2010 ? ? gary at slate01:/usr/obj/usr/src/sys/GENERIC ?i386
>> >
>> > Hi Gary,
>> >
>> > Apparently the -mno-fused-madd option is supported only on newer gcc compilers.
>> > As a workaround, look at platforms/unix/plugins/FloatMathPlugin/config.cmake
>> > and edit it out. Clean out your build directory, then run configure and you
>> > should be back in business. This will not effect the behavior of your plugin,
>> > at least not in any way that will be detected by the test suite.
>> >
>> > There was some earlier discussion of this on the list. I suspect that the
>> > -mno-fused-madd compiler option is completely unnecessary, although I don't
>> > know for certain if this is the case.
>> >
>> > Can any of our numeric gurus confirm if it is safe to just get rid of this
>> > compiler option for all platforms? It seems to have no effect that can be
>> > detected by the unit tests.
>> >
>> > Earlier discussion was here:
>> > ?http://lists.squeakfoundation.org/pipermail/vm-dev/2011-January/006672.html
>> >
>> > Dave
>> >
>> > p.s. welcome to the vm-dev list!
>>
>> Removing that option did the trick, however the vm does not run. I
>> suspect it is something trivial. I tested in place, without make
>> install. With my build directory (work) the current directory I enter
>> the command
>>
>> $ ./squeak /home/gary/Squeak4.2-10966.image
>>
>> and get this undefined symbol error:
>>
>> /usr/home/gary/OpenSlate/Squeak/Squeak-4.4.7.2357-src/work/vm-display-X11/so.vm-display-X11:
>> Undefined symbol "error"
>> could not find display driver vm-display-X11; either:
>>   - check that /usr/local/lib/squeak/4.4.7-2357/vm-display-X11.so exists, or
>>   - use the '-plugins <path>' option to tell me where it is, or
>>   - remove DISPLAY from your environment.
>> Abort trap (core dumped)
>>
>> Note that "check that
>> /usr/local/lib/squeak/4.4.7-2357/vm-display-X11.so exists" is false.
>> It should be looking for
>> /usr/home/gary/OpenSlate/Squeak/Squeak-4.4.7.2357-src/work/vm-display-X11/so.vm-display-X1l.
>> Do I need to modify the squeak shell script, or just run make install?
>>
>>
>> --
>> Gary Dunn
>> Honolulu
>
> Yes, you need to run make install in order to put the various shared
> libraries into a place where the VM expects to find them. That said,
> the undefined symbol reference and the core dump indicate other problems.
>
> WRT the undefined symbol "error", take a look at the interp.c file (this
> is source generated from VMMaker) and see how the error() function is
> redefined. Possibly for FreeBSD you will need something similar for
> sqUnixX11.c. If so, you can probably handle it by putting a #define in
> the config.h file, or just hack sqUnixX11.c for the time being.
>
> Dave

I do not have sqUnixX11.c. in my build tree, only in
/unix/vm-display-X11. Am I supposed to edit that one then re-run
configure, or does this indicate a problem with configure sensing that
I am on an X11 box? I went ahead and added the same error define code:

/* define missing error function for FreeBSD --gd */

#ifndef error
 /* error() function called from Interpreter */
 /* Default definition if not previously defined in config.h */
 #define error(str) defaultErrorProc(str)
#endif

re-ran configure, make, make install

Now aqueak starts without error, but with no output. No window. It
just hangs and terminates nicely with Ctrl-C. How do I enable error
logging?

-- 
Gary Dunn
Honolulu


More information about the Vm-dev mailing list