package/nvidia-driver: CUDA support does not require X.org
Currently, nvidia-driver always installs the X.org driver, assuming this is a requirement for all functionalities provided by nvidia-driver, thus pulling in quite a bunch of X.org packages. However, it is perfectly legit to be doing CUDA (and OpenCL) work without the full X.org stack, and indeed the NVidia CUDA and OpenCL libraries do not require the X.org stack. Split the configuration so that it is posible to install the different parts independently from each others, so that CUDA can be installed all on its own. Reported-by: Al West <al.west@v-nova.com> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Al West <al.west@v-nova.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
parent
92988923db
commit
4ed3c04950
@ -1,19 +1,11 @@
|
||||
comment "nvidia-driver needs an (e)glibc toolchain and a modular Xorg server"
|
||||
comment "nvidia-driver needs an (e)glibc toolchain"
|
||||
depends on BR2_i386 || BR2_x86_64
|
||||
depends on !BR2_TOOLCHAIN_USES_GLIBC \
|
||||
|| !BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR
|
||||
depends on !BR2_TOOLCHAIN_USES_GLIBC
|
||||
|
||||
config BR2_PACKAGE_NVIDIA_DRIVER
|
||||
bool "nvidia-driver"
|
||||
depends on BR2_i386 || BR2_x86_64
|
||||
depends on BR2_TOOLCHAIN_USES_GLIBC
|
||||
depends on BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR
|
||||
select BR2_PACKAGE_MESA3D_HEADERS
|
||||
select BR2_PACKAGE_XLIB_LIBX11
|
||||
select BR2_PACKAGE_XLIB_LIBXEXT
|
||||
select BR2_PACKAGE_HAS_LIBGL
|
||||
select BR2_PACKAGE_HAS_LIBEGL
|
||||
select BR2_PACKAGE_HAS_LIBGLES
|
||||
help
|
||||
The binary-only driver blob for NVidia cards.
|
||||
This is the userland part only.
|
||||
@ -22,6 +14,22 @@ config BR2_PACKAGE_NVIDIA_DRIVER
|
||||
|
||||
if BR2_PACKAGE_NVIDIA_DRIVER
|
||||
|
||||
comment "nvidia-driver X.org drivers needs a modular Xorg server"
|
||||
depends on !BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR
|
||||
|
||||
config BR2_PACKAGE_NVIDIA_DRIVER_XORG
|
||||
bool "X.org drivers"
|
||||
default y
|
||||
depends on BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR
|
||||
select BR2_PACKAGE_MESA3D_HEADERS
|
||||
select BR2_PACKAGE_XLIB_LIBX11
|
||||
select BR2_PACKAGE_XLIB_LIBXEXT
|
||||
select BR2_PACKAGE_HAS_LIBGL
|
||||
select BR2_PACKAGE_HAS_LIBEGL
|
||||
select BR2_PACKAGE_HAS_LIBGLES
|
||||
|
||||
if BR2_PACKAGE_NVIDIA_DRIVER_XORG
|
||||
|
||||
config BR2_PACKAGE_PROVIDES_LIBGL
|
||||
default "nvidia-driver"
|
||||
|
||||
@ -31,13 +39,6 @@ config BR2_PACKAGE_PROVIDES_LIBEGL
|
||||
config BR2_PACKAGE_PROVIDES_LIBGLES
|
||||
default "nvidia-driver"
|
||||
|
||||
config BR2_PACKAGE_NVIDIA_DRIVER_CUDA
|
||||
bool "CUDA support"
|
||||
|
||||
config BR2_PACKAGE_NVIDIA_DRIVER_OPENCL
|
||||
bool "OpenCL support"
|
||||
depends on BR2_PACKAGE_NVIDIA_DRIVER_CUDA
|
||||
|
||||
config BR2_PACKAGE_NVIDIA_DRIVER_PRIVATE_LIBS
|
||||
bool "Install private libraries"
|
||||
help
|
||||
@ -49,6 +50,15 @@ config BR2_PACKAGE_NVIDIA_DRIVER_PRIVATE_LIBS
|
||||
Say 'y' here if you plan on running a program that uses
|
||||
those private libraries.
|
||||
|
||||
endif # BR2_PACKAGE_NVIDIA_DRIVER_XORG
|
||||
|
||||
config BR2_PACKAGE_NVIDIA_DRIVER_CUDA
|
||||
bool "CUDA support"
|
||||
|
||||
config BR2_PACKAGE_NVIDIA_DRIVER_OPENCL
|
||||
bool "OpenCL support"
|
||||
depends on BR2_PACKAGE_NVIDIA_DRIVER_CUDA
|
||||
|
||||
comment "nvidia kernel module needs a kernel to be built"
|
||||
depends on !BR2_LINUX_KERNEL
|
||||
|
||||
|
@ -13,6 +13,8 @@ NVIDIA_DRIVER_LICENSE_FILES = LICENSE
|
||||
NVIDIA_DRIVER_REDISTRIBUTE = NO
|
||||
NVIDIA_DRIVER_INSTALL_STAGING = YES
|
||||
|
||||
ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_XORG),y)
|
||||
|
||||
# Since nvidia-driver are binary blobs, the below dependencies are not
|
||||
# strictly speaking build dependencies of nvidia-driver. However, they
|
||||
# are build dependencies of packages that depend on nvidia-driver, so
|
||||
@ -38,15 +40,6 @@ NVIDIA_DRIVER_LIBS = \
|
||||
libvdpau libvdpau_nvidia \
|
||||
libnvidia-ml
|
||||
|
||||
ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA),y)
|
||||
NVIDIA_DRIVER_LIBS += libcuda libnvidia-compiler libnvcuvid libnvidia-encode
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_OPENCL),y)
|
||||
NVIDIA_DRIVER_LIBS_NO_VERSION += libOpenCL.so.1.0.0
|
||||
NVIDIA_DRIVER_LIBS += libnvidia-opencl
|
||||
endif
|
||||
|
||||
# Those libraries are 'private' libraries requiring an agreement with
|
||||
# NVidia to develop code for those libs. There seems to be no restriction
|
||||
# on using those libraries (e.g. if the user has such an agreement, or
|
||||
@ -60,6 +53,17 @@ NVIDIA_DRIVER_X_MODS = drivers/nvidia_drv.so \
|
||||
extensions/libglx.so.$(NVIDIA_DRIVER_VERSION) \
|
||||
libnvidia-wfb.so.$(NVIDIA_DRIVER_VERSION)
|
||||
|
||||
endif # X drivers
|
||||
|
||||
ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA),y)
|
||||
NVIDIA_DRIVER_LIBS += libcuda libnvidia-compiler libnvcuvid libnvidia-encode
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_OPENCL),y)
|
||||
NVIDIA_DRIVER_LIBS_NO_VERSION += libOpenCL.so.1.0.0
|
||||
NVIDIA_DRIVER_LIBS += libnvidia-opencl
|
||||
endif
|
||||
|
||||
# The downloaded archive is in fact an auto-extract script. So, it can run
|
||||
# virtually everywhere, and it is fine enough to provide useful options.
|
||||
# Except it can't extract into an existing (even empty) directory.
|
||||
|
Loading…
Reference in New Issue
Block a user