#
# makefile to build neutrino-plugins
#
# -----------------------------------------------------------------------------

plugins:
	$(MAKE) neutrino-plugins
	$(MAKE) logo-addon
	$(MAKE) neutrino-mediathek
	$(MAKE) doscam-webif-skin
ifneq ($(BOXSERIES), hd1)
	$(MAKE) channellogos
  ifneq ($(BOXMODEL), kronos_v2)
	$(MAKE) links
  endif
endif

# -----------------------------------------------------------------------------

NP_OBJ_DIR = $(BUILD_DIR)/$(NI-NEUTRINO-PLUGINS)

NP_DEPS  = ffmpeg
NP_DEPS += libcurl
NP_DEPS += libpng
NP_DEPS += libjpeg-turbo
NP_DEPS += giflib
NP_DEPS += freetype
NP_DEPS += luaexpat
NP_DEPS += luajson
NP_DEPS += luacurl
NP_DEPS += luaposix
NP_DEPS += lua-feedparser

# -----------------------------------------------------------------------------

NP_CONFIGURE_ADDITIONS = \
		--disable-logoupdater \
		--disable-logoview \
		--disable-mountpointmanagement \
		--disable-stbup

ifeq ($(BOXSERIES), $(filter $(BOXSERIES), hd1 hd2))
  ifeq ($(BOXSERIES), hd1)
    NP_CONFIGURE_ADDITIONS += \
		--disable-spiegel_tv_doc \
		--disable-tierwelt_tv
  endif
  NP_CONFIGURE_ADDITIONS += \
		--disable-showiframe \
		--disable-stb_startup \
		--disable-imgbackup \
		--disable-rcu_switcher
endif

# -----------------------------------------------------------------------------

ifeq ($(BOXSERIES), $(filter $(BOXSERIES), hd1 hd2))
  NP_BOXMODEL = $(BOXSERIES)
else
  NP_BOXMODEL = $(BOXMODEL)
endif

# -----------------------------------------------------------------------------

$(NP_OBJ_DIR)/config.status: $(NP_DEPS)
	test -d $(NP_OBJ_DIR) || mkdir -p $(NP_OBJ_DIR)
	$(SOURCE_DIR)/$(NI-NEUTRINO-PLUGINS)/autogen.sh
	$(CD) $(NP_OBJ_DIR); \
		$(MAKE_ENV) \
		$(SOURCE_DIR)/$(NI-NEUTRINO-PLUGINS)/configure \
			--host=$(TARGET) \
			--build=$(BUILD) \
			--prefix=$(prefix) \
			--sysconfdir=$(sysconfdir) \
			--enable-maintainer-mode \
			--enable-silent-rules \
			\
			--with-neutrino-source=$(SOURCE_DIR)/$(NI-NEUTRINO) \
			--with-neutrino-build=$(N_OBJ_DIR) \
			\
			$(NP_CONFIGURE_ADDITIONS) \
			\
			--with-target=cdk \
			--with-targetprefix=$(prefix) \
			--with-boxtype=$(BOXTYPE) \
			--with-boxmodel=$(NP_BOXMODEL)

# -----------------------------------------------------------------------------

NP_INIT-SCRIPTS-DEFAULTS  = emmrd
NP_INIT-SCRIPTS-DEFAULTS += fritzcallmonitor
NP_INIT-SCRIPTS-DEFAULTS += ovpn
NP_INIT-SCRIPTS-DEFAULTS += rcu_switcher
#NP_INIT-SCRIPTS-DEFAULTS += stbup
NP_INIT-SCRIPTS-DEFAULTS += tuxcald
NP_INIT-SCRIPTS-DEFAULTS += tuxmaild

NP_INIT-SCRIPTS  = $(NP_INIT-SCRIPTS_DEFAULTS)
NP_INIT-SCRIPTS += turnoff_power

define NP_RUNLEVEL-LINKS_INSTALL
	for script in $(NP_INIT-SCRIPTS-DEFAULTS); do \
		if [ -x $(TARGET_sysconfdir)/init.d/$$script ]; then \
			$(UPDATE-RC.D) $$script defaults 80 20; \
		fi; \
	done
	if [ -x $(TARGET_sysconfdir)/init.d/turnoff_power ]; then \
		$(UPDATE-RC.D) turnoff_power start 99 0 .; \
	fi
endef

define NP_RUNLEVEL-LINKS_UNINSTALL
	for link in $(NP_INIT-SCRIPTS); do \
		find $(TARGET_sysconfdir) -type l -name [SK]??$$link -print0 | \
			xargs --no-run-if-empty -0 rm -f; \
	done
endef

# -----------------------------------------------------------------------------

neutrino-plugins: neutrino $(NP_OBJ_DIR)/config.status
	PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
	$(MAKE) -C $(NP_OBJ_DIR) all     DESTDIR=$(TARGET_DIR)
	$(MAKE) -C $(NP_OBJ_DIR) install DESTDIR=$(TARGET_DIR)
	$(NP_RUNLEVEL-LINKS_INSTALL)
	$(TOUCH)

# -----------------------------------------------------------------------------

neutrino-plugins-uninstall:
	-make -C $(NP_OBJ_DIR) uninstall DESTDIR=$(TARGET_DIR)
	$(NP_RUNLEVEL-LINKS_UNINSTALL)

neutrino-plugins-distclean:
	-make -C $(NP_OBJ_DIR) distclean

neutrino-plugins-clean: neutrino-plugins-uninstall neutrino-plugins-distclean
	rm -f $(NP_OBJ_DIR)/config.status
	rm -f $(DEPS_DIR)/neutrino-plugins

neutrino-plugins-clean-all: neutrino-plugins-clean
	rm -rf $(NP_OBJ_DIR)

# -----------------------------------------------------------------------------

# To build single plugins from neutrino-plugins repository call
# make neutrino-plugin-<subdir>; e.g. make neutrino-plugin-tuxwetter

neutrino-plugin-%: $(NP_OBJ_DIR)/config.status
	PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \
	$(MAKE) -C $(NP_OBJ_DIR)/$(subst neutrino-plugin-,,$(@)) all install DESTDIR=$(TARGET_DIR)

# -----------------------------------------------------------------------------

channellogos: $(SOURCE_DIR)/$(NI-LOGO-STUFF) $(SHARE_ICONS)
	rm -rf $(SHARE_LOGOS)
	mkdir -p $(SHARE_LOGOS)
	$(INSTALL_DATA) $(SOURCE_DIR)/$(NI-LOGO-STUFF)/logos/* $(SHARE_LOGOS)
	mkdir -p $(SHARE_LOGOS)/events
	$(INSTALL_DATA) $(SOURCE_DIR)/$(NI-LOGO-STUFF)/logos-events/* $(SHARE_LOGOS)/events
	$(CD) $(SOURCE_DIR)/$(NI-LOGO-STUFF)/logo-links; \
		./logo-linker.sh logo-links.db $(SHARE_LOGOS)
	$(TOUCH)

# -----------------------------------------------------------------------------

logo-addon: $(SOURCE_DIR)/$(NI-LOGO-STUFF) $(SHARE_PLUGINS)
	$(INSTALL_EXEC) $(SOURCE_DIR)/$(NI-LOGO-STUFF)/logo-addon/*.sh $(SHARE_PLUGINS)/
	$(INSTALL_DATA) $(SOURCE_DIR)/$(NI-LOGO-STUFF)/logo-addon/*.cfg $(SHARE_PLUGINS)/
	$(INSTALL_DATA) $(SOURCE_DIR)/$(NI-LOGO-STUFF)/logo-addon/*.png $(SHARE_PLUGINS)/
	$(TOUCH)

# -----------------------------------------------------------------------------

doscam-webif-skin:
	$(INSTALL_DATA) -D $(TARGET_FILES)/doscam-webif-skin/doscam_ni-dark.css $(TARGET_datadir)/doscam/skin/doscam_ni-dark.css
	$(INSTALL_DATA) -D $(TARGET_FILES)/doscam-webif-skin/IC_doscam_ni.tpl $(TARGET_datadir)/doscam/tpl/IC_doscam_ni.tpl
	$(TOUCH)

# -----------------------------------------------------------------------------

NEUTRINO-MEDIATHEK_VER    = git
NEUTRINO-MEDIATHEK_DIR    = mediathek.$(NEUTRINO-MEDIATHEK_VER)
NEUTRINO-MEDIATHEK_SOURCE = mediathek.$(NEUTRINO-MEDIATHEK_VER)
NEUTRINO-MEDIATHEK_SITE   = https://github.com/neutrino-mediathek

neutrino-mediathek: $(SHARE_PLUGINS) | $(TARGET_DIR)
	$(REMOVE)/$(NEUTRINO-MEDIATHEK_DIR)
	$(GET-GIT-SOURCE) $(NEUTRINO-MEDIATHEK_SITE)/$(NEUTRINO-MEDIATHEK_SOURCE) $(DL_DIR)/$(NEUTRINO-MEDIATHEK_SOURCE)
	$(CPDIR)/$(NEUTRINO-MEDIATHEK_SOURCE)
	$(CHDIR)/$(NEUTRINO-MEDIATHEK_DIR); \
		$(INSTALL_COPY) plugins/* $(SHARE_PLUGINS)/; \
		$(INSTALL_COPY) share/* $(TARGET_datadir)
	$(REMOVE)/$(NEUTRINO-MEDIATHEK_DIR)
	# temporarily use beta-version from our board
	rm -rf $(SHARE_PLUGINS)/neutrino-mediathek*
	$(INSTALL_COPY) $(SOURCE_DIR)/$(NI-NEUTRINO-PLUGINS)/scripts-lua/plugins/mediathek/* $(SHARE_PLUGINS)/
	$(TOUCH)

# -----------------------------------------------------------------------------

LINKS_VER    = 2.20.2
LINKS_DIR    = links-$(LINKS_VER)
LINKS_SOURCE = links-$(LINKS_VER).tar.bz2
LINKS_SITE   = http://links.twibright.com/download

$(DL_DIR)/$(LINKS_SOURCE):
	$(DOWNLOAD) $(LINKS_SITE)/$(LINKS_SOURCE)

LINKS_DEPS   = libpng libjpeg-turbo openssl

LINKS_PATCH  = links.patch
LINKS_PATCH += links-ac-prog-cxx.patch
LINKS_PATCH += links-accept_https_play.patch

ifeq ($(BOXTYPE), $(filter $(BOXTYPE), coolstream))
  LINKS_PATCH += links-input-nevis_ir.patch
else ifeq ($(BOXMODEL), $(filter $(BOXMODEL), hd51 bre2ze4k))
  LINKS_PATCH += links-input-event1.patch
else ifeq ($(BOXMODEL), $(filter $(BOXMODEL), h7))
  LINKS_PATCH += links-input-event2.patch
endif

links: $(LINKS_DEPS) $(DL_DIR)/$(LINKS_SOURCE) $(SHARE_PLUGINS) | $(TARGET_DIR)
	$(REMOVE)/$(LINKS_DIR)
	$(UNTAR)/$(LINKS_SOURCE)
	$(CHDIR)/$(LINKS_DIR)/intl; \
		$(SED) 's|^T_SAVE_HTML_OPTIONS,.*|T_SAVE_HTML_OPTIONS, "HTML-Optionen speichern",|' german.lng; \
		echo "english" > index.txt; \
		echo "german" >> index.txt; \
		./gen-intl
	$(CHDIR)/$(LINKS_DIR); \
		$(call apply_patches, $(LINKS_PATCH)); \
		autoreconf -vfi; \
		$(CONFIGURE) \
			--prefix=$(prefix) \
			--mandir=$(REMOVE_mandir) \
			--enable-graphics \
			--with-fb \
			--with-libjpeg \
			--with-ssl=$(TARGET_DIR) \
			--without-atheos \
			--without-directfb \
			--without-libtiff \
			--without-lzma \
			--without-pmshell \
			--without-svgalib \
			--without-x \
			; \
		$(MAKE); \
		$(MAKE) install DESTDIR=$(TARGET_DIR)
	mv -f $(TARGET_bindir)/links $(SHARE_PLUGINS)/links.so
	$(INSTALL_COPY) $(TARGET_FILES)/links/* $(TARGET_DIR)/
	$(REMOVE)/$(LINKS_DIR)
	$(TOUCH)

# -----------------------------------------------------------------------------

PHONY += plugins

PHONY += neutrino-plugins-uninstall neutrino-plugins-distclean
PHONY += neutrino-plugins-clean neutrino-plugins-clean-all
PHONY += neutrino-plugin-%