2026-08-13 11:28:40 +08:00
|
|
|
################################################################################
|
|
|
|
|
#
|
|
|
|
|
# libdisplayadapter
|
|
|
|
|
#
|
|
|
|
|
################################################################################
|
|
|
|
|
LOCAL_PATH = $(shell pwd)
|
|
|
|
|
LDFLAGS += -Wl,--no-as-needed -lstdc++ -lpthread -lz -ldl -lrt -L$(STAGING_DIR)/usr/lib
|
|
|
|
|
CFLAGS += -Wall -Werror -Wno-unknown-pragmas -Wno-format -Wno-format-security -Wno-error=unused-result -g -fno-rtti \
|
|
|
|
|
-O3 -fexceptions -fnon-call-exceptions -D_GNU_SOURCE -I$(STAGING_DIR)/usr/include
|
|
|
|
|
|
2026-08-25 10:02:36 +08:00
|
|
|
# USE_BINDER=1 builds the Yocto Binder service path. USE_BINDER=0 builds the
|
|
|
|
|
# direct MesonDisplay path used by t6d.
|
|
|
|
|
USE_BINDER ?= 0
|
|
|
|
|
ifneq ($(filter 0 1,$(USE_BINDER)),$(USE_BINDER))
|
|
|
|
|
$(error USE_BINDER must be 0 or 1)
|
|
|
|
|
endif
|
|
|
|
|
|
2026-08-13 11:28:40 +08:00
|
|
|
MIN_GCC_VERSION = "10"
|
|
|
|
|
GCC_VERSION := "`$(CC) -dumpversion | cut -f1 -d'.'`"
|
|
|
|
|
IS_GCC_ABOVE_MIN_VERSION := $(shell expr "$(GCC_VERSION)" ">=" "$(MIN_GCC_VERSION)")
|
|
|
|
|
ifeq "$(IS_GCC_ABOVE_MIN_VERSION)" "1"
|
|
|
|
|
CFLAGS += -std=gnu++20 -DROKU_LOG -I$(STAGING_DIR)/usr/include/libdrm -std=c++17 -DENABLE_VIDEO_DI -DLINUX_COMPILE
|
2026-08-25 10:02:36 +08:00
|
|
|
LDFLAGS += -L$(PLATFORM_COMMON_SYSRDIR)/lib -ldrm -lcomposition -lvideotunnel
|
2026-08-13 11:28:40 +08:00
|
|
|
|
|
|
|
|
ROKU_LOG_HEADER = -I$(PLATFORM_COMMON_SYSRDIR)/include
|
|
|
|
|
endif
|
|
|
|
|
|
2026-08-25 10:02:36 +08:00
|
|
|
common_display_SRCS = \
|
2026-08-13 11:28:40 +08:00
|
|
|
$(LOCAL_PATH)/display/BitsMap.cpp \
|
|
|
|
|
$(LOCAL_PATH)/display/MesonDisplay.cpp \
|
|
|
|
|
$(LOCAL_PATH)/display/MesonLayer.cpp \
|
|
|
|
|
$(LOCAL_PATH)/display/MultiplanesComposition.cpp \
|
|
|
|
|
$(LOCAL_PATH)/display/V2DComposer.cpp \
|
|
|
|
|
$(LOCAL_PATH)/display/MesonDisplayPipe.cpp \
|
|
|
|
|
$(LOCAL_PATH)/display/DisplayThread.cpp \
|
|
|
|
|
$(LOCAL_PATH)/display/drm/DrmConnector.cpp \
|
|
|
|
|
$(LOCAL_PATH)/display/drm/DrmCrtc.cpp \
|
|
|
|
|
$(LOCAL_PATH)/display/drm/DrmEncoder.cpp \
|
|
|
|
|
$(LOCAL_PATH)/display/drm/DrmVideoPlane.cpp \
|
|
|
|
|
$(LOCAL_PATH)/display/drm/DrmVideoBo.cpp \
|
|
|
|
|
$(LOCAL_PATH)/display/drm/DrmAsyncCommitor.cpp \
|
|
|
|
|
$(LOCAL_PATH)/display/drm/DrmProperty.cpp \
|
|
|
|
|
$(LOCAL_PATH)/display/DispAdptLog.cpp \
|
|
|
|
|
$(LOCAL_PATH)/display/MesonEventListener.cpp \
|
2026-08-25 10:02:36 +08:00
|
|
|
$(LOCAL_PATH)/display/VideoPipeAdapter.cpp \
|
2026-08-13 11:28:40 +08:00
|
|
|
$(LOCAL_PATH)/postprocessor/ProcessorsManager.cpp \
|
|
|
|
|
$(LOCAL_PATH)/postprocessor/fbprocessor/DiProcessor.cpp \
|
|
|
|
|
$(LOCAL_PATH)/postprocessor/fbprocessor/FbProcessor.cpp \
|
|
|
|
|
$(NULL)
|
|
|
|
|
|
2026-08-25 10:02:36 +08:00
|
|
|
ifeq ($(USE_BINDER),1)
|
|
|
|
|
LDFLAGS += -lbinder
|
|
|
|
|
displayadapter_SRCS = \
|
|
|
|
|
$(LOCAL_PATH)/binder/displayadapter.cpp \
|
|
|
|
|
$(LOCAL_PATH)/binder/BinderClient.cpp \
|
|
|
|
|
$(NULL)
|
|
|
|
|
mesonVideoCompositor_SRCS = \
|
|
|
|
|
$(LOCAL_PATH)/binder/MesonVideoCompositor.cpp \
|
|
|
|
|
$(LOCAL_PATH)/binder/BinderServer.cpp \
|
|
|
|
|
$(common_display_SRCS)
|
|
|
|
|
BUILD_TARGETS = libdisplayadapter.so mesonVideoCompositor
|
|
|
|
|
else
|
|
|
|
|
displayadapter_SRCS = \
|
|
|
|
|
$(LOCAL_PATH)/displayadapter.cpp \
|
|
|
|
|
$(common_display_SRCS)
|
|
|
|
|
BUILD_TARGETS = libdisplayadapter.so
|
|
|
|
|
endif
|
|
|
|
|
|
2026-08-13 11:28:40 +08:00
|
|
|
displayadapter_HEADERS = \
|
|
|
|
|
-I$(LOCAL_PATH) \
|
2026-08-25 10:02:36 +08:00
|
|
|
-I$(LOCAL_PATH)/binder/include \
|
2026-08-13 11:28:40 +08:00
|
|
|
-I$(LOCAL_PATH)/include \
|
|
|
|
|
-I$(LOCAL_PATH)/display \
|
|
|
|
|
-I$(LOCAL_PATH)/display/drm \
|
|
|
|
|
-I$(LOCAL_PATH)/postprocessor/include \
|
|
|
|
|
-I$(LOCAL_PATH)/postprocessor/fbprocessor \
|
|
|
|
|
$(ROKU_LOG_HEADER) \
|
|
|
|
|
$(NULL)
|
|
|
|
|
|
|
|
|
|
OUT_DIR ?= .
|
|
|
|
|
# ---------------------------------------------------------------------
|
|
|
|
|
# Build rules
|
|
|
|
|
|
|
|
|
|
.PHONY: all install uninstall clean
|
|
|
|
|
|
|
|
|
|
libdisplayadapter.so: $(displayadapter_SRCS)
|
|
|
|
|
$(CC) $(CFLAGS) $(LDFLAGS) -shared -fPIC $(displayadapter_HEADERS) \
|
|
|
|
|
-o $(OUT_DIR)/$@ $^
|
|
|
|
|
|
|
|
|
|
mesonVideoCompositor: $(mesonVideoCompositor_SRCS)
|
|
|
|
|
$(CC) $(CFLAGS) $(LDFLAGS) $(displayadapter_HEADERS) \
|
|
|
|
|
-o $(OUT_DIR)/$@ $^
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
all: $(BUILD_TARGETS)
|
|
|
|
|
|
|
|
|
|
clean:
|
2026-08-25 10:02:36 +08:00
|
|
|
rm -f *.o $(addprefix $(OUT_DIR)/,$(BUILD_TARGETS))
|
2026-08-13 11:28:40 +08:00
|
|
|
|
|
|
|
|
install:
|
2026-08-25 10:02:36 +08:00
|
|
|
install -m 0644 $(OUT_DIR)/libdisplayadapter.so $(TARGET_DIR)/usr/lib/
|
|
|
|
|
$(if $(filter 1,$(USE_BINDER)),install -m 755 $(OUT_DIR)/mesonVideoCompositor $(TARGET_DIR)/usr/bin/)
|
2026-08-13 11:28:40 +08:00
|
|
|
install -m 644 include/display_interface.h $(TARGET_DIR)/usr/include/
|
|
|
|
|
install -m 644 include/MesonTypes.h $(TARGET_DIR)/usr/include/
|
|
|
|
|
|
|
|
|
|
uninstall:
|
2026-08-25 10:02:36 +08:00
|
|
|
rm -f $(TARGET_DIR)/usr/lib/libdisplayadapter.so
|
|
|
|
|
$(if $(filter 1,$(USE_BINDER)),rm -f $(TARGET_DIR)/usr/bin/mesonVideoCompositor)
|