Bug 1954903 - Allow to use system drm libs instead of bundled r=stransky,mjf
Introduce "--with-system-libdrm" option, allowing to build Firefox with system drm library and to find system drm header files. Also unify all drm includes to match both system and bundled paths. Differential Revision: https://phabricator.services.mozilla.com/D242099
This commit is contained in:
@@ -571,6 +571,19 @@ def write_mozbuild(
|
|||||||
mb.write(' LOCAL_INCLUDES += [ "/third_party/gbm/gbm/" ]\n')
|
mb.write(' LOCAL_INCLUDES += [ "/third_party/gbm/gbm/" ]\n')
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
|
try:
|
||||||
|
if (
|
||||||
|
relsrcdir
|
||||||
|
in write_mozbuild_variables["INCLUDE_SYSTEM_LIBDRM_HANDLING"]
|
||||||
|
):
|
||||||
|
mb.write('CXXFLAGS += CONFIG["MOZ_LIBDRM_CFLAGS"]\n')
|
||||||
|
mb.write('if not CONFIG["MOZ_SYSTEM_LIBDRM"]:\n')
|
||||||
|
mb.write(' LOCAL_INCLUDES += [ "/third_party/drm/drm/",\n')
|
||||||
|
mb.write(
|
||||||
|
' "/third_party/drm/drm/include/" ]\n'
|
||||||
|
)
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
try:
|
try:
|
||||||
if (
|
if (
|
||||||
relsrcdir
|
relsrcdir
|
||||||
|
|||||||
@@ -1261,6 +1261,12 @@ if CONFIG["MOZ_SYSTEM_GBM"]:
|
|||||||
"gbm.h",
|
"gbm.h",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
if CONFIG["MOZ_SYSTEM_LIBDRM"]:
|
||||||
|
system_headers += [
|
||||||
|
"drm.h",
|
||||||
|
"xf86drm.h",
|
||||||
|
]
|
||||||
|
|
||||||
if CONFIG["MOZ_JACK"]:
|
if CONFIG["MOZ_JACK"]:
|
||||||
system_headers += [
|
system_headers += [
|
||||||
"jack/jack.h",
|
"jack/jack.h",
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
#ifdef DRM_FORMAT_MOD_INVALID
|
#ifdef DRM_FORMAT_MOD_INVALID
|
||||||
# undef DRM_FORMAT_MOD_INVALID
|
# undef DRM_FORMAT_MOD_INVALID
|
||||||
#endif
|
#endif
|
||||||
#include "drm_fourcc.h"
|
#include <libdrm/drm_fourcc.h>
|
||||||
|
|
||||||
#ifdef MOZ_LOGGING
|
#ifdef MOZ_LOGGING
|
||||||
# undef DMABUF_LOG
|
# undef DMABUF_LOG
|
||||||
|
|||||||
@@ -34,7 +34,9 @@ if CONFIG['MOZ_WIDGET_GTK']:
|
|||||||
CXXFLAGS += CONFIG['MOZ_GTK3_CFLAGS']
|
CXXFLAGS += CONFIG['MOZ_GTK3_CFLAGS']
|
||||||
if CONFIG['MOZ_ENABLE_VAAPI'] or CONFIG['MOZ_ENABLE_V4L2']:
|
if CONFIG['MOZ_ENABLE_VAAPI'] or CONFIG['MOZ_ENABLE_V4L2']:
|
||||||
UNIFIED_SOURCES += ['../FFmpegVideoFramePool.cpp']
|
UNIFIED_SOURCES += ['../FFmpegVideoFramePool.cpp']
|
||||||
LOCAL_INCLUDES += ['/third_party/drm/drm/include/libdrm/']
|
CXXFLAGS += CONFIG['MOZ_DRM_CFLAGS']
|
||||||
|
if not CONFIG['MOZ_SYSTEM_LIBDRM']:
|
||||||
|
LOCAL_INCLUDES += ['/third_party/drm/drm/include/']
|
||||||
USE_LIBS += ['mozva']
|
USE_LIBS += ['mozva']
|
||||||
DEFINES['MOZ_USE_HWDECODE'] = 1
|
DEFINES['MOZ_USE_HWDECODE'] = 1
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,9 @@ if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
|||||||
CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
|
CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
|
||||||
if CONFIG["MOZ_ENABLE_VAAPI"] or CONFIG["MOZ_ENABLE_V4L2"]:
|
if CONFIG["MOZ_ENABLE_VAAPI"] or CONFIG["MOZ_ENABLE_V4L2"]:
|
||||||
UNIFIED_SOURCES += ["../FFmpegVideoFramePool.cpp"]
|
UNIFIED_SOURCES += ["../FFmpegVideoFramePool.cpp"]
|
||||||
LOCAL_INCLUDES += ["/third_party/drm/drm/include/libdrm/"]
|
CXXFLAGS += CONFIG['MOZ_DRM_CFLAGS']
|
||||||
|
if not CONFIG['MOZ_SYSTEM_LIBDRM']:
|
||||||
|
LOCAL_INCLUDES += ['/third_party/drm/drm/include/']
|
||||||
USE_LIBS += ["mozva"]
|
USE_LIBS += ["mozva"]
|
||||||
DEFINES["MOZ_USE_HWDECODE"] = 1
|
DEFINES["MOZ_USE_HWDECODE"] = 1
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,9 @@ if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
|||||||
CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
|
CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
|
||||||
if CONFIG["MOZ_ENABLE_VAAPI"] or CONFIG["MOZ_ENABLE_V4L2"]:
|
if CONFIG["MOZ_ENABLE_VAAPI"] or CONFIG["MOZ_ENABLE_V4L2"]:
|
||||||
UNIFIED_SOURCES += ["../FFmpegVideoFramePool.cpp"]
|
UNIFIED_SOURCES += ["../FFmpegVideoFramePool.cpp"]
|
||||||
LOCAL_INCLUDES += ["/third_party/drm/drm/include/libdrm/"]
|
CXXFLAGS += CONFIG['MOZ_DRM_CFLAGS']
|
||||||
|
if not CONFIG['MOZ_SYSTEM_LIBDRM']:
|
||||||
|
LOCAL_INCLUDES += ['/third_party/drm/drm/include/']
|
||||||
USE_LIBS += ["mozva"]
|
USE_LIBS += ["mozva"]
|
||||||
DEFINES["MOZ_USE_HWDECODE"] = 1
|
DEFINES["MOZ_USE_HWDECODE"] = 1
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,9 @@ if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
|||||||
CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
|
CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
|
||||||
if CONFIG["MOZ_ENABLE_VAAPI"] or CONFIG["MOZ_ENABLE_V4L2"]:
|
if CONFIG["MOZ_ENABLE_VAAPI"] or CONFIG["MOZ_ENABLE_V4L2"]:
|
||||||
UNIFIED_SOURCES += ["../FFmpegVideoFramePool.cpp"]
|
UNIFIED_SOURCES += ["../FFmpegVideoFramePool.cpp"]
|
||||||
LOCAL_INCLUDES += ["/third_party/drm/drm/include/libdrm/"]
|
CXXFLAGS += CONFIG['MOZ_DRM_CFLAGS']
|
||||||
|
if not CONFIG['MOZ_SYSTEM_LIBDRM']:
|
||||||
|
LOCAL_INCLUDES += ['/third_party/drm/drm/include/']
|
||||||
USE_LIBS += ["mozva"]
|
USE_LIBS += ["mozva"]
|
||||||
DEFINES["MOZ_USE_HWDECODE"] = 1
|
DEFINES["MOZ_USE_HWDECODE"] = 1
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,9 @@ if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
|||||||
CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
|
CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
|
||||||
if CONFIG["MOZ_ENABLE_VAAPI"] or CONFIG["MOZ_ENABLE_V4L2"]:
|
if CONFIG["MOZ_ENABLE_VAAPI"] or CONFIG["MOZ_ENABLE_V4L2"]:
|
||||||
UNIFIED_SOURCES += ["../FFmpegVideoFramePool.cpp"]
|
UNIFIED_SOURCES += ["../FFmpegVideoFramePool.cpp"]
|
||||||
LOCAL_INCLUDES += ["/third_party/drm/drm/include/libdrm/"]
|
CXXFLAGS += CONFIG["MOZ_LIBDRM_CFLAGS"]
|
||||||
|
if not CONFIG["MOZ_SYSTEM_LIBDRM"]:
|
||||||
|
LOCAL_INCLUDES += ["/third_party/drm/drm/include/"]
|
||||||
USE_LIBS += ["mozva"]
|
USE_LIBS += ["mozva"]
|
||||||
DEFINES["MOZ_USE_HWDECODE"] = 1
|
DEFINES["MOZ_USE_HWDECODE"] = 1
|
||||||
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows":
|
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows":
|
||||||
|
|||||||
@@ -86,7 +86,6 @@ if CONFIG["MOZ_WEBRTC_SIGNALING"]:
|
|||||||
|
|
||||||
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
||||||
DIRS += [
|
DIRS += [
|
||||||
"/third_party/drm/",
|
|
||||||
"/third_party/drm/libdrm",
|
"/third_party/drm/libdrm",
|
||||||
"/third_party/libepoxy/",
|
"/third_party/libepoxy/",
|
||||||
"/third_party/pipewire/libpipewire",
|
"/third_party/pipewire/libpipewire",
|
||||||
|
|||||||
@@ -21,6 +21,10 @@
|
|||||||
"third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn",
|
"third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn",
|
||||||
"third_party/libwebrtc/modules/portal/portal_gn"
|
"third_party/libwebrtc/modules/portal/portal_gn"
|
||||||
],
|
],
|
||||||
|
"INCLUDE_SYSTEM_LIBDRM_HANDLING": [
|
||||||
|
"third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn",
|
||||||
|
"third_party/libwebrtc/modules/portal/portal_gn"
|
||||||
|
],
|
||||||
"INCLUDE_SYSTEM_DAV1D_HANDLING": [
|
"INCLUDE_SYSTEM_DAV1D_HANDLING": [
|
||||||
"third_party/libwebrtc/modules/video_coding/codecs/av1/dav1d_decoder_gn",
|
"third_party/libwebrtc/modules/video_coding/codecs/av1/dav1d_decoder_gn",
|
||||||
"third_party/libwebrtc/modules/video_coding/codecs/av1/libaom_av1_encoder_gn"
|
"third_party/libwebrtc/modules/video_coding/codecs/av1/libaom_av1_encoder_gn"
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ typedef HRESULT (WINAPI *PFN_CREATE_DXGI_FACTORY)(REFIID riid, void **ppFactory)
|
|||||||
#if CONFIG_LIBDRM
|
#if CONFIG_LIBDRM
|
||||||
# include <va/va_drmcommon.h>
|
# include <va/va_drmcommon.h>
|
||||||
# include <xf86drm.h>
|
# include <xf86drm.h>
|
||||||
# include <drm_fourcc.h>
|
# include <libdrm/drm_fourcc.h>
|
||||||
# ifndef DRM_FORMAT_MOD_INVALID
|
# ifndef DRM_FORMAT_MOD_INVALID
|
||||||
# define DRM_FORMAT_MOD_INVALID ((1ULL << 56) - 1)
|
# define DRM_FORMAT_MOD_INVALID ((1ULL << 56) - 1)
|
||||||
# endif
|
# endif
|
||||||
|
|||||||
2
third_party/drm/drm/xf86drm.h
vendored
2
third_party/drm/drm/xf86drm.h
vendored
@@ -37,7 +37,7 @@
|
|||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <drm.h>
|
#include <libdrm/drm.h>
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
17
third_party/drm/libdrm/moz.build
vendored
17
third_party/drm/libdrm/moz.build
vendored
@@ -4,16 +4,13 @@
|
|||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
SOURCES += [
|
if CONFIG["MOZ_SYSTEM_LIBDRM"]:
|
||||||
'mozdrm.cpp',
|
OS_LIBS += CONFIG["MOZ_LIBDRM_LIBS"]
|
||||||
]
|
else:
|
||||||
|
SOURCES += ['mozdrm.cpp']
|
||||||
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
LOCAL_INCLUDES += [
|
||||||
CXXFLAGS += CONFIG['MOZ_GTK3_CFLAGS']
|
'/third_party/drm/drm/',
|
||||||
|
'/third_party/drm/drm/include/',
|
||||||
LOCAL_INCLUDES += [
|
|
||||||
'/third_party/drm/',
|
|
||||||
'/third_party/drm/drm/include/libdrm/',
|
|
||||||
]
|
]
|
||||||
|
|
||||||
FINAL_LIBRARY = 'xul'
|
FINAL_LIBRARY = 'xul'
|
||||||
|
|||||||
2
third_party/drm/libdrm/mozdrm.cpp
vendored
2
third_party/drm/libdrm/mozdrm.cpp
vendored
@@ -8,7 +8,7 @@
|
|||||||
#include "mozilla/Types.h"
|
#include "mozilla/Types.h"
|
||||||
#include "prlink.h"
|
#include "prlink.h"
|
||||||
|
|
||||||
#include <drm/xf86drm.h>
|
#include <xf86drm.h>
|
||||||
|
|
||||||
#define GET_FUNC(func, lib) \
|
#define GET_FUNC(func, lib) \
|
||||||
func##_fn = \
|
func##_fn = \
|
||||||
|
|||||||
@@ -325,6 +325,9 @@ if CONFIG["OS_ARCH"] == "OpenBSD":
|
|||||||
if CONFIG["MOZ_ENABLE_DBUS"]:
|
if CONFIG["MOZ_ENABLE_DBUS"]:
|
||||||
OS_LIBS += CONFIG["MOZ_DBUS_LIBS"]
|
OS_LIBS += CONFIG["MOZ_DBUS_LIBS"]
|
||||||
|
|
||||||
|
if CONFIG["MOZ_SYSTEM_LIBDRM"]:
|
||||||
|
OS_LIBS += CONFIG["MOZ_LIBDRM_LIBS"]
|
||||||
|
|
||||||
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk" and CONFIG["COMPILE_ENVIRONMENT"]:
|
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk" and CONFIG["COMPILE_ENVIRONMENT"]:
|
||||||
OS_LIBS += [l for l in CONFIG["MOZ_GTK3_LIBS"] if l not in ("-lgtk-3", "-lgdk-3")]
|
OS_LIBS += [l for l in CONFIG["MOZ_GTK3_LIBS"] if l not in ("-lgtk-3", "-lgdk-3")]
|
||||||
OS_LIBS += CONFIG["MOZ_X11_LIBS"]
|
OS_LIBS += CONFIG["MOZ_X11_LIBS"]
|
||||||
|
|||||||
@@ -696,6 +696,24 @@ with only_when(compile_environment):
|
|||||||
|
|
||||||
set_config("MOZ_SYSTEM_GBM", True, when="--with-system-gbm")
|
set_config("MOZ_SYSTEM_GBM", True, when="--with-system-gbm")
|
||||||
|
|
||||||
|
# System libdrm support
|
||||||
|
# =============================================================
|
||||||
|
with only_when(compile_environment):
|
||||||
|
system_lib_option(
|
||||||
|
"--with-system-libdrm",
|
||||||
|
nargs="?",
|
||||||
|
help="Use system libdrm",
|
||||||
|
when=use_pkg_config,
|
||||||
|
)
|
||||||
|
|
||||||
|
pipewire_headers = pkg_check_modules(
|
||||||
|
"MOZ_LIBDRM",
|
||||||
|
"libdrm",
|
||||||
|
when="--with-system-libdrm",
|
||||||
|
)
|
||||||
|
|
||||||
|
set_config("MOZ_SYSTEM_LIBDRM", True, when="--with-system-libdrm")
|
||||||
|
|
||||||
# GL Provider
|
# GL Provider
|
||||||
# ==============================================================
|
# ==============================================================
|
||||||
option("--with-gl-provider", nargs=1, help="Set GL provider backend type")
|
option("--with-gl-provider", nargs=1, help="Set GL provider backend type")
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
#include <drm/xf86drm.h>
|
#include <xf86drm.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
|||||||
@@ -160,8 +160,6 @@ LOCAL_INCLUDES += [
|
|||||||
"/layout/xul",
|
"/layout/xul",
|
||||||
"/other-licenses/atk-1.0",
|
"/other-licenses/atk-1.0",
|
||||||
"/third_party/cups/include",
|
"/third_party/cups/include",
|
||||||
"/third_party/drm/",
|
|
||||||
"/third_party/drm/drm/include/libdrm/",
|
|
||||||
"/widget",
|
"/widget",
|
||||||
"/widget/headless",
|
"/widget/headless",
|
||||||
"/widget/x11",
|
"/widget/x11",
|
||||||
@@ -176,6 +174,13 @@ if not CONFIG["MOZ_SYSTEM_GBM"]:
|
|||||||
"/third_party/gbm/gbm/",
|
"/third_party/gbm/gbm/",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
CXXFLAGS += CONFIG["MOZ_LIBDRM_CFLAGS"]
|
||||||
|
if not CONFIG["MOZ_SYSTEM_LIBDRM"]:
|
||||||
|
LOCAL_INCLUDES += [
|
||||||
|
"/third_party/drm/drm/",
|
||||||
|
"/third_party/drm/drm/include/",
|
||||||
|
]
|
||||||
|
|
||||||
DEFINES["CAIRO_GFX"] = True
|
DEFINES["CAIRO_GFX"] = True
|
||||||
|
|
||||||
DEFINES["MOZ_APP_NAME"] = '"%s"' % CONFIG["MOZ_APP_NAME"]
|
DEFINES["MOZ_APP_NAME"] = '"%s"' % CONFIG["MOZ_APP_NAME"]
|
||||||
|
|||||||
Reference in New Issue
Block a user