--- /dev/null
+config BR2_PACKAGE_SWUPDATE
+ bool "swupdate"
+ depends on BR2_TOOLCHAIN_HAS_THREADS
+ depends on BR2_USE_MMU # fork()
+ # swupdate requires a parser and uses libconfig as default
+ select BR2_PACKAGE_LIBCONFIG if !BR2_PACKAGE_JSON_C && !BR2_PACKAGE_LUA_5_2
+ help
+ swupdate provides a reliable way to update the software on an
+ embedded system.
+
+ swupdate is highly configurable to fit the targets requirements and
+ to minimize the footprint. The provided default configuration file
+ BR2_PACKAGE_SWUPDATE_CONFIG will enable swupdate with an embedded
+ webserver, a parser and a handler for raw NAND or NOR flash.
+
+ The default configuration file builds a reasonable firmware update
+ system with minimal external dependencies in my mind. If you like to
+ use your own modified configuration, you have to select the
+ necessary packages manually:
+
+ * Select BR2_PACKAGE_LUA_5_2 if you want to have Lua support.
+ * Select BR2_LIBCURL if you want to use the download feature.
+ * Select BR2_PACKAGE_OPENSSL is you want to add encryptions support
+ to the webserver.
+ * Select BR2_PACKAGE_MTD if you want to use swupdate with UBI
+ partitions.
+ * Select BR2_PACKAGE_ZLIB if you want to deal with zip compressed
+ archives.
+
+ https://sbabic.github.io/swupdate
+
+if BR2_PACKAGE_SWUPDATE
+
+config BR2_PACKAGE_SWUPDATE_CONFIG
+ string "swupdate configuration file"
+ default "package/swupdate/swupdate.config"
+ help
+ Path to the swupdate configuration file.
+
+ I you wish to use your own modified swupdate configuration file
+ specify the config file location with this option.
+
+config BR2_PACKAGE_SWUPDATE_INSTALL_WEBSITE
+ bool "install default website"
+ default y
+ help
+ Install the provided website to /var/www/swupdate.
+
+ This is necessary if you want to run swupdate with the embedded
+ webserver and do not provide an own website to be installed to
+ /var/www/swupdate.
+endif
+
+comment "swupdate needs a toolchain w/ threads"
+ depends on BR2_USE_MMU
+ depends on !BR2_TOOLCHAIN_HAS_THREADS
--- /dev/null
+################################################################################
+#
+# swupdate
+#
+################################################################################
+
+SWUPDATE_VERSION = 2015.07
+SWUPDATE_SITE = $(call github,sbabic,swupdate,$(SWUPDATE_VERSION))
+SWUPDATE_LICENSE = GPLv2+, MIT, Public Domain
+SWUPDATE_LICENSE_FILES = COPYING
+
+# swupdate bundles its own version of mongoose (version 3.8) and
+# lsqlite3 (version 0.8)
+
+ifeq ($(BR2_PACKAGE_JSON_C),y)
+SWUPDATE_DEPENDENCIES += json-c
+SWUPDATE_MAKE_ENV += HAVE_JSON_C=y
+else
+SWUPDATE_MAKE_ENV += HAVE_JSON_C=n
+endif
+
+ifeq ($(BR2_PACKAGE_LIBCONFIG),y)
+SWUPDATE_DEPENDENCIES += libconfig
+SWUPDATE_MAKE_ENV += HAVE_LIBCONFIG=y
+else
+SWUPDATE_MAKE_ENV += HAVE_LIBCONFIG=n
+endif
+
+ifeq ($(BR2_PACKAGE_LIBCURL),y)
+SWUPDATE_DEPENDENCIES += libcurl
+SWUPDATE_MAKE_ENV += HAVE_LIBCURL=y
+else
+SWUPDATE_MAKE_ENV += HAVE_LIBCURL=n
+endif
+
+ifeq ($(BR2_PACKAGE_LUA_5_2),y)
+SWUPDATE_DEPENDENCIES += lua
+SWUPDATE_MAKE_ENV += HAVE_LUA=y
+else
+SWUPDATE_MAKE_ENV += HAVE_LUA=n
+endif
+
+ifeq ($(BR2_PACKAGE_MTD),y)
+SWUPDATE_DEPENDENCIES += mtd
+SWUPDATE_MAKE_ENV += HAVE_LIBMTD=y
+SWUPDATE_MAKE_ENV += HAVE_LIBUBI=y
+else
+SWUPDATE_MAKE_ENV += HAVE_LIBMTD=n
+SWUPDATE_MAKE_ENV += HAVE_LIBUBI=n
+endif
+
+ifeq ($(BR2_PACKAGE_OPENSSL),y)
+SWUPDATE_DEPENDENCIES += openssl
+SWUPDATE_MAKE_ENV += HAVE_LIBSSL=y
+SWUPDATE_MAKE_ENV += HAVE_LIBCRYPTO=y
+else
+SWUPDATE_MAKE_ENV += HAVE_LIBSSL=n
+SWUPDATE_MAKE_ENV += HAVE_LIBCRYPTO=n
+endif
+
+ifeq ($(BR2_PACKAGE_ZLIB),y)
+SWUPDATE_DEPENDENCIES += zlib
+SWUPDATE_MAKE_ENV += HAVE_ZLIB=y
+else
+SWUPDATE_MAKE_ENV += HAVE_ZLIB=n
+endif
+
+SWUPDATE_BUILD_CONFIG = $(@D)/.config
+
+SWUPDATE_KCONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_SWUPDATE_CONFIG))
+SWUPDATE_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig
+
+ifeq ($(BR2_PREFER_STATIC_LIB),y)
+define SWUPDATE_PREFER_STATIC
+ $(call KCONFIG_ENABLE_OPT,CONFIG_STATIC,$(SWUPDATE_BUILD_CONFIG))
+endef
+endif
+
+define SWUPDATE_SET_BUILD_OPTIONS
+ $(call KCONFIG_SET_OPT,CONFIG_CROSS_COMPILE,"$(TARGET_CROSS)", \
+ $(SWUPDATE_BUILD_CONFIG))
+ $(call KCONFIG_SET_OPT,CONFIG_SYSROOT,"$(STAGING_DIR)", \
+ $(SWUPDATE_BUILD_CONFIG))
+ $(call KCONFIG_SET_OPT,CONFIG_EXTRA_CFLAGS,"$(TARGET_CFLAGS)", \
+ $(SWUPDATE_BUILD_CONFIG))
+ $(call KCONFIG_SET_OPT,CONFIG_EXTRA_LDFLAGS,"$(TARGET_LDFLAGS)", \
+ $(SWUPDATE_BUILD_CONFIG))
+endef
+
+define SWUPDATE_KCONFIG_FIXUP_CMDS
+ $(SWUPDATE_PREFER_STATIC)
+ $(SWUPDATE_SET_BUILD_OPTIONS)
+endef
+
+define SWUPDATE_BUILD_CMDS
+ $(TARGET_MAKE_ENV) $(SWUPDATE_MAKE_ENV) $(MAKE) -C $(@D)
+endef
+
+define SWUPDATE_INSTALL_TARGET_CMDS
+ $(INSTALL) -D -m 0755 $(@D)/swupdate $(TARGET_DIR)/usr/bin/swupdate
+ $(if $(BR2_PACKAGE_SWUPDATE_INSTALL_WEBSITE), \
+ mkdir -p $(TARGET_DIR)/var/www/swupdate; \
+ cp -dpf $(@D)/www/* $(TARGET_DIR)/var/www/swupdate)
+endef
+
+$(eval $(kconfig-package))