e4d55d3373
This commit improves the handling of the "atomic stuff" in the libdrm
package. libdrm can either use the atomic intrinsics (4 byte variant)
when available, or otherwise can use libatomic_ops. Note that the
dependency on atomic operations is not from libdrm itself, but only
from some specific DRM drivers only.
Amongst other things, it fixes the build of the libdrm package on
SPARCv8, therefore fixing:
http://autobuild.buildroot.org/results/74dd29b5ea146c320fde80a87a2fc910de9b7f60/
This commit does a number of changes that are all related to each
other:
- Removes the dependency of the Intel DRM driver on
libatomic_ops. The Intel DRM driver builds perfectly fine without
libatomic_ops, as long as 4-byte variant __sync operations are
available, which is always the case on x86 and x86_84 (which are
the only architectures on which the Intel DRM driver can be
enabled).
- Adds an hidden Config.in boolean option
BR2_PACKAGE_LIBDRM_HAS_ATOMIC that allows DRM driver that need
atomic operation to know whether atomic support is available
(either through intrinsics or through libatomic_ops).
- Adds an hidden BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC Config.in option
that DRM drivers that need atomic operation should select to ensure
that the relevant dependencies are selected. It simply selects
libatomic_ops if 4-byte atomic intrinsics are not available. We
could let each DRM driver do this, but having an intermediate
option avoids a bit of duplication.
- Adds a patch that defines AO_REQUIRE_CAS before including
<atomic_ops.h>. This is needed because libdrm uses the
AO_compare_and_swap_full() which is only provided on all
architectures when AO_REQUIRE_CAS is defined. The exact same fix
was done in the erlang package in commit
4a9df29424
.
- Adds the dependency on libatomic_ops when the package is enabled,
and passes the necessary CFLAGS on SPARCv8 to make the thing build
properly. The same CFLAGS are passed in the nginx package and bdwgc
package.
Cc: Waldemar Brodkorb <wbx@openadk.org>
Cc: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
106 lines
2.5 KiB
Plaintext
106 lines
2.5 KiB
Plaintext
config BR2_PACKAGE_LIBDRM
|
|
bool "libdrm"
|
|
select BR2_PACKAGE_LIBPTHREAD_STUBS
|
|
depends on BR2_TOOLCHAIN_HAS_THREADS # libpthread-stubs
|
|
help
|
|
Direct Rendering Manager
|
|
|
|
http://dri.freedesktop.org/libdrm/
|
|
|
|
if BR2_PACKAGE_LIBDRM
|
|
|
|
config BR2_PACKAGE_LIBDRM_HAS_ATOMIC
|
|
bool
|
|
default y if BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS || \
|
|
BR2_TOOLCHAIN_HAS_SYNC_4
|
|
|
|
config BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC
|
|
bool
|
|
select BR2_PACKAGE_LIBATOMIC_OPS if !BR2_TOOLCHAIN_HAS_SYNC_4
|
|
|
|
config BR2_PACKAGE_LIBDRM_INSTALL_TESTS
|
|
bool "Install test programs"
|
|
help
|
|
This option allows to install the libdrm test programs.
|
|
|
|
menu "DRM Drivers"
|
|
|
|
config BR2_PACKAGE_LIBDRM_INTEL
|
|
bool "intel"
|
|
select BR2_PACKAGE_LIBPCIACCESS
|
|
depends on BR2_i386 || BR2_x86_64
|
|
depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC
|
|
select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC
|
|
help
|
|
Install intel graphics driver.
|
|
|
|
config BR2_PACKAGE_LIBDRM_RADEON
|
|
bool "radeon"
|
|
depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC
|
|
select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC
|
|
help
|
|
Install AMD/ATI graphics driver.
|
|
|
|
config BR2_PACKAGE_LIBDRM_AMDGPU
|
|
bool "amdgpu"
|
|
depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC
|
|
select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC
|
|
help
|
|
Install AMD GPU driver.
|
|
|
|
config BR2_PACKAGE_LIBDRM_NOUVEAU
|
|
bool "nouveau"
|
|
depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC
|
|
select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC
|
|
help
|
|
Install NVIDIA graphics driver.
|
|
|
|
config BR2_PACKAGE_LIBDRM_VMWGFX
|
|
bool "vmwgfx"
|
|
depends on BR2_i386 || BR2_x86_64
|
|
help
|
|
Installs Vmware graphics driver.
|
|
|
|
config BR2_PACKAGE_LIBDRM_OMAP
|
|
bool "omap (experimental)"
|
|
depends on BR2_arm
|
|
depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC
|
|
select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC
|
|
help
|
|
Install the TI OMAP driver using an experimental API.
|
|
|
|
config BR2_PACKAGE_LIBDRM_EXYNOS
|
|
bool "exynos (experimental)"
|
|
depends on BR2_arm
|
|
help
|
|
Install Samsung Exynos driver using an experimental API.
|
|
|
|
config BR2_PACKAGE_LIBDRM_FREEDRENO
|
|
bool "freedreno"
|
|
depends on BR2_arm || BR2_aarch64 || BR2_aarch64_be
|
|
depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC
|
|
select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC
|
|
help
|
|
Install Qualcomm Snapdragon driver.
|
|
|
|
config BR2_PACKAGE_LIBDRM_TEGRA
|
|
bool "tegra (experimental)"
|
|
depends on BR2_arm
|
|
depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC
|
|
select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC
|
|
help
|
|
Install NVIDIA Tegra driver using an experimental API.
|
|
|
|
config BR2_PACKAGE_LIBDRM_VC4
|
|
bool "vc4"
|
|
depends on BR2_arm
|
|
help
|
|
Install vc4 (Raspberry Pi) driver.
|
|
|
|
endmenu
|
|
|
|
endif
|
|
|
|
comment "libdrm needs a toolchain w/ threads"
|
|
depends on !BR2_TOOLCHAIN_HAS_THREADS
|