#
# Copyright (C) 2022 Teltonika-Networks
#

include $(TOPDIR)/rules.mk

PKG_NAME:=api-core
PKG_RELEASE:=1
PKG_LICENSE:=Teltonika-nda-source
PKG_BUILD_DEPENDS:=VUCI_MINIFY_LUA:luasrcdiet/host VUCI_COMPILE_LUA:luajit2/host

include $(INCLUDE_DIR)/package.mk
include ../utils.mk

define Package/api-core
  SECTION:=webui
  CATEGORY:=WebUI
  TITLE:= API core
  DEPENDS:=+rpcd +WIFI_SUPPORT:rpcd-mod-iwinfo +rpcd-mod-file +rpcd-mod-rpcsys +uhttpd \
		+luajit2 +libc +libubox-lua +libubus-lua \
		+libuci-lua +luci-lib-jsonc +luci-lib-nixio \
		+luci-lib-ip +rpcd-mod-rrdns +uhttpd-mod-lua \
		+libubus +luasocket +lsqlite3 +rpcd-mod-mnfinfo +luasec +rpcd-mod-uci \
		+rpcd-mod-rc +session +openssl-util +libopenssl +libpcre2 +libtlt-logger
endef

define Package/api-core/config
	source "$(SOURCE)/Config.in"
endef

define Package/api-core/description
	Provides core API functionality
endef

define Package/api-core/conffiles
/etc/config/vuci
endef



define install_closed_gpl
	$(CP) $(PKG_BUILD_DIR)/vuci.so $(1)
	$(CP) -a --no-preserve=ownership $(PKG_BUILD_DIR)/files $(1)/files
endef


define Package/api-core/install
	$(CP) -a --no-preserve=ownership $(PKG_BUILD_DIR)/files/* $(1)
	chmod +x "$(1)/www/cgi-bin/"*
	chmod +x "$(1)/sbin/api"
	chmod +x "$(1)/sbin/event_server"
	chmod +x "$(1)/bin/trigger_vuci_routes_reload"

	$(INSTALL_DIR) $(1)/usr/lib/lua
	$(INSTALL_DIR) $(1)/etc/vuci-uploads
	$(INSTALL_DATA) $(PKG_BUILD_DIR)/vuci.so $(1)/usr/lib/lua

	# remove some core api files if none of these features are supported
	$(if $(or $(CONFIG_IO_SUPPORT),\
	     $(CONFIG_GPS_SUPPORT),\
	     $(CONFIG_MOBILE_UTILS_SUPPORT),\
	     $(CONFIG_SERIAL_SUPPORT),\
	     $(CONFIG_SNMP_SUPPORT)),,\
		$(RM) $(1)/usr/lib/lua/vuci/io.lua; \
	)
	$(if $(CONFIG_IO_MODBUS_SUPPORT),,\
		$(RM) $(1)/usr/lib/lua/vuci/modbus_utils.lua; \
	)
	$(if $(or $(CONFIG_SERIAL_SUPPORT),\
	     $(CONFIG_IO_MODBUS_SUPPORT),\
	     $(CONFIG_NTRIP_SUPPORT),\
	     $(CONFIG_MBUS),\
	     $(CONFIG_DNP3_SUPPORT),\
	     $(CONFIG_BACNET_SUPPORT)),,\
		$(RM) $(1)/usr/lib/lua/api/services/serial_status.lua; \
		$(RM) $(1)/usr/lib/lua/vuci/serial.lua; \
	)
endef

$(eval $(call BuildPackage,api-core))
