[squeak-dev] Compiling the Squeak Stack vm in FreeBSD

Edwin Ancaer eancaer at gmail.com
Tue Apr 7 15:24:05 UTC 2020


Hello all,

thanks once more for helping me getting the compilation of the squeak Stack
Vm running.
I will need your help once more. I run into a compilation error:

/home/edwin/Smalltalk5/opensmalltalk-vm/spurstack64src/vm/gcc3x-interp.c:2530:5:
error: invalid symbol redefinition
                                VM_LABEL(pushReceiverVariableBytecode);

  bytecodeDispatchDebugHook();

 VM_LABEL(bytecodeDispatch);
 switch (currentBytecode) {
   CASE(0)
     CASE(256) /*0*/
/* pushReceiverVariableBytecode */
     {
sqInt object;

*VM_LABEL(pushReceiverVariableBytecode);*  <------ line with error
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);

I found some indications that this could be due to a difference between gcc
(as in the name of the file), and clang, that is the standard compiler of
FreeBsd.
I went tot the mvm-script and changed the line CC=clang to CC=gcc.
Issue solved.

OK, then I got the libiconv-errors when linking libtool

libtool: link: gcc -g -O1 -DNDEBUG -DDEBUGVM=0 -msse2 -Wall -pthread
-DLSB_FIRST=1 -m64 -Wl,-z -Wl,now -o squeak disabledPlugins.o version.o
-Wl,--export-dynamic  -L/usr/local/lib vm/vm.a
ADPCMCodecPlugin/ADPCMCodecPlugin.a AioPlugin/AioPlugin.a
AsynchFilePlugin/AsynchFilePlugin.a B2DPlugin/B2DPlugin.a
BitBltPlugin/BitBltPlugin.a BMPReadWriterPlugin/BMPReadWriterPlugin.a
CroquetPlugin/CroquetPlugin.a HostWindowPlugin/HostWindowPlugin.a
ZipPlugin/ZipPlugin.a DropPlugin/DropPlugin.a DSAPrims/DSAPrims.a
FFTPlugin/FFTPlugin.a FileCopyPlugin/FileCopyPlugin.a
FilePlugin/FilePlugin.a FloatArrayPlugin/FloatArrayPlugin.a
FloatMathPlugin/FloatMathPlugin.a IA32ABI/IA32ABI.a
JoystickTabletPlugin/JoystickTabletPlugin.a
JPEGReaderPlugin/JPEGReaderPlugin.a
JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.a Klatt/Klatt.a
LargeIntegers/LargeIntegers.a Matrix2x3Plugin/Matrix2x3Plugin.a
MIDIPlugin/MIDIPlugin.a MiscPrimitivePlugin/MiscPrimitivePlugin.a
Mpeg3Plugin/Mpeg3Plugin.a RePlugin/RePlugin.a
SecurityPlugin/SecurityPlugin.a SerialPlugin/SerialPlugin.a
SocketPlugin/SocketPlugin.a SoundCodecPrims/SoundCodecPrims.a
SoundGenerationPlugin/SoundGenerationPlugin.a SoundPlugin/SoundPlugin.a
StarSqueakPlugin/StarSqueakPlugin.a SurfacePlugin/SurfacePlugin.a
VMProfileLinuxSupportPlugin/VMProfileLinuxSupportPlugin.a -luuid -lutil
-lpulse-simple /usr/local/lib/libasound.so -lexecinfo -lm vm/vm.a -pthread
-Wl,-rpath -Wl,/usr/local/lib -Wl,-rpath -Wl,/usr/local/lib
/usr/local/bin/ld: vm/vm.a(sqUnixCharConv.o): in function `convertChars':
/home/edwin/Smalltalk5/opensmalltalk-vm/platforms/unix/vm/sqUnixCharConv.c:276:
undefined reference to `libiconv_close'
/usr/local/bin/ld:
/home/edwin/Smalltalk5/opensmalltalk-vm/platforms/unix/vm/sqUnixCharConv.c:278:
undefined reference to `libiconv_open'
/usr/local/bin/ld:
/home/edwin/Smalltalk5/opensmalltalk-vm/platforms/unix/vm/sqUnixCharConv.c:290:
undefined reference to `libiconv'
collect2: error: ld returned 1 exit status

Here I cheated, as I had no idea how to add the library libiconv to the
linker. I went to the Makefile in the directory
..../opensmaltalk-vm/build.linux64x64/squeak.stack.spur/build an added
iconv to the LIBS-statement:

LIBS= -luuid -lutil -lpulse-simple -lasound  -lexecinfo -lm -liconv

Don't know if that was allowed, but the  libiconv-problem was solved.
But now I am at the end of my wits. I stumbled upon:

ibtool: compile:  gcc -g -O1 -DNDEBUG -DDEBUGVM=0 -msse2 -Wall -pthread
-DLSB_FIRST=1 -m64 -Wno-missing-braces -Wno-unknown-pragmas -Wno-u
                                        nused-value -Wno-unused-label
-Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable
-DHAVE_CONFIG_H -I/home/edwin/Smalltal
            k5/opensmalltalk-vm/build.linux64x64/squeak.stack.spur/build
-I/home/edwin/Smalltalk5/opensmalltalk-vm/build.linux64x64/squeak.stack.spur/b
                                                uild
-I/home/edwin/Smalltalk5/opensmalltalk-vm/platforms/unix/vm
-I/home/edwin/Smalltalk5/opensmalltalk-vm/platforms/Cross/vm -I/home/edwin

/Smalltalk5/opensmalltalk-vm/spurstack64src/vm -I/usr/local/include -m64
-Wno-missing-braces -Wno-unknown-pragmas -Wno-unused-value -Wno-un
                                        used-label -Wno-unused-function
-Wno-unused-variable -Wno-unused-but-set-variable -c
/home/edwin/Smalltalk5/opensmalltalk-vm/platforms/unix
                            /vm-sound-ALSA/sqUnixSoundALSA.c  -fPIC -DPIC
-o .libs/sqUnixSoundALSA.o

/home/edwin/Smalltalk5/opensmalltalk-vm/platforms/unix/vm-sound-ALSA/sqUnixSoundALSA.c:951:13:
error: 'devname' redeclared as different kin
                  d of symbol


  951 | static char devname[MAX_NAME_LEN];


      |             ^~~~~~~


In file included from
/home/edwin/Smalltalk5/opensmalltalk-vm/platforms/Cross/vm/sq.h:20,


                 from
/home/edwin/Smalltalk5/opensmalltalk-vm/platforms/unix/vm-sound-ALSA/sqUnixSoundALSA.c:31:

/usr/include/stdlib.h:277:7: note: previous declaration of 'devname' was
here

  277 | char *devname(__dev_t, __mode_t);



Does anybody have an idea for a quick cheat to get trough the compilation,
besides starting to rewrite parts of the code?

Kind regards,

Edwin Ancaer
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20200407/cfcb11e8/attachment.html>


More information about the Squeak-dev mailing list