mjpg-streamer: modularize package

Instead of selecting the modules on compile time, package them into
several small packages. While at it, add the ZeroMQ output plugin which
was previously not packaged.
Also make sure to use OpenWrt's built-in support for CMake properly by
calling Build/Configure/Default in the package's Build/Configure rule.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
Daniel Golle 2019-09-16 00:36:10 +02:00
parent 151f1e30e5
commit 2e98c1c4c4
No known key found for this signature in database
GPG key ID: DD8D36F0A710502F
2 changed files with 198 additions and 80 deletions

View file

@ -1,44 +0,0 @@
#
# Copyright (C) 2014 OpenWrt.org
#
if PACKAGE_mjpg-streamer
config MJPG_STREAMER_V4L2
bool "Build input_uvc with libv4l2 (camera controls)"
default n
select PACKAGE_libv4l
config MJPG_STREAMER_INPUT_FILE
bool "Install input file plugin"
default n
config MJPG_STREAMER_INPUT_UVC
bool "Install input uvc plugin"
default y
config MJPG_STREAMER_INPUT_HTTP
bool "Install input HTTP plugin"
default n
config MJPG_STREAMER_OUTPUT_RTSP
bool "Install output RTSP plugin"
default n
config MJPG_STREAMER_OUTPUT_UDP
bool "Install output UDP plugin"
default n
config MJPG_STREAMER_OUTPUT_FILE
bool "Install output file plugin"
default n
config MJPG_STREAMER_OUTPUT_HTTP
bool "Install output HTTP plugin"
default y
config MJPG_STREAMER_WWW
bool "Install complete Web UI files (includes cambozola)"
default n
endif

View file

@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=mjpg-streamer PKG_NAME:=mjpg-streamer
PKG_VERSION:=2018-10-25 PKG_VERSION:=2018-10-25
PKG_RELEASE:=2 PKG_RELEASE:=3
PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>, \ PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>, \
Ted Hess <thess@kitschensync.net> Ted Hess <thess@kitschensync.net>
@ -24,7 +24,7 @@ PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk include $(INCLUDE_DIR)/cmake.mk
PKG_BUILD_DEPENDS:=MJPG_STREAMER_V4L2:libv4l PKG_BUILD_DEPENDS:=MJPG_STREAMER_V4L2:libv4l libzmq libprotobuf-c
define Package/mjpg-streamer define Package/mjpg-streamer
SECTION:=multimedia SECTION:=multimedia
@ -32,21 +32,151 @@ define Package/mjpg-streamer
TITLE:=MJPG-streamer TITLE:=MJPG-streamer
DEPENDS:=+libpthread +libjpeg +MJPG_STREAMER_V4L2:libv4l DEPENDS:=+libpthread +libjpeg +MJPG_STREAMER_V4L2:libv4l
URL:=https://github.com/jacksonliam/mjpg-streamer URL:=https://github.com/jacksonliam/mjpg-streamer
MENU:=1
endef endef
define Package/mjpg-streamer/description define Package/mjpg-streamer/Default/description
Streaming application for Linux-UVC compatible webcams Streaming application for Linux-UVC compatible webcams
endef endef
define Package/mjpg-streamer/config define Package/mjpg-streamer/description
source "$(SOURCE)/Config.in" $(call Package/mjpg-streamer/Default/description)
endef endef
define Package/mjpg-streamer/conffiles define Package/mjpg-streamer/conffiles
/etc/config/mjpg-streamer /etc/config/mjpg-streamer
endef endef
define Package/mjpg-streamer/config
if PACKAGE_mjpg-streamer-input-uvc
config MJPG_STREAMER_V4L2
bool "Build input_uvc with libv4l2 (camera controls)"
default n
select PACKAGE_libv4l
endif
endef
define Package/mjpg-streamer/Default
SECTION:=multimedia
CATEGORY:=Multimedia
TITLE:=MJPG-streamer
URL:=https://github.com/jacksonliam/mjpg-streamer
DEPENDS:=mjpg-streamer
endef
define Package/mjpg-streamer-input-file
$(call Package/mjpg-streamer/Default)
TITLE+= (file input)
endef
define Package/mjpg-streamer-input-file/description
$(call Package/mjpg-streamer/Default/description)
This package provides the file input plugin.
endef
define Package/mjpg-streamer-input-uvc
$(call Package/mjpg-streamer/Default)
TITLE+= (UVC input)
endef
define Package/mjpg-streamer-input-uvc/description
$(call Package/mjpg-streamer/Default/description)
This package provides the UVC input plugin.
endef
define Package/mjpg-streamer-input-http
$(call Package/mjpg-streamer/Default)
TITLE+= (HTTP input)
endef
define Package/mjpg-streamer-input-http/description
$(call Package/mjpg-streamer/Default/description)
This package provides the http input plugin.
endef
define Package/mjpg-streamer-output-rtsp
$(call Package/mjpg-streamer/Default)
TITLE+= (RTSP output)
endef
define Package/mjpg-streamer-output-rtsp/description
$(call Package/mjpg-streamer/Default/description)
This package provides the RTSP output plugin.
endef
define Package/mjpg-streamer-output-udp
$(call Package/mjpg-streamer/Default)
TITLE+= (UDP output)
endef
define Package/mjpg-streamer-output-udp/description
$(call Package/mjpg-streamer/Default/description)
This package provides the UDP output plugin.
endef
define Package/mjpg-streamer-output-file
$(call Package/mjpg-streamer/Default)
TITLE+= (file output)
endef
define Package/mjpg-streamer-output-file/description
$(call Package/mjpg-streamer/Default/description)
This package provides the file output plugin.
endef
define Package/mjpg-streamer-output-http
$(call Package/mjpg-streamer/Default)
TITLE+= (HTTP output)
endef
define Package/mjpg-streamer-output-http/description
$(call Package/mjpg-streamer/Default/description)
This package provides the HTTP output plugin.
endef
define Package/mjpg-streamer-output-zmq
$(call Package/mjpg-streamer/Default)
TITLE+= (zmq output)
DEPENDS+= +libzmq +libprotobuf-c
endef
define Package/mjpg-streamer-output-zmq/description
$(call Package/mjpg-streamer/Default/description)
This package provides the ZeroMQ output plugin.
endef
define Package/mjpg-streamer-www
$(call Package/mjpg-streamer/Default)
TITLE+= (full www)
CONFLICTS:=mjpg-streamer-www-simple
endef
define Package/mjpg-streamer-www/description
$(call Package/mjpg-streamer/Default/description)
This package provides full version of the web content.
Includes cambozola applet.
endef
define Package/mjpg-streamer-www-simple
$(call Package/mjpg-streamer/Default)
TITLE+= (simple www)
endef
define Package/mjpg-streamer-www-simple/description
$(call Package/mjpg-streamer/Default/description)
This package provides simple version of the web content.
endef
CAMBOZOLA:=cambozola-0.936.tar.gz CAMBOZOLA:=cambozola-0.936.tar.gz
# Distribution URL doesn't always have the correct version # Distribution URL doesn't always have the correct version
@ -67,7 +197,7 @@ define Build/Prepare
$(Build/Patch) $(Build/Patch)
# Fetch latest cambozola that works with latest Java(s) # Fetch latest cambozola that works with latest Java(s)
# Yes, I know this is ugly # Yes, I know this is ugly
ifeq ($(CONFIG_MJPG_STREAMER_WWW),y) ifneq ($(CONFIG_PACKAGE_mjpg-streamer-www),)
$(eval $(call Download,cambozola)) $(eval $(call Download,cambozola))
$(TAR) -xf $(DL_DIR)/$(CAMBOZOLA) --strip=2 --wildcards \ $(TAR) -xf $(DL_DIR)/$(CAMBOZOLA) --strip=2 --wildcards \
-C $(PKG_BUILD_DIR)/www */dist/cambozola.jar -C $(PKG_BUILD_DIR)/www */dist/cambozola.jar
@ -76,6 +206,7 @@ endef
define Build/Configure define Build/Configure
$(RM) $(PKG_BUILD_DIR)/plugins/input_uvc/uvcvideo.h $(RM) $(PKG_BUILD_DIR)/plugins/input_uvc/uvcvideo.h
$(call Build/Configure/Default)
endef endef
TARGET_LDFLAGS+= -ljpeg TARGET_LDFLAGS+= -ljpeg
@ -87,41 +218,72 @@ endif
define Package/mjpg-streamer/install define Package/mjpg-streamer/install
$(INSTALL_DIR) $(1)/usr/bin $(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/mjpg_streamer $(1)/usr/bin/ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mjpg_streamer $(1)/usr/bin/
$(INSTALL_DIR) $(1)/etc/config $(INSTALL_DIR) $(1)/etc/config
$(CP) ./files/mjpg-streamer.config $(1)/etc/config/mjpg-streamer $(CP) ./files/mjpg-streamer.config $(1)/etc/config/mjpg-streamer
$(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/mjpg-streamer.init $(1)/etc/init.d/mjpg-streamer $(INSTALL_BIN) ./files/mjpg-streamer.init $(1)/etc/init.d/mjpg-streamer
$(INSTALL_DIR) $(1)/etc/hotplug.d/usb $(INSTALL_DIR) $(1)/etc/hotplug.d/usb
$(INSTALL_DATA) ./files/mjpg-streamer.hotplug $(1)/etc/hotplug.d/usb/20-mjpg-streamer $(INSTALL_DATA) ./files/mjpg-streamer.hotplug $(1)/etc/hotplug.d/usb/20-mjpg-streamer
$(INSTALL_DIR) $(1)/usr/lib endef
ifeq ($(CONFIG_MJPG_STREAMER_INPUT_FILE),y)
$(CP) $(PKG_BUILD_DIR)/input_file.so $(1)/usr/lib define Package/mjpg-streamer-input-file/install
endif $(INSTALL_DIR) $(1)/usr/lib/mjpg-streamer
ifeq ($(CONFIG_MJPG_STREAMER_INPUT_UVC),y) $(CP) $(PKG_INSTALL_DIR)/usr/lib/mjpg-streamer/input_file.so $(1)/usr/lib/mjpg-streamer
$(CP) $(PKG_BUILD_DIR)/input_uvc.so $(1)/usr/lib endef
endif
ifeq ($(CONFIG_MJPG_STREAMER_INPUT_HTTP),y) define Package/mjpg-streamer-input-uvc/install
$(CP) $(PKG_BUILD_DIR)/input_http.so $(1)/usr/lib $(INSTALL_DIR) $(1)/usr/lib/mjpg-streamer
endif $(CP) $(PKG_INSTALL_DIR)/usr/lib/mjpg-streamer/input_uvc.so $(1)/usr/lib/mjpg-streamer
ifeq ($(CONFIG_MJPG_STREAMER_OUTPUT_RTSP),y) endef
$(CP) $(PKG_BUILD_DIR)/output_rtsp.so $(1)/usr/lib
endif define Package/mjpg-streamer-input-http/install
ifeq ($(CONFIG_MJPG_STREAMER_OUTPUT_UDP),y) $(INSTALL_DIR) $(1)/usr/lib/mjpg-streamer
$(CP) $(PKG_BUILD_DIR)/output_udp.so $(1)/usr/lib $(CP) $(PKG_INSTALL_DIR)/usr/lib/mjpg-streamer/input_http.so $(1)/usr/lib/mjpg-streamer
endif endef
ifeq ($(CONFIG_MJPG_STREAMER_OUTPUT_FILE),y)
$(CP) $(PKG_BUILD_DIR)/output_file.so $(1)/usr/lib define Package/mjpg-streamer-output-rtsp/install
endif $(INSTALL_DIR) $(1)/usr/lib/mjpg-streamer
ifeq ($(CONFIG_MJPG_STREAMER_OUTPUT_HTTP),y) $(CP) $(PKG_INSTALL_DIR)/usr/lib/mjpg-streamer/output_rtsp.so $(1)/usr/lib/mjpg-streamer
$(CP) $(PKG_BUILD_DIR)/output_http.so $(1)/usr/lib endef
define Package/mjpg-streamer-output-udp/install
$(INSTALL_DIR) $(1)/usr/lib/mjpg-streamer
$(CP) $(PKG_INSTALL_DIR)/usr/lib/mjpg-streamer/output_udp.so $(1)/usr/lib/mjpg-streamer
endef
define Package/mjpg-streamer-output-file/install
$(INSTALL_DIR) $(1)/usr/lib/mjpg-streamer
$(CP) $(PKG_INSTALL_DIR)/usr/lib/mjpg-streamer/output_file.so $(1)/usr/lib/mjpg-streamer
endef
define Package/mjpg-streamer-output-http/install
$(INSTALL_DIR) $(1)/usr/lib/mjpg-streamer
$(CP) $(PKG_INSTALL_DIR)/usr/lib/mjpg-streamer/output_http.so $(1)/usr/lib/mjpg-streamer
endef
define Package/mjpg-streamer-output-zmq/install
$(INSTALL_DIR) $(1)/usr/lib/mjpg-streamer
$(CP) $(PKG_INSTALL_DIR)/usr/lib/mjpg-streamer/output_zmqserver.so $(1)/usr/lib/mjpg-streamer
endef
define Package/mjpg-streamer-www/install
$(INSTALL_DIR) $(1)/www/webcam $(INSTALL_DIR) $(1)/www/webcam
ifeq ($(CONFIG_MJPG_STREAMER_WWW),y) $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/mjpg-streamer/www/* $(1)/www/webcam
$(INSTALL_DATA) $(PKG_BUILD_DIR)/www/* $(1)/www/webcam endef
else
$(INSTALL_DATA) $(PKG_BUILD_DIR)/www/stream_simple.html $(1)/www/webcam/index.html define Package/mjpg-streamer-www-simple/install
endif $(INSTALL_DIR) $(1)/www/webcam
endif $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/mjpg-streamer/www/stream_simple.html $(1)/www/webcam/index.html
endef endef
$(eval $(call BuildPackage,mjpg-streamer)) $(eval $(call BuildPackage,mjpg-streamer))
$(eval $(call BuildPackage,mjpg-streamer-input-file))
$(eval $(call BuildPackage,mjpg-streamer-input-uvc))
$(eval $(call BuildPackage,mjpg-streamer-input-http))
$(eval $(call BuildPackage,mjpg-streamer-output-rtsp))
$(eval $(call BuildPackage,mjpg-streamer-output-file))
$(eval $(call BuildPackage,mjpg-streamer-output-http))
$(eval $(call BuildPackage,mjpg-streamer-output-zmq))
$(eval $(call BuildPackage,mjpg-streamer-www))
$(eval $(call BuildPackage,mjpg-streamer-www-simple))