On Sun, Dec 13, 2020 at 07:03:47PM +0100, stes@PANDORA.BE wrote:
In the cmake.config
platforms/unix/plugins/FloatMathPlugin/config.cmake
it says:
# fdlibm.h does not recognize x86_64, so set endianness here for all platforms.
TEST_BIG_ENDIAN (IS_BIG_ENDIAN) IF (NOT IS_BIG_ENDIAN) PLUGIN_DEFINITIONS (-D__LITTLE_ENDIAN=1) ENDIF ()
So basically the cmake is testing IS_BIG_ENDIAN and if not so, then it defines __LITTLE_ENDIAN.
That's fine but the problem is that the old code in the fdlibm.h header is #define __LITTLE_ENDIAN which (1) is a duplicate def and (2) defines to a different value (because it does not define it =1).
So assuming you want to keep the definition at the cmake level (for x64), then in the header file it should be conditional
#ifndef __LITTLE_ENDIAN (if not already defined on the command line)
David Stes
Oh, that is good, the config.cmake is already handling it. I like your idea of using #ifndef __LITTLE_ENDIAN to prevent redefinition in fdlibm.h. It is a minimal change to the original Sun code and it will have no adverse effect on other platforms.
I tried this on my Linux box. It compiles without warnings, and all of the FloatMathPluginTests tests are green (these are in the VMMaker package, not Squeak trunk).
It's a trivial change but I'm attaching a copy of the file I used for reference. If you can confirm that this does what is needed on Solaris, I'll push the update to SVN for you.
Thanks! Dave