Files

168 lines
6.0 KiB
Makefile

################################################################################
#
# 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))