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