################################################################################ # # aml_tvserver - libtv only # # Build/install only the libtv layer (libtv.so) and the development # headers required to compile against it. # ################################################################################ OUT_DIR ?= . BASEDIR := $(shell basename $(CURDIR)) OBJDIR ?= $(OUT_DIR) PROTO_DIR := $(OBJDIR)/$(BASEDIR) LOCAL_PATH = $(shell pwd) DESTDIR ?= LIB_INSTALL_DIR ?= $(DESTDIR)$(TARGET_DIR)/usr/lib HDR_INSTALL_DIR ?= $(DESTDIR)$(TARGET_DIR)/usr/include/libtv 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 -DHAVE_AUDIO LDFLAGS += -llog -lubootenv -lmediahal_resman $(info VIDEO_BACKEND=$(VIDEO_BACKEND)) ifeq ($(VIDEO_BACKEND),wayland) CFLAGS += -DUSE_WAYLAND=1 -I$(PROTO_DIR) LDFLAGS += -lwayland-client -ldrm else ifeq ($(VIDEO_BACKEND),displayadapter) CFLAGS += -DUSE_VIDEOCOMPOSER=1 LDFLAGS += -ldisplayadapter else CFLAGS += -DUSE_AMVIDEO=1 endif LDFLAGS += -L $(OUT_DIR)/ ################################################################################ # 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/CTvAudio.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 ($(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) ################################################################################ # development headers installed for building against libtv ################################################################################ tvdev_HEADERS = \ $(LOCAL_PATH)/include/tvapi.h \ $(LOCAL_PATH)/include/TvCommon.h \ $(LOCAL_PATH)/include/CTvEvent.h \ $(LOCAL_PATH)/common/CTvLog.h \ $(LOCAL_PATH)/common/tvcmd.h \ $(LOCAL_PATH)/libtv/CTv.h \ $(LOCAL_PATH)/libtv/CTvin.h \ $(LOCAL_PATH)/libtv/CTvAudio.h \ $(LOCAL_PATH)/libtv/CAmVideo.h \ $(LOCAL_PATH)/libtv/CHDMIRxManager.h \ $(LOCAL_PATH)/libtv/CTvDevicesPollDetect.h \ $(LOCAL_PATH)/libtv/CTvDisplayadapter.h \ $(LOCAL_PATH)/libtv/CTvWayland.h \ $(LOCAL_PATH)/libtv/CTvResman.h \ $(LOCAL_PATH)/libtv/CVpp.h \ $(LOCAL_PATH)/libtv/CVrr.h \ $(LOCAL_PATH)/libtv/panel/CTvPanel.h \ $(LOCAL_PATH)/libtv/tvutils/tvutils.h \ $(LOCAL_PATH)/libtv/tvutils/CFile.h \ $(LOCAL_PATH)/libtv/tvutils/ConfigFile.h \ $(LOCAL_PATH)/libtv/tvutils/CMsgQueue.h \ $(LOCAL_PATH)/libtv/tvutils/CSerialPort.h \ $(LOCAL_PATH)/libtv/tvutils/TvConfigManager.h \ $(LOCAL_PATH)/libtv/tvutils/zepoll.h \ $(NULL) # --------------------------------------------------------------------- # Build rules BUILD_TARGETS = libtv.so BUILD_TARGETS_FULLPATH := $(patsubst %, $(OUT_DIR)/%, $(BUILD_TARGETS)) .PHONY: all install install-dev clean libtv.so: $(tv_SRCS) $(CC) $(CFLAGS) $(LDFLAGS) -shared -fPIC $(tvcommon_HEADERS) \ -I$(LOCAL_PATH)/libtv/tvutils -I$(LOCAL_PATH)/libtv/panel \ -laudio_client -o $(OUT_DIR)/$@ $^ $(LDLIBS) all: $(BUILD_TARGETS) install: all install-dev install -d $(LIB_INSTALL_DIR) install -m 0644 $(OUT_DIR)/libtv.so $(LIB_INSTALL_DIR)/ install-dev: install -d $(HDR_INSTALL_DIR) install -m 0644 $(tvdev_HEADERS) $(HDR_INSTALL_DIR)/ clean: rm -f $(OUT_DIR)/*.o $(BUILD_TARGETS_FULLPATH) rm -rf $(HDR_INSTALL_DIR) rm -rf $(LIB_INSTALL_DIR)/libtv.so 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))