I've just built opendx 4.3.0, from the tar ball David Thompson provided, on a Solaris 8 Sun Blade machine and an IRIX64 sgi Onyx 300. The libtool method seemed to work reasonably, with tweaks similar to the previous version required to fully build.
I used the 'configure' script supplied in the tar and did not regenerate it. Both systems warned about macro RAND_MAX being re-declared in a standard library and in dxconfig.h. Please see my OTHER BUGS bit at the end too. Here's a summary: Solaris 8 Sun WorkShop 6 update 2 C 5.3 2001/05/15 I used gnu make (Sun make didn't work). This is not too surprising. The link of dxui failed: CC -g -I/usr/openwin/include -o dxui [LONG FILE LIST CUT] ild: (undefined symbol) AllocatorDictionary<StandIn,StandIn*(*)(WorkSpace*,Node*)>::__descr -- referenced in the data segment of ../dxuilib/libDXUI.a(SIAllocatorDictionary.o) [Hint: static member AllocatorDictionary<StandIn,StandIn*(*)(WorkSpace*,Node*)>::__descr must be defined in the program] (Six similar messages) The problem seems to be to do with the macro NO_CC_TEMPLATES Here's a sample from base/UIConfig.h : /* // Define NO_CC_TEMPLATES if the C++ compiler cannot handle 3.0 templates. */ #if defined(intelnt) || defined(aviion) || defined(solaris) || defined(WIN32) #define NO_CC_TEMPLATES #endif So with 'solaris' defined we also have NO_CC_TEMPLATES . BUT UIConfig.h is not included in these headers which test for NO_CC_TEMPLATES: ./src/uipp/dxuilib/NDAllocatorDictionary.h ./src/uipp/dxuilib/CDBAllocatorDictionary.h ./src/uipp/dxuilib/SIAllocatorDictionary.h So I added the following line to the start of them. #include "../base/UIConfig.h" IRIX64: setenv LIBS "-ldf -lz -ljpeg -lnetcdf" setenv CC "cc" setenv CXX "CC" setenv CFLAGS "-64 -O -mips4 -OPT:Olimit=0" setenv CXXFLAGS "-64 -O -mips4 -LANG:std -OPT:Olimit=0" setenv LDFLAGS "-64 -mips4" setenv SGI_ABI "-64" ./configure --prefix=/tmp/opendx4.3.0 --with-large-arenas=yes An error came up in these files: cc-1168 CC: ERROR File = DXWindow.C, Line = 821 cc-1168 CC: ERROR File = ResourceManager.C, Line = 37 cc-1168 CC: ERROR File = ResourceManager.C, Line = 147 cc-1168 CC: ERROR File = ResourceManager.C, Line = 163 cc-1168 CC: ERROR File = ResourceManager.C, Line = 176 cc-1168 CC: ERROR File = ToolSelector.C, Line = 239 All have the same error: The indicated type conversion is invalid. while (s=(Symbol)iter.getNext()) { The problem is that Symbol is of type int: (SymbolManager.h:typedef int Symbol;) so the cast from 64-bit pointer to int fails. Replacing with the following sorts it out: while (s=*(Symbol*)iter.getNext()) { (But is this what is intended?) OTHER BUGS: How about sorting out some other bugs before 4.3 is released : See my bug report on isosurface.c in the bug reporting system (#100), also Describe crashes dxexec if a 4-D variable with 'Invalid positions' is used (example net attached). The bug is in line 600 of src/exec/libdx/box.c. The following: done: if (ich) DXFreeInvalidComponentHandle(ich); if (box && !_copyout(box, m, box_array)) goto null_return; return (Object) f; null_return: if (ich) DXFreeInvalidComponentHandle(ich); return NULL; Should be replaced with: done: if (ich){ DXFreeInvalidComponentHandle(ich); ich = NULL; } if (box && !_copyout(box, m, box_array)) goto null_return; return (Object) f; null_return: if (ich) DXFreeInvalidComponentHandle(ich); return NULL; The problem is that _copyout fails with 4-D data (which is a pain), then it tries to free ich again in null_return. Thanks, John
crash_describe.net
Description: Binary data