################################################################################ # # aml_tvserver # ################################################################################ OUT_DIR ?= . BASEDIR := $(shell basename $(CURDIR)) OBJDIR ?= $(OUT_DIR) PROTO_DIR := $(OBJDIR)/$(BASEDIR) LOCAL_PATH = $(shell pwd) LDFLAGS += -Wl,--no-as-needed -lstdc++ -lpthread -lz -ldl -lrt -L$(STAGING_DIR)/usr/lib CFLAGS += -Wall -Wno-unknown-pragmas -Wno-format -Wno-format-security\ -O3 -fexceptions -fnon-call-exceptions -D_GNU_SOURCE \ -I$(STAGING_DIR)/usr/include ifeq (${REMOVE_AUDIO}, ) CFLAGS += -DHAVE_AUDIO endif $(info VIDEO_BACKEND=$(VIDEO_BACKEND)) ifeq ($(VIDEO_BACKEND),wayland) CFLAGS += -DUSE_WAYLAND=1 -I$(PROTO_DIR) LDFLAGS += -lwayland-client -ldrm -lvideotunnel else ifeq ($(VIDEO_BACKEND),displayadapter) CFLAGS += -DUSE_VIDEOCOMPOSER=1 LDFLAGS += -ldisplayadapter -lvideotunnel else CFLAGS += -DUSE_AMVIDEO=1 endif LDFLAGS += -L $(OUT_DIR)/ ifeq (${REMOVE_AUDIO}, ) TV_LDFLAGS += -laudio_client endif ################################################################################ # libtv.so - src files ################################################################################ tv_SRCS = \ $(LOCAL_PATH)/libtv/tvutils/CFile.cpp \ $(LOCAL_PATH)/libtv/tvutils/ConfigFile.cpp \ $(LOCAL_PATH)/libtv/tvutils/CSerialPort.cpp \ $(LOCAL_PATH)/libtv/tvutils/TvConfigManager.cpp \ $(LOCAL_PATH)/libtv/tvutils/tvutils.cpp \ $(LOCAL_PATH)/libtv/tvutils/zepoll.cpp \ $(LOCAL_PATH)/libtv/tvutils/CMsgQueue.cpp \ $(LOCAL_PATH)/libtv/CHDMIRxManager.cpp \ $(LOCAL_PATH)/libtv/CTv.cpp \ $(LOCAL_PATH)/libtv/CTvin.cpp \ $(LOCAL_PATH)/libtv/CTvDevicesPollDetect.cpp \ $(LOCAL_PATH)/libtv/CAmVideo.cpp \ $(LOCAL_PATH)/libtv/CVpp.cpp \ $(LOCAL_PATH)/libtv/CVrr.cpp \ $(LOCAL_PATH)/common/CTvLog.cpp \ $(LOCAL_PATH)/libtv/panel/CTvPanel.cpp \ $(LOCAL_PATH)/libtv/panel/CTvTconlessFileLoad.cpp \ $(LOCAL_PATH)/libtv/CTvResman.cpp \ $(LOCAL_PATH)/libtv/CTvDisplayadapter.cpp \ $(LOCAL_PATH)/libtv/CTvWayland.cpp \ $(NULL) ifeq (${REMOVE_AUDIO}, ) tv_SRCS += $(LOCAL_PATH)/libtv/CTvAudio.cpp endif ifeq ($(VIDEO_BACKEND),wayland) tv_SRCS += \ $(PROTO_DIR)/xdg-shell-protocol.c \ $(PROTO_DIR)/linux-dmabuf-unstable-v1-protocol.c \ $(PROTO_DIR)/viewporter-protocol.c \ $(PROTO_DIR)/fullscreen-shell-unstable-v1-protocol.c \ $(PROTO_DIR)/weston-direct-display-protocol.c endif tvcommon_HEADERS = \ -I$(LOCAL_PATH)/common \ -I$(LOCAL_PATH)/include \ $(NULL) ################################################################################ # libtvclient.so - src files ################################################################################ tvclient_SRCS = \ $(LOCAL_PATH)/dbus/tvclient.cpp \ $(LOCAL_PATH)/client/TvClientWrapper.cpp \ $(LOCAL_PATH)/common/CTvLog.cpp \ $(NULL) ################################################################################ # tvservice - src files ################################################################################ tvservice_SRCS = \ $(LOCAL_PATH)/dbus/tvservice.cpp \ $(NULL) ################################################################################ # tvtest - src files ################################################################################ tvtest_SRCS = \ $(LOCAL_PATH)/test/main_tvtest.c \ $(NULL) # --------------------------------------------------------------------- # Build rules BUILD_TARGETS = libtvclient.so libtv.so tvservice tvtest BUILD_TARGETS_FULLPATH := $(patsubst %, $(OUT_DIR)/%, $(BUILD_TARGETS)) .PHONY: all install clean libtvclient.so: $(tvclient_SRCS) $(CC) $(CFLAGS) $(LDFLAGS) -lsystemd -shared -fPIC $(tvcommon_HEADERS) \ -o $(OUT_DIR)/$@ $^ $(LDLIBS) libtv.so: $(tv_SRCS) $(CC) $(CFLAGS) $(LDFLAGS) -lubootenv -shared -lmediahal_resman -fPIC $(tvcommon_HEADERS) \ -I$(LOCAL_PATH)/libtv/tvutils -I$(LOCAL_PATH)/libtv/panel \ $(TV_LDFLAGS) -o $(OUT_DIR)/$@ $^ $(LDLIBS) tvservice: $(tvservice_SRCS) libtv.so $(CXX) $(CXXFLAGS) $(CFLAGS) $(LDFLAGS) $(tvcommon_HEADERS) \ -I$(LOCAL_PATH)/libtv -I$(LOCAL_PATH)/libtv/tvutils -I$(LOCAL_PATH)/libtv/panel \ -L$(LOCAL_PATH) -ltv -lsystemd -o $(OUT_DIR)/$@ $(filter-out %.so,$^) $(LDLIBS) tvtest: $(tvtest_SRCS) libtvclient.so $(CC) $(CFLAGS) $(tvcommon_HEADERS) -L$(LOCAL_PATH) \ -ltvclient $(LDFLAGS) -o $(OUT_DIR)/$@ $(filter-out %.so,$^) $(LDLIBS) all: $(BUILD_TARGETS) clean: rm -f $(OUT_DIR)/*.o $(BUILD_TARGETS_FULLPATH) rm -rf $(TARGET_DIR)/usr/lib/libtv.so rm -rf $(TARGET_DIR)/usr/bin/tvservice rm -rf $(TARGET_DIR)/usr/lib/libtvclient.so rm -rf $(TARGET_DIR)/usr/bin/tvtest rm -rf $(TARGET_DIR)/etc/dbus-1/system.d/amlogic.yocto.tvservice.conf install: install -m 0644 $(OUT_DIR)/libtv.so $(TARGET_DIR)/usr/lib/ install -m 0755 $(OUT_DIR)/tvservice $(TARGET_DIR)/usr/bin/ install -m 0644 $(OUT_DIR)/libtvclient.so $(TARGET_DIR)/usr/lib install -m 0755 $(OUT_DIR)/tvtest $(TARGET_DIR)/usr/bin/ install -d $(TARGET_DIR)/etc/dbus-1/system.d/ install -m 0644 $(LOCAL_PATH)/dbus/amlogic.yocto.tvserver.conf $(TARGET_DIR)/etc/dbus-1/system.d/ create-dir: mkdir -p $(PROTO_DIR) define gen_wayland_client $(PROTO_DIR)/$3-protocol.c : $(STAGING_DIR)/usr/share/wayland-protocols/$1/$2/$3.xml $(PROTO_DIR)/$3-client-protocol.h | create-dir wayland-scanner private-code $$< $$@ $(PROTO_DIR)/$3-client-protocol.h : $(STAGING_DIR)/usr/share/wayland-protocols/$1/$2/$3.xml | create-dir wayland-scanner client-header $$< $$@ endef WESTON_DD_XML := $(LOCAL_PATH)/protocol/weston-direct-display.xml $(PROTO_DIR)/weston-direct-display-client-protocol.h: $(WESTON_DD_XML) | create-dir wayland-scanner client-header $< $@ $(PROTO_DIR)/weston-direct-display-protocol.c: $(WESTON_DD_XML) $(PROTO_DIR)/weston-direct-display-client-protocol.h | create-dir wayland-scanner private-code $< $@ $(eval $(call gen_wayland_client,stable,xdg-shell,xdg-shell)) $(eval $(call gen_wayland_client,unstable,linux-dmabuf,linux-dmabuf-unstable-v1)) $(eval $(call gen_wayland_client,stable,viewporter,viewporter)) $(eval $(call gen_wayland_client,unstable,fullscreen-shell,fullscreen-shell-unstable-v1))