bondagit / ravenna-alsa-lkm

RAVENNA ALSA LKM
20 stars 9 forks source link

gcc 14.2.1 is more strict about pointer casting by default #25

Closed ccaudle closed 4 weeks ago

ccaudle commented 1 month ago

On a Fedora 40 system with gcc updated to 14.2.1 and kernel updated to 6.11.5 the Merging driver build now fails when an int structure pointer is cast to void.

$ make make -C /lib/modules/6.11.5-200.fc40.x86_64/build/ M=/home/chris/Src/Ravenna/aes67-linux-daemon/3rdparty/ravenna-alsa-lkm/driver modules make[1]: Entering directory '/usr/src/kernels/6.11.5-200.fc40.x86_64' CC [M] /home/chris/Src/Ravenna/aes67-linux-daemon/3rdparty/ravenna-alsa-lkm/driver/c_wrapper_lib.o CC [M] /home/chris/Src/Ravenna/aes67-linux-daemon/3rdparty/ravenna-alsa-lkm/driver/audio_driver.o /home/chris/Src/Ravenna/aes67-linux-daemon/3rdparty/ravenna-alsa-lkm/driver/audio_driver.c:2218:19: error: initialization of ‘void ()(struct platform_device ) from incompatible pointer type ‘int ()(struct platform_device )’ [-Wincompatible-pointer-types] 2218 | .remove = mr_alsa_audio_chip_remove, | ^~~~~~~~~ /home/chris/Src/Ravenna/aes67-linux-daemon/3rdparty/ravenna-alsa-lkm/driver/audio_driver.c:2218:19: note: (near initialization for ‘mr_alsa_audio_driver..remove’) make[3]: [scripts/Makefile.build:244: /home/chris/Src/Ravenna/aes67-linux-daemon/3rdparty/ravenna-alsa-lkm/driver/audio_driver.o] Error 1 make[2]: [/usr/src/kernels/6.11.5-200.fc40.x86_64/Makefile:1966: /home/chris/Src/Ravenna/aes67-linux-daemon/3rdparty/ravenna-alsa-lkm/driver] Error 2 make[1]: [Makefile:236: __sub-make] Error 2 make[1]: Leaving directory '/usr/src/kernels/6.11.5-200.fc40.x86_64' make: [Makefile:15: modules] Error 2

bondagit commented 4 weeks ago

please check you are using the latest driver version in the 'aes67-daemon' branch of this repo

ccaudle commented 4 weeks ago

I just noticed that the build.sh script sets the compiler to clang, so maybe the gcc version is irrelevant. Before building, I git pull in the top level directory where I cloned the project, then I use the cleanup.sh and build.sh scripts to rebuild.
After running cleanup.sh I see that there are no sub-directories in the 3rdparty directory, so I assumed that the build.sh script was pulling in the latest driver. The git origin I have in my cloned directory is: https://github.com/bondagit/aes67-linux-daemon.git The driver submodule in the .git/config is listed as: https://github.com/bondagit/ravenna-alsa-lkm.git

I see that the build.sh script runs git submodule update --init --recursive so I think that should always build the latest driver version, correct?

bondagit commented 4 weeks ago

no, you are not using the latest driver. Please go to 3rdparty/ravenna-alsa-lkm and issue a: git checkout aes67-daemon This should fix the problem you have. I will change the build.sh script to point to the latest version of the driver.

ccaudle commented 4 weeks ago

Thank you, all good here.

ccaudle commented 4 weeks ago

Problem caused by not using the latest driver code. I expected build.sh to always update to latest but it was not.