################################################################################
#
# libvideotunnel
#
################################################################################
LOCAL_PATH = $(shell pwd)
LDFLAGS += -Wl,--no-as-needed -lstdc++ -lpthread -ldl -lrt -L$(STAGING_DIR)/usr/lib
CFLAGS += -Wall -Werror -Wno-unknown-pragmas -Wno-format -Wno-format-security -Wno-error=unused-result -g \
          -O3 -fexceptions -fnon-call-exceptions -D_GNU_SOURCE -I$(STAGING_DIR)/usr/include

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++11
LDFLAGS += -L$(PLATFORM_COMMON_SYSRDIR)/lib

ROKU_LOG_HEADER = -I$(PLATFORM_COMMON_SYSRDIR)/include
endif

videotunnel_SRCS = \
  $(LOCAL_PATH)/video_tunnel_linux.cpp \
  $(LOCAL_PATH)/vt_mode/VtLocalMode.cpp \
  $(LOCAL_PATH)/vt_mode/VtRemoteMode.cpp \
  $(NULL)

videotunnel_HEADERS = \
	-I$(LOCAL_PATH)/vt_mode \
	-I$(LOCAL_PATH)/include \
	-I$(LOCAL_PATH)/kernel-headers \
	$(ROKU_LOG_HEADER) \
	$(NULL)

OUT_DIR ?= .
# ---------------------------------------------------------------------
#  Build rules
BUILD_TARGETS = libvideotunnel.so

.PHONY: all install uninstall clean

libvideotunnel.so: $(videotunnel_SRCS)
	$(CC) $(CFLAGS) $(LDFLAGS) -shared -fPIC $(videotunnel_HEADERS) \
	-o $(OUT_DIR)/$@ $^

all: $(BUILD_TARGETS)

clean:
	rm -f *.o $(OUT_DIR)/$(BUILD_TARGETS)

install:
	install -m 0644 libvideotunnel.so $(TARGET_DIR)/usr/lib/
	install -m 644 include/video_tunnel.h $(TARGET_DIR)/usr/include/

uninstall:
	rm -f $(TARGET_DIR)/usr/lib/libvideotunnel.so

