################################################################################ # # 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 # 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 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 LDFLAGS += -L$(PLATFORM_COMMON_SYSRDIR)/lib -ldrm -lcomposition -lvideotunnel ROKU_LOG_HEADER = -I$(PLATFORM_COMMON_SYSRDIR)/include endif common_display_SRCS = \ $(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 \ $(LOCAL_PATH)/display/VideoPipeAdapter.cpp \ $(LOCAL_PATH)/postprocessor/ProcessorsManager.cpp \ $(LOCAL_PATH)/postprocessor/fbprocessor/DiProcessor.cpp \ $(LOCAL_PATH)/postprocessor/fbprocessor/FbProcessor.cpp \ $(NULL) 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 displayadapter_HEADERS = \ -I$(LOCAL_PATH) \ -I$(LOCAL_PATH)/binder/include \ -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: rm -f *.o $(addprefix $(OUT_DIR)/,$(BUILD_TARGETS)) install: 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/) install -m 644 include/display_interface.h $(TARGET_DIR)/usr/include/ install -m 644 include/MesonTypes.h $(TARGET_DIR)/usr/include/ uninstall: rm -f $(TARGET_DIR)/usr/lib/libdisplayadapter.so $(if $(filter 1,$(USE_BINDER)),rm -f $(TARGET_DIR)/usr/bin/mesonVideoCompositor)