pikeyd165 is provided as part of the Pi2Jamma recalbox distribution and is responsible for making the arcade controls (such as joystick and buttons) to be recognized by the Linux operating subsystem. Unfortunately, the version of pikeyd165 provided by Pi2Jamma is compiled as an ARM 32bit binary and might not match the various architectures out there running Linux and utilizing Pi2Jamma. The following tutorial will document how to cross-compile pikeyd165 to a target architecture.
svn co http://svn.grimore.org/pikeyd165
and conveniently includes the BCM2835 driver source.
apt install gcc make gcc-arm-linux-gnueabi binutils-arm-linux-gnueabi
apt install gcc make gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu
First, the BCM2835 library must be compiled inside the pikeyd165 directory:
cd pikeyd165/bcm2835 make clean ./configure --target=aarch64-linux-gnu --host=aarch64-linux-gnu make
where:
aarch64-linux-gnu is the cross-compiler, in this case, to AARCH64.
This should have created src/libbcm2835.a and src/libbcm2835.h.
Next, pikeyd165 has to be compiled. The pikeyd165/pikeyd165/Makefile file has to be edited in order to replace:
CC := aarch64-linux-gnu-gcc
with the desired cross-compiler.
After editing the Makefile, compile pikeyd165:
cd pikeyd165 make
and there should be a resulting binary pikeyd165.
Finally, transfer the pikeyd165 binary to the arcade machine running Pi2Jamma and follow the instructions to set the arcade machine up.