1################################################################################ 2# 3# swupdate 4# 5################################################################################ 6 7SWUPDATE_VERSION = 2021.04 8SWUPDATE_SITE = $(call github,sbabic,swupdate,$(SWUPDATE_VERSION)) 9SWUPDATE_LICENSE = GPL-2.0, GPL-2.0+ with OpenSSL exception, LGPL-2.1+, MIT, ISC, BSD-1-Clause, BSD-2-Clause, BSD-3-Clause, CC0-1.0, CC-BY-ND-4.0 10SWUPDATE_LICENSE_FILES = LICENSES/BSD-1-Clause.txt \ 11 LICENSES/BSD-2-Clause.txt \ 12 LICENSES/BSD-3-Clause.txt \ 13 LICENSES/CC0-1.0.txt \ 14 LICENSES/CC-BY-ND-4.0.txt \ 15 LICENSES/GPL-2.0-only.txt \ 16 LICENSES/GPL-2.0-or-later.txt \ 17 LICENSES/ISC.txt \ 18 LICENSES/LGPL-2.1-or-later.txt \ 19 LICENSES/LicenseRef-OpenSSL-Exception.txt \ 20 LICENSES/MIT.txt 21 22# swupdate uses $CROSS-cc instead of $CROSS-gcc, which is not 23# available in all external toolchains, and use CC for linking. Ensure 24# TARGET_CC is used for both. 25SWUPDATE_MAKE_ENV = CC="$(TARGET_CC)" LD="$(TARGET_CC)" SKIP_STRIP=y 26 27# swupdate bundles its own version of mongoose (version 6.16) 28 29ifeq ($(BR2_PACKAGE_E2FSPROGS),y) 30SWUPDATE_DEPENDENCIES += e2fsprogs 31endif 32 33ifeq ($(BR2_PACKAGE_EFIBOOTMGR),y) 34SWUPDATE_DEPENDENCIES += efibootmgr 35SWUPDATE_MAKE_ENV += HAVE_LIBEBGENV=y 36else 37SWUPDATE_MAKE_ENV += HAVE_LIBEBGENV=n 38endif 39 40ifeq ($(BR2_PACKAGE_JSON_C),y) 41SWUPDATE_DEPENDENCIES += json-c 42SWUPDATE_MAKE_ENV += HAVE_JSON_C=y 43else 44SWUPDATE_MAKE_ENV += HAVE_JSON_C=n 45endif 46 47ifeq ($(BR2_PACKAGE_LIBARCHIVE),y) 48SWUPDATE_DEPENDENCIES += libarchive 49SWUPDATE_MAKE_ENV += HAVE_LIBARCHIVE=y 50else 51SWUPDATE_MAKE_ENV += HAVE_LIBARCHIVE=n 52endif 53 54ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),y) 55SWUPDATE_DEPENDENCIES += util-linux 56SWUPDATE_MAKE_ENV += HAVE_LIBBLKID=y 57else 58SWUPDATE_MAKE_ENV += HAVE_LIBBLKID=n 59endif 60 61ifeq ($(BR2_PACKAGE_LIBCONFIG),y) 62SWUPDATE_DEPENDENCIES += libconfig 63SWUPDATE_MAKE_ENV += HAVE_LIBCONFIG=y 64else 65SWUPDATE_MAKE_ENV += HAVE_LIBCONFIG=n 66endif 67 68ifeq ($(BR2_PACKAGE_LIBCURL),y) 69SWUPDATE_DEPENDENCIES += libcurl 70SWUPDATE_MAKE_ENV += HAVE_LIBCURL=y 71else 72SWUPDATE_MAKE_ENV += HAVE_LIBCURL=n 73endif 74 75ifeq ($(BR2_PACKAGE_LIBGPIOD),y) 76SWUPDATE_DEPENDENCIES += libgpiod 77SWUPDATE_MAKE_ENV += HAVE_LIBGPIOD=y 78else 79SWUPDATE_MAKE_ENV += HAVE_LIBGPIOD=n 80endif 81 82ifeq ($(BR2_PACKAGE_LIBURIPARSER),y) 83SWUPDATE_DEPENDENCIES += liburiparser 84SWUPDATE_MAKE_ENV += HAVE_URIPARSER=y 85else 86SWUPDATE_MAKE_ENV += HAVE_URIPARSER=n 87endif 88 89ifeq ($(BR2_PACKAGE_LIBWEBSOCKETS),y) 90SWUPDATE_DEPENDENCIES += libwebsockets 91SWUPDATE_MAKE_ENV += HAVE_LIBWEBSOCKETS=y 92else 93SWUPDATE_MAKE_ENV += HAVE_LIBWEBSOCKETS=n 94endif 95 96ifeq ($(BR2_PACKAGE_HAS_LUAINTERPRETER),y) 97SWUPDATE_DEPENDENCIES += luainterpreter host-pkgconf 98# defines the base name for the pkg-config file ("lua" or "luajit") 99define SWUPDATE_SET_LUA_VERSION 100 $(call KCONFIG_SET_OPT,CONFIG_LUAPKG,$(BR2_PACKAGE_PROVIDES_LUAINTERPRETER)) 101endef 102SWUPDATE_MAKE_ENV += HAVE_LUA=y 103else 104SWUPDATE_MAKE_ENV += HAVE_LUA=n 105endif 106 107ifeq ($(BR2_PACKAGE_MTD),y) 108SWUPDATE_DEPENDENCIES += mtd 109SWUPDATE_MAKE_ENV += HAVE_LIBMTD=y 110SWUPDATE_MAKE_ENV += HAVE_LIBUBI=y 111else 112SWUPDATE_MAKE_ENV += HAVE_LIBMTD=n 113SWUPDATE_MAKE_ENV += HAVE_LIBUBI=n 114endif 115 116# OpenSSL or mbedTLS 117ifeq ($(BR2_PACKAGE_OPENSSL),y) 118SWUPDATE_DEPENDENCIES += openssl 119SWUPDATE_MAKE_ENV += HAVE_LIBSSL=y 120SWUPDATE_MAKE_ENV += HAVE_LIBCRYPTO=y 121SWUPDATE_MAKE_ENV += HAVE_MBEDTLS=n 122else 123SWUPDATE_MAKE_ENV += HAVE_LIBSSL=n 124SWUPDATE_MAKE_ENV += HAVE_LIBCRYPTO=n 125ifeq ($(BR2_PACKAGE_MBEDTLS),y) 126SWUPDATE_DEPENDENCIES += mbedtls 127SWUPDATE_MAKE_ENV += HAVE_MBEDTLS=y 128else 129SWUPDATE_MAKE_ENV += HAVE_MBEDTLS=n 130endif 131endif 132 133ifeq ($(BR2_PACKAGE_P11_KIT),y) 134SWUPDATE_DEPENDENCIES += p11-kit 135SWUPDATE_MAKE_ENV += HAVE_P11KIT=y 136else 137SWUPDATE_MAKE_ENV += HAVE_P11KIT=n 138endif 139 140ifeq ($(BR2_PACKAGE_SYSTEMD),y) 141SWUPDATE_DEPENDENCIES += systemd 142define SWUPDATE_SET_SYSTEMD 143 $(call KCONFIG_ENABLE_OPT,CONFIG_SYSTEMD) 144endef 145else 146define SWUPDATE_SET_SYSTEMD 147 $(call KCONFIG_DISABLE_OPT,CONFIG_SYSTEMD) 148endef 149endif 150 151ifeq ($(BR2_PACKAGE_LIBUBOOTENV),y) 152SWUPDATE_DEPENDENCIES += libubootenv 153SWUPDATE_MAKE_ENV += HAVE_LIBUBOOTENV=y 154else 155SWUPDATE_MAKE_ENV += HAVE_LIBUBOOTENV=n 156endif 157 158ifeq ($(BR2_PACKAGE_WOLFSSL),y) 159SWUPDATE_DEPENDENCIES += wolfssl 160SWUPDATE_MAKE_ENV += HAVE_WOLFSSL=y 161else 162SWUPDATE_MAKE_ENV += HAVE_WOLFSSL=n 163endif 164 165ifeq ($(BR2_PACKAGE_ZEROMQ),y) 166SWUPDATE_DEPENDENCIES += zeromq 167SWUPDATE_MAKE_ENV += HAVE_LIBZEROMQ=y 168else 169SWUPDATE_MAKE_ENV += HAVE_LIBZEROMQ=n 170endif 171 172ifeq ($(BR2_PACKAGE_ZLIB),y) 173SWUPDATE_DEPENDENCIES += zlib 174SWUPDATE_MAKE_ENV += HAVE_ZLIB=y 175else 176SWUPDATE_MAKE_ENV += HAVE_ZLIB=n 177endif 178 179ifeq ($(BR2_PACKAGE_ZSTD),y) 180SWUPDATE_DEPENDENCIES += zstd 181SWUPDATE_MAKE_ENV += HAVE_ZSTD=y 182else 183SWUPDATE_MAKE_ENV += HAVE_ZSTD=n 184endif 185 186ifeq ($(BR2_PACKAGE_LIBRSYNC),y) 187SWUPDATE_DEPENDENCIES += librsync 188endif 189 190ifeq ($(BR2_PACKAGE_SWUPDATE_WEBSERVER),y) 191define SWUPDATE_SET_WEBSERVER 192 $(call KCONFIG_ENABLE_OPT,CONFIG_WEBSERVER) 193endef 194else 195define SWUPDATE_SET_WEBSERVER 196 $(call KCONFIG_DISABLE_OPT,CONFIG_WEBSERVER) 197endef 198endif 199 200SWUPDATE_BUILD_CONFIG = $(@D)/.config 201 202SWUPDATE_KCONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_SWUPDATE_CONFIG)) 203SWUPDATE_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig 204 205SWUPDATE_MAKE_OPTS = \ 206 CROSS_COMPILE="$(TARGET_CROSS)" \ 207 CONFIG_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \ 208 CONFIG_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" 209 210define SWUPDATE_KCONFIG_FIXUP_CMDS 211 $(SWUPDATE_SET_LUA_VERSION) 212 $(SWUPDATE_SET_SYSTEMD) 213 $(SWUPDATE_SET_WEBSERVER) 214endef 215 216define SWUPDATE_BUILD_CMDS 217 $(TARGET_MAKE_ENV) $(SWUPDATE_MAKE_ENV) $(MAKE) -C $(@D) $(SWUPDATE_MAKE_OPTS) 218endef 219 220define SWUPDATE_INSTALL_TARGET_CMDS 221 $(TARGET_MAKE_ENV) $(SWUPDATE_MAKE_ENV) $(MAKE) -C $(@D) \ 222 $(SWUPDATE_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install 223 $(if $(BR2_PACKAGE_SWUPDATE_INSTALL_WEBSITE), \ 224 mkdir -p $(TARGET_DIR)/var/www/swupdate; \ 225 cp -dpfr $(@D)/examples/www/v2/* $(TARGET_DIR)/var/www/swupdate) 226endef 227 228# Checks to give errors that the user can understand 229# Must be before we call to kconfig-package 230ifeq ($(BR2_PACKAGE_SWUPDATE)$(BR_BUILDING),yy) 231ifeq ($(call qstrip,$(BR2_PACKAGE_SWUPDATE_CONFIG)),) 232$(error No Swupdate configuration file specified, check your BR2_PACKAGE_SWUPDATE_CONFIG setting) 233endif 234endif 235 236# Services and configs derived from meta-swupdate(MIT license) 237# https://github.com/sbabic/meta-swupdate/tree/master/recipes-support/swupdate/swupdate 238define SWUPDATE_INSTALL_COMMON 239 mkdir -p $(TARGET_DIR)/etc/swupdate/conf.d \ 240 $(TARGET_DIR)/usr/lib/swupdate/conf.d 241 $(INSTALL) -D -m 755 $(SWUPDATE_PKGDIR)/swupdate.sh \ 242 $(TARGET_DIR)/usr/lib/swupdate/swupdate.sh 243 $(if $(BR2_PACKAGE_SWUPDATE_WEBSERVER), \ 244 $(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/10-mongoose-args \ 245 $(TARGET_DIR)/usr/lib/swupdate/conf.d/10-mongoose-args) 246endef 247define SWUPDATE_INSTALL_INIT_SYSTEMD 248 $(SWUPDATE_INSTALL_COMMON) 249 $(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/swupdate.service \ 250 $(TARGET_DIR)/usr/lib/systemd/system/swupdate.service 251 $(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/swupdate.socket \ 252 $(TARGET_DIR)/usr/lib/systemd/system/swupdate.socket 253 $(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/swupdate-usb@.service \ 254 $(TARGET_DIR)/usr/lib/systemd/system/swupdate-usb@.service 255 $(if $(BR2_PACKAGE_SWUPDATE_USB), \ 256 $(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/swupdate-usb.rules \ 257 $(TARGET_DIR)/lib/udev/rules.d/swupdate-usb.rules) 258 $(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/swupdate-progress.service \ 259 $(TARGET_DIR)/usr/lib/systemd/system/swupdate-progress.service 260 $(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/tmpfiles-swupdate.conf \ 261 $(TARGET_DIR)/usr/lib/tmpfiles.d/tmpfiles-swupdate.conf 262endef 263define SWUPDATE_INSTALL_INIT_SYSV 264 $(SWUPDATE_INSTALL_COMMON) 265 $(INSTALL) -D -m 755 $(SWUPDATE_PKGDIR)/S80swupdate \ 266 $(TARGET_DIR)/etc/init.d/S80swupdate 267 $(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/90-start-progress \ 268 $(TARGET_DIR)/usr/lib/swupdate/conf.d/90-start-progress 269endef 270 271$(eval $(kconfig-package)) 272