swupdate.mk 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. ################################################################################
  2. #
  3. # swupdate
  4. #
  5. ################################################################################
  6. SWUPDATE_VERSION = 2020.04
  7. SWUPDATE_SITE = $(call github,sbabic,swupdate,$(SWUPDATE_VERSION))
  8. SWUPDATE_LICENSE = GPL-2.0+ with OpenSSL exception, LGPL-2.1+, MIT
  9. SWUPDATE_LICENSE_FILES = Licenses/Exceptions Licenses/gpl-2.0.txt \
  10. Licenses/lgpl-2.1.txt Licenses/mit.txt
  11. # swupdate uses $CROSS-cc instead of $CROSS-gcc, which is not
  12. # available in all external toolchains, and use CC for linking. Ensure
  13. # TARGET_CC is used for both.
  14. SWUPDATE_MAKE_ENV = CC="$(TARGET_CC)" LD="$(TARGET_CC)"
  15. # swupdate bundles its own version of mongoose (version 6.16)
  16. ifeq ($(BR2_PACKAGE_EFIBOOTMGR),y)
  17. SWUPDATE_DEPENDENCIES += efibootmgr
  18. SWUPDATE_MAKE_ENV += HAVE_LIBEBGENV=y
  19. else
  20. SWUPDATE_MAKE_ENV += HAVE_LIBEBGENV=n
  21. endif
  22. ifeq ($(BR2_PACKAGE_JSON_C),y)
  23. SWUPDATE_DEPENDENCIES += json-c
  24. SWUPDATE_MAKE_ENV += HAVE_JSON_C=y
  25. else
  26. SWUPDATE_MAKE_ENV += HAVE_JSON_C=n
  27. endif
  28. ifeq ($(BR2_PACKAGE_LIBARCHIVE),y)
  29. SWUPDATE_DEPENDENCIES += libarchive
  30. SWUPDATE_MAKE_ENV += HAVE_LIBARCHIVE=y
  31. else
  32. SWUPDATE_MAKE_ENV += HAVE_LIBARCHIVE=n
  33. endif
  34. ifeq ($(BR2_PACKAGE_LIBCONFIG),y)
  35. SWUPDATE_DEPENDENCIES += libconfig
  36. SWUPDATE_MAKE_ENV += HAVE_LIBCONFIG=y
  37. else
  38. SWUPDATE_MAKE_ENV += HAVE_LIBCONFIG=n
  39. endif
  40. ifeq ($(BR2_PACKAGE_LIBCURL),y)
  41. SWUPDATE_DEPENDENCIES += libcurl
  42. SWUPDATE_MAKE_ENV += HAVE_LIBCURL=y
  43. else
  44. SWUPDATE_MAKE_ENV += HAVE_LIBCURL=n
  45. endif
  46. ifeq ($(BR2_PACKAGE_LIBGPIOD),y)
  47. SWUPDATE_DEPENDENCIES += libgpiod
  48. SWUPDATE_MAKE_ENV += HAVE_LIBGPIOD=y
  49. else
  50. SWUPDATE_MAKE_ENV += HAVE_LIBGPIOD=n
  51. endif
  52. ifeq ($(BR2_PACKAGE_LIBURIPARSER),y)
  53. SWUPDATE_DEPENDENCIES += liburiparser
  54. SWUPDATE_MAKE_ENV += HAVE_URIPARSER=y
  55. else
  56. SWUPDATE_MAKE_ENV += HAVE_URIPARSER=n
  57. endif
  58. ifeq ($(BR2_PACKAGE_LIBWEBSOCKETS),y)
  59. SWUPDATE_DEPENDENCIES += libwebsockets
  60. SWUPDATE_MAKE_ENV += HAVE_LIBWEBSOCKETS=y
  61. else
  62. SWUPDATE_MAKE_ENV += HAVE_LIBWEBSOCKETS=n
  63. endif
  64. ifeq ($(BR2_PACKAGE_HAS_LUAINTERPRETER):$(BR2_STATIC_LIBS),y:)
  65. SWUPDATE_DEPENDENCIES += luainterpreter host-pkgconf
  66. # defines the base name for the pkg-config file ("lua" or "luajit")
  67. define SWUPDATE_SET_LUA_VERSION
  68. $(call KCONFIG_SET_OPT,CONFIG_LUAPKG,$(BR2_PACKAGE_PROVIDES_LUAINTERPRETER))
  69. endef
  70. SWUPDATE_MAKE_ENV += HAVE_LUA=y
  71. else
  72. SWUPDATE_MAKE_ENV += HAVE_LUA=n
  73. endif
  74. ifeq ($(BR2_PACKAGE_MTD),y)
  75. SWUPDATE_DEPENDENCIES += mtd
  76. SWUPDATE_MAKE_ENV += HAVE_LIBMTD=y
  77. SWUPDATE_MAKE_ENV += HAVE_LIBUBI=y
  78. else
  79. SWUPDATE_MAKE_ENV += HAVE_LIBMTD=n
  80. SWUPDATE_MAKE_ENV += HAVE_LIBUBI=n
  81. endif
  82. # OpenSSL or mbedTLS
  83. ifeq ($(BR2_PACKAGE_OPENSSL),y)
  84. SWUPDATE_DEPENDENCIES += openssl
  85. SWUPDATE_MAKE_ENV += HAVE_LIBSSL=y
  86. SWUPDATE_MAKE_ENV += HAVE_LIBCRYPTO=y
  87. SWUPDATE_MAKE_ENV += HAVE_MBEDTLS=n
  88. else
  89. SWUPDATE_MAKE_ENV += HAVE_LIBSSL=n
  90. SWUPDATE_MAKE_ENV += HAVE_LIBCRYPTO=n
  91. ifeq ($(BR2_PACKAGE_MBEDTLS),y)
  92. SWUPDATE_DEPENDENCIES += mbedtls
  93. SWUPDATE_MAKE_ENV += HAVE_MBEDTLS=y
  94. else
  95. SWUPDATE_MAKE_ENV += HAVE_MBEDTLS=n
  96. endif
  97. endif
  98. ifeq ($(BR2_PACKAGE_SYSTEMD),y)
  99. SWUPDATE_DEPENDENCIES += systemd
  100. endif
  101. ifeq ($(BR2_PACKAGE_LIBUBOOTENV),y)
  102. SWUPDATE_DEPENDENCIES += libubootenv
  103. SWUPDATE_MAKE_ENV += HAVE_LIBUBOOTENV=y
  104. else
  105. SWUPDATE_MAKE_ENV += HAVE_LIBUBOOTENV=n
  106. endif
  107. ifeq ($(BR2_PACKAGE_ZEROMQ),y)
  108. SWUPDATE_DEPENDENCIES += zeromq
  109. SWUPDATE_MAKE_ENV += HAVE_LIBZEROMQ=y
  110. else
  111. SWUPDATE_MAKE_ENV += HAVE_LIBZEROMQ=n
  112. endif
  113. ifeq ($(BR2_PACKAGE_ZLIB),y)
  114. SWUPDATE_DEPENDENCIES += zlib
  115. SWUPDATE_MAKE_ENV += HAVE_ZLIB=y
  116. else
  117. SWUPDATE_MAKE_ENV += HAVE_ZLIB=n
  118. endif
  119. ifeq ($(BR2_PACKAGE_ZSTD),y)
  120. SWUPDATE_DEPENDENCIES += zstd
  121. SWUPDATE_MAKE_ENV += HAVE_ZSTD=y
  122. else
  123. SWUPDATE_MAKE_ENV += HAVE_ZSTD=n
  124. endif
  125. ifeq ($(BR2_PACKAGE_LIBRSYNC),y)
  126. SWUPDATE_DEPENDENCIES += librsync
  127. endif
  128. SWUPDATE_BUILD_CONFIG = $(@D)/.config
  129. SWUPDATE_KCONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_SWUPDATE_CONFIG))
  130. SWUPDATE_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig
  131. ifeq ($(BR2_STATIC_LIBS),y)
  132. define SWUPDATE_PREFER_STATIC
  133. $(call KCONFIG_ENABLE_OPT,CONFIG_STATIC)
  134. endef
  135. endif
  136. SWUPDATE_MAKE_OPTS = \
  137. CROSS_COMPILE="$(TARGET_CROSS)" \
  138. CONFIG_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
  139. CONFIG_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)"
  140. define SWUPDATE_KCONFIG_FIXUP_CMDS
  141. $(SWUPDATE_PREFER_STATIC)
  142. $(SWUPDATE_SET_LUA_VERSION)
  143. endef
  144. define SWUPDATE_BUILD_CMDS
  145. $(TARGET_MAKE_ENV) $(SWUPDATE_MAKE_ENV) $(MAKE) $(SWUPDATE_MAKE_OPTS) -C $(@D)
  146. endef
  147. define SWUPDATE_INSTALL_TARGET_CMDS
  148. $(INSTALL) -D -m 0755 $(@D)/swupdate $(TARGET_DIR)/usr/bin/swupdate
  149. $(if $(BR2_PACKAGE_SWUPDATE_INSTALL_WEBSITE), \
  150. mkdir -p $(TARGET_DIR)/var/www/swupdate; \
  151. cp -dpfr $(@D)/examples/www/v2/* $(TARGET_DIR)/var/www/swupdate)
  152. endef
  153. # Checks to give errors that the user can understand
  154. # Must be before we call to kconfig-package
  155. ifeq ($(BR2_PACKAGE_SWUPDATE)$(BR_BUILDING),yy)
  156. ifeq ($(call qstrip,$(BR2_PACKAGE_SWUPDATE_CONFIG)),)
  157. $(error No Swupdate configuration file specified, check your BR2_PACKAGE_SWUPDATE_CONFIG setting)
  158. endif
  159. endif
  160. ifeq ($(BR2_PACKAGE_SWUPDATE_INSTALL_WEBSITE),y)
  161. define SWUPDATE_INSTALL_COMMON
  162. mkdir -p $(TARGET_DIR)/etc/swupdate/conf.d \
  163. $(TARGET_DIR)/usr/lib/swupdate/conf.d
  164. $(INSTALL) -D -m 755 package/swupdate/swupdate.sh \
  165. $(TARGET_DIR)/usr/lib/swupdate/swupdate.sh
  166. endef
  167. define SWUPDATE_INSTALL_INIT_SYSTEMD
  168. $(SWUPDATE_INSTALL_COMMON)
  169. $(INSTALL) -D -m 644 package/swupdate/swupdate.service \
  170. $(TARGET_DIR)/usr/lib/systemd/system/swupdate.service
  171. endef
  172. define SWUPDATE_INSTALL_INIT_SYSV
  173. $(SWUPDATE_INSTALL_COMMON)
  174. $(INSTALL) -D -m 755 package/swupdate/S80swupdate \
  175. $(TARGET_DIR)/etc/init.d/S80swupdate
  176. endef
  177. endif
  178. $(eval $(kconfig-package))