On 1/12/26 01:52, Wolfgang Gaggl wrote:
...it appears to solve some problems, I just need to post about them first ;) Problem solved: the endian logic in d_osc.c which is initially correctly defined in the first few lines of code, was overridden by yet another logic to determine HIOFFSET and LOWOFFSET for endianness. Works now, SGI Irix 6.5 with Pd 0.40, analog stereo audio, ADAT, Midi (even selectable from the GUI menu).
great to see you proceed.
in the meantime, i found an emulator for the SGI Indy [1], and tried to build the latest and greatest Pd (0.56-2), but I'm afraid I made less progress than you did...
the disk image has IRIX-6.5 (6.5.22 iirc) and came with a number of freeware tools installed, including gcc and autotools, so in theory it should have worked.
(in the meantime i've managed to complete break my disk, so the report below is from the top of my head and might be lacking some important details)
# autotools
unfortunately, the autotools version installed (no idea which version) was just too old. this was easily circumvented by just running autoreconf on a modern machine and copy the generated files to the indy (the proper way would have been to do a "make dist" and copy the generated tarball)
# configure
the current configure script uses "grep -w", which is not available on IRIX-6.2 [2820] this appears to be a minor issue (some tests will fail, that probably would have failed anyhow) i simply ignored this, and i got some Makefiles
configure detected and used the installed 'gcc' (GCC 3.3! yay!)
# make
the generated Makefile uses some modern(?) GNU make trickery to set the
WISHDEFINE and DEKEN_DEFINE makevars to some preprocessor macros, which
the installed version of 'make' didn't like.
i simply set these make variables to empty strings on the cmdline (make WISHDEFINE="" DEKEN_DEFINE="") to bypass this.
also, the top-level makefile uses make -C <path> to build the various
subprojects, which installed make did not understand.
i simply ignored this and ran 'make' directly in src/
probably running 'gmake' instead of 'make' would have fixed both issues.
# source: endianness detection
the current code to detect endianness did not work (as you discovered). with newer versions of Pd, all the endianness detection code is now in m_private_utils.h, so I fixed it there.
# source: C99 with the above, I managed to build all of src/, with the notable exception of src/x_vexp_fun.c [expr] uses C99 features (like 'isnan()' [79865015]), and this is where my adventure ended.
the system (math.h!) are specific to the MIPSpro compiler (using some
private __generic macro that is not available on gcc)
about missing licenses, but this can be ignored. unfortunately, the disk image lacks the actual backend compiler /usr/lib32/cmplrs/fec, so the MIPSpro compiler is not usable. funnily, the MIPSpro C++ compiler (using /usr/lib32/cmplrs/fecc as backend) did work.
this is where my little adventure ended: i tried to (re)install some packages that should provide the (MIPSpro) C-compiler, but this uninstalled half of the system and now it doesn't boot any more.
I didn't try to build Pd with the c++ compiler (as this typically does not work), and now it's too late to try...
of course, even if i did manage to compile, the audio backend for the SGI had been removed for the Pd-0.41; but I guess it would be possible to ressurect it from the release history
fmdasdr IOhannes
[1] https://forums.irixnet.org/thread-4081.html [2820] https://github.com/pure-data/pure-data/issues/2820 [79865015] https://stackoverflow.com/questions/79865015