DisplayLink / evdi

Extensible Virtual Display Interface
MIT License
689 stars 179 forks source link

Evdi does not compile on RedHat 8.7 (drm_irq.h missing) #420

Closed thanosz closed 10 months ago

thanosz commented 1 year ago

It seems that Red Hat has backported the removal of drm_irq.h. Compilation fails with

CFLAGS="-isystem./include -isystem./include/uapi -Werror -Wextra -Wall -Wno-error=missing-field-initializers -Werror=sign-compare -Wmissing-prototypes -Wstrict-prototypes -Werror=discarded-qualifiers " make -C module
make[1]: Entering directory '/home/than/Downloads/evdi-1.13.1/module'
make -C /lib/modules/4.18.0-425.19.2.el8_7.x86_64/build M=$PWD
make[2]: Entering directory '/usr/src/kernels/4.18.0-425.19.2.el8_7.x86_64'
  CC [M]  /home/than/Downloads/evdi-1.13.1/module/evdi_platform_drv.o
gcc: warning: include/drm: linker input file unused because linking not done
  CC [M]  /home/than/Downloads/evdi-1.13.1/module/evdi_platform_dev.o
In file included from /home/than/Downloads/evdi-1.13.1/module/evdi_platform_dev.c:27:
/home/than/Downloads/evdi-1.13.1/module/evdi_drm_drv.h:32:10: fatal error: drm/drm_irq.h: No such file or directory
 #include <drm/drm_irq.h>
          ^~~~~~~~~~~~~~~
compilation terminated.
make[3]: *** [scripts/Makefile.build:318: /home/than/Downloads/evdi-1.13.1/module/evdi_platform_dev.o] Error 1
make[2]: *** [Makefile:1585: _module_/home/than/Downloads/evdi-1.13.1/module] Error 2
make[2]: Leaving directory '/usr/src/kernels/4.18.0-425.19.2.el8_7.x86_64'
make[1]: *** [Makefile:86: module] Error 2
make[1]: Leaving directory '/home/than/Downloads/evdi-1.13.1/module'
make: *** [Makefile:10: all] Error 2
elguero commented 1 year ago

Hi @thanosz

I believe this was fixed with this commit.

https://github.com/DisplayLink/evdi/commit/c1865ecbf04df6759e336e4c68a3ebf895bd01d1

thanosz commented 1 year ago

It bypasses it but now there is a different issue

CFLAGS="-isystem./include -isystem./include/uapi -Werror -Wextra -Wall -Wno-error=missing-field-initializers -Werror=sign-compare -Wmissing-prototypes -Wstrict-prototypes -Werror=discarded-qualifiers " make -C module
make[1]: Entering directory '/home/than/Downloads/evdi-1.14.0/module'
make -C /lib/modules/4.18.0-425.19.2.el8_7.x86_64/build M=$PWD
make[2]: Entering directory '/usr/src/kernels/4.18.0-425.19.2.el8_7.x86_64'
  Building modules, stage 2.
  MODPOST 1 modules
make[2]: Leaving directory '/usr/src/kernels/4.18.0-425.19.2.el8_7.x86_64'
make[1]: Leaving directory '/home/than/Downloads/evdi-1.14.0/module'
CFLAGS="-I../module -Werror -Wextra -Wall -Wno-error=missing-field-initializers -Werror=sign-compare -Wmissing-prototypes -Wstrict-prototypes -Werror=discarded-qualifiers " make -C library
make[1]: Entering directory '/home/than/Downloads/evdi-1.14.0/library'
make[1]: Nothing to be done for 'default'.
make[1]: Leaving directory '/home/than/Downloads/evdi-1.14.0/library'
CXXFLAGS="-I../module -I../library -Werror -Wextra -Wall -Wno-error=missing-field-initializers -Werror=sign-compare " make -C pyevdi
make[1]: Entering directory '/home/than/Downloads/evdi-1.14.0/pyevdi'
g++ -I../library $(python3 -m pybind11 --includes) -std=c++11 -fPIC -I../module -I../library -Werror -Wextra -Wall -Wno-error=missing-field-initializers -Werror=sign-compare  -c PyEvdi.cpp
g++ -I../library $(python3 -m pybind11 --includes) -std=c++11 -fPIC -I../module -I../library -Werror -Wextra -Wall -Wno-error=missing-field-initializers -Werror=sign-compare  -c Card.cpp
g++ -I../library $(python3 -m pybind11 --includes) -std=c++11 -fPIC -I../module -I../library -Werror -Wextra -Wall -Wno-error=missing-field-initializers -Werror=sign-compare  -c Buffer.cpp
g++ PyEvdi.o Card.o Buffer.o -L../library -Wl,--no-undefined $(python3-config --ldflags --embed) -shared -levdi -Wl,-soname,PyEvdi$(python3-config --extension-suffix).so.1 -o PyEvdi$(python3-config --extension-suffix)
g++: error: Usage:: No such file or directory
g++: error: unrecognized command line option '--prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir'
make[1]: *** [Makefile:35: PyEvdi$(python3-config)] Error 1
make[1]: Leaving directory '/home/than/Downloads/evdi-1.14.0/pyevdi'
make: *** [Makefile:12: all] Error 2

python3 --version Python 3.6.8

It seems there is no --embed option (python3-config --ldflags --embed), removing it works