Making OpenDAB, FEC and the Psion Wavefinder work on x64
I’ve had a Psion Wavefinder for a while now, and it’s never really worked that well due to the rather bad combination of poorly written amateur radio related software, out of date build environments (see the previous argument), and the fact that most amateur radio enthusiasts seem to use Windows (see the first argument again)
OpenDAB has been around for a while, and it certainly seems promising. However, although it’s not an absolute requirement, the use of DAB+ is preferable, and that subsequently requires Phil Karns FEC library.
Now Phil Karn might be a genius, but he doesn’t reply to emails, and nor does he keep his build environment or OS up to date. FEC 3.0.1 is now over 4 years, doesn’t compile with modern GCC versions, and requires some massaging to make work.
Firstly, GCC no longer allows labels at the end of compound statements. This screws up dotprod.c
Next, well, I dunno what’s going on. ld chucks its guts up at the end of the build on x64 (how long has x64 been around for now?), and suggests using -fPIC. So, makefile.in was tweaked to include -fPIC in CFLAGS
I believe -m32 will do the job too, so that it’s built for x86, but hey, this works. If anyone wishes to elaborate on the pros and cons of Position Independent Code vs x86 on x64 then comment away.
In addition to this, OpenDAB supplied a patch to be applied to fec.h, as described in their documentation.
Anyway, to make life easier I created a patch. This includes the OpenDAB patch, my own patch, and a patch found at http://mmbtools.crc.ca/component/option,com_fireboard/Itemid,55/func,view/catid,7/id,178/
Just untar the standard fec-3.0.1 package, cd into it, and patch it as below. A handy one liner is also evident on this example.
bagpuss@mine:~/src/WaveFinder/fec $ wget –quiet http://ka9q.net/code/fec/fec-3.0.1.tar.bz2 ; wget –quiet http://lodge.glasgownet.com/bitsnbobs/kg_fec-3.0.1.patch ; tar -xjf fec-3.0.1.tar.bz2 ; cd fec-3.0.1/ ; patch < ../kg_fec-3.0.1.patch
patching file configure
patching file cpu_mode_port.c
patching file dotprod.c
patching file fec.h
patching file makefile.in
Once patched, ./configure && make && make install should have FEC up and running, and ready for OpenDAB. I have it working here on my trusty x64 Ubuntu 11.04 (actually it’s Mint 11) desktop.