You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

452 lines
14 KiB

  1. #
  2. # Copyright (C) 2006-2016 OpenWrt.org
  3. #
  4. # This is free software, licensed under the GNU General Public License v2.
  5. # See /LICENSE for more information.
  6. #
  7. # No copyright by Harald Geyer as filling in a template doesn't constitute
  8. # an original work in the sense of copyright law.
  9. include $(TOPDIR)/rules.mk
  10. PKG_MAINTAINER:=Harald Geyer <harald@ccbib.org>
  11. PKG_NAME:=elektra
  12. PKG_LICENSE:=BSD-3-Clause
  13. PKG_LICENSE_FILES:=LICENSE.md
  14. PKG_VERSION:=0.8.21
  15. PKG_RELEASE:=2
  16. # Use this for official releasees
  17. PKG_HASH:=51892570f18d1667d0da4d0908a091e41b41c20db9835765677109a3d150cd26
  18. PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
  19. PKG_SOURCE_URL:=http://ftp.libelektra.org/ftp/elektra/releases
  20. # Use this to test versions still under development
  21. #PKG_SOURCE_PROTO:=git
  22. #PKG_SOURCE_URL:=https://github.com/ElektraInitiative/libelektra.git
  23. #PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
  24. #PKG_SOURCE_VERSION:=e97efb29a94f3a49cb952d06552fcf53708ea8c7
  25. #PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
  26. PKG_BUILD_DEPENDS:=elektra/host swig/host
  27. include $(INCLUDE_DIR)/package.mk
  28. include $(INCLUDE_DIR)/host-build.mk
  29. include $(INCLUDE_DIR)/cmake.mk
  30. define Package/libelektra/Default
  31. SECTION:=libs
  32. CATEGORY:=Libraries
  33. TITLE:=Elektra
  34. URL:=http://www.libelektra.org/
  35. SUBMENU:=libelektra
  36. endef
  37. define Package/libelektra/Default-description
  38. Elektra provides an universal and secure framework to store
  39. configuration parameters in a global, hierarchical key database.
  40. endef
  41. define Package/libelektra-core
  42. $(call Package/libelektra/Default)
  43. TITLE:=Elektra core library
  44. DEPENDS:=+libpthread
  45. endef
  46. define Package/libelektra-core/description
  47. $(call Package/libelektra/Default-description)
  48. This package contains the core libraries, that all other parts of
  49. elektra and all programs using elektra depend on, and an almost
  50. minimal set of plugins to be actually useful.
  51. endef
  52. define Package/elektra-kdb
  53. SECTION:=utils
  54. CATEGORY:=Utilities
  55. TITLE:=Elektra kdb tool
  56. URL:=http://www.libelektra.org/
  57. DEPENDS:=+libelektra-core +libstdcpp
  58. endef
  59. define Package/elektra-kdb/description
  60. $(call Package/libelektra/Default-description)
  61. This package contains the kdb tool, which allows to access and change
  62. the content of the key database from the shell.
  63. endef
  64. define Package/libelektra-resolvers
  65. $(call Package/libelektra/Default)
  66. TITLE:=Elektra additional resolvers
  67. DEPENDS:=+libelektra-core +libpthread
  68. endef
  69. define Package/libelektra-resolvers/description
  70. $(call Package/libelektra/Default-description)
  71. This package contains additional resolvers not included in the
  72. libelektra-core package. Usually there is no reason to install this.
  73. endef
  74. define Package/libelektra-plugins
  75. $(call Package/libelektra/Default)
  76. TITLE:=Useful elektra plugins
  77. DEPENDS:=+libelektra-core
  78. endef
  79. define CONTENT_ELEKTRA_PLUGINS_TEXT
  80. base64 boolean cachefilter camel ccode conditionals csvstorage
  81. date directoryvalue enum file filecheck glob hexcode hidden
  82. hosts iconv ipaddr keytometa line lineendings list mathcheck
  83. mini network null path profile range shell syslog uname
  84. validation
  85. endef
  86. CONTENT_ELEKTRA_PLUGINS = $(strip $(CONTENT_ELEKTRA_PLUGINS_TEXT))
  87. define Package/libelektra-plugins/description
  88. $(call Package/libelektra/Default-description)
  89. This package contains plugins for various common configuration file
  90. format and optional features without heavy dependencies. Currently
  91. these plugins are included:
  92. $(CONTENT_ELEKTRA_PLUGINS_TEXT)
  93. endef
  94. define Package/libelektra-cpp
  95. $(call Package/libelektra/Default)
  96. TITLE:=Elektra plugins depending on libstdcpp
  97. DEPENDS:=+libelektra-core +libstdcpp
  98. endef
  99. CONTENT_ELEKTRA_CPP=dump regexstore struct type
  100. define Package/libelektra-cpp/description
  101. $(call Package/libelektra/Default-description)
  102. This package contains plugins written in C++.
  103. Currently these are:
  104. $(CONTENT_ELEKTRA_CPP)
  105. endef
  106. define Package/libelektra-boost
  107. $(call Package/libelektra/Default)
  108. TITLE:=Elektra plugins depending on boost
  109. DEPENDS:=+libelektra-core +libstdcpp +boost
  110. endef
  111. define Package/libelektra-boost/description
  112. $(call Package/libelektra/Default-description)
  113. This package contains plugins written in C++ with an dependency on
  114. boost. Currently this is a plugin for a tcl like format.
  115. endef
  116. define Package/libelektra-crypto
  117. $(call Package/libelektra/Default)
  118. TITLE:=Elektra crypto plugin
  119. DEPENDS:=+libelektra-core +libopenssl
  120. endef
  121. define Package/libelektra-crypto/description
  122. $(call Package/libelektra/Default-description)
  123. This package contains support for encrypting values before storage.
  124. endef
  125. define Package/libelektra-curlget
  126. $(call Package/libelektra/Default)
  127. TITLE:=Elektra curlget plugin
  128. DEPENDS:=+libelektra-core +libcurl +libopenssl
  129. endef
  130. define Package/libelektra-curlget/description
  131. $(call Package/libelektra/Default-description)
  132. This plugin can get configuration data from remote URLs before access.
  133. endef
  134. define Package/libelektra-dbus
  135. $(call Package/libelektra/Default)
  136. TITLE:=Elektra dbus plugin
  137. DEPENDS:=+libelektra-core +libdbus
  138. endef
  139. define Package/libelektra-dbus/description
  140. $(call Package/libelektra/Default-description)
  141. This package contains support for dbus notification on configuration
  142. changes.
  143. endef
  144. define Package/libelektra-xerces
  145. $(call Package/libelektra/Default)
  146. TITLE:=Elektra xerces based xml plugin
  147. DEPENDS:=+libelektra-core +libstdcpp +libxerces-c
  148. endef
  149. define Package/libelektra-xerces/description
  150. $(call Package/libelektra/Default-description)
  151. The xerces plugin supplants the xmltool plugin
  152. and allows us to use XML files not following a specific schemata.
  153. Attributes are mapped to Elektra's metadata, multiple keys with the
  154. same names are mapped to arrays.
  155. endef
  156. define Package/libelektra-xml
  157. $(call Package/libelektra/Default)
  158. TITLE:=Elektra xmltool plugin
  159. DEPENDS:=+libelektra-core +libxml2
  160. endef
  161. define Package/libelektra-xml/description
  162. $(call Package/libelektra/Default-description)
  163. This package contains a plugin for storing data with xml syntax.
  164. endef
  165. define Package/libelektra-yajl
  166. $(call Package/libelektra/Default)
  167. TITLE:=Elektra yajl (json) plugin
  168. DEPENDS:=+libelektra-core +yajl
  169. endef
  170. define Package/libelektra-yajl/description
  171. $(call Package/libelektra/Default-description)
  172. This package contains support for storing the key database as json files.
  173. endef
  174. define Package/libelektra-yamlcpp
  175. $(call Package/libelektra/Default)
  176. TITLE:=Elektra yaml plugin
  177. DEPENDS:=+libelektra-core +libyaml-cpp
  178. endef
  179. define Package/libelektra-yamlcpp/description
  180. $(call Package/libelektra/Default-description)
  181. This package contains support for storing the key database as yaml files.
  182. endef
  183. define Package/libelektra-python2
  184. $(call Package/libelektra/Default)
  185. TITLE:=Elektra python2 plugin
  186. DEPENDS:=+libelektra-core +python-light +libstdcpp
  187. endef
  188. define Package/libelektra-python2/description
  189. $(call Package/libelektra/Default-description)
  190. This package adds python2 support to elektra.
  191. endef
  192. define Package/libelektra-python3
  193. $(call Package/libelektra/Default)
  194. TITLE:=Elektra python3 plugin
  195. DEPENDS:=+libelektra-core +python3-light +libstdcpp
  196. endef
  197. define Package/libelektra-python3/description
  198. $(call Package/libelektra/Default-description)
  199. This package adds python3 support to elektra.
  200. endef
  201. define Package/libelektra-lua
  202. $(call Package/libelektra/Default)
  203. TITLE:=Elektra lua plugin
  204. DEPENDS:=+libelektra-core +lua +libstdcpp
  205. endef
  206. define Package/libelektra-lua/description
  207. $(call Package/libelektra/Default-description)
  208. This package adds lua support to elektra.
  209. endef
  210. define Package/libelektra-extra
  211. $(call Package/libelektra/Default)
  212. TITLE:=Additional elektra plugins
  213. DEPENDS:=+libelektra-core +libstdcpp
  214. endef
  215. define CONTENT_EXTRA_PLUGINS_TEXT
  216. blockresolver c constants counter desktop dini dpkg error
  217. fcrypt fstab logchange mozprefs passwd rename required
  218. simplespeclang timeofday tracer
  219. endef
  220. CONTENT_ELEKTRA_EXTRA:=$(strip $(CONTENT_EXTRA_PLUGINS_TEXT))
  221. define Package/libelektra-extra/description
  222. $(call Package/libelektra/Default-description)
  223. This package contains extra plugins that are only useful for debugging
  224. or as an example of what can be done. Also most experimental plugins
  225. are included in this package. Currently this includes:
  226. $(CONTENT_EXTRA_PLUGINS_TEXT)
  227. endef
  228. CMAKE_OPTIONS = \
  229. -DTARGET_PLUGIN_FOLDER="" \
  230. -DBUILD_FULL=OFF \
  231. -DBUILD_STATIC=OFF \
  232. -DBUILD_DOCUMENTATION=OFF \
  233. -DFORCE_IN_SOURCE_BUILD=ON \
  234. -DBUILD_TESTING=OFF \
  235. -DKDB_DEFAULT_RESOLVER=resolver_fm_pb_b \
  236. -DKDB_DEFAULT_STORAGE=ini \
  237. -DENABLE_OPTIMIZATIONS=OFF \
  238. -DPLUGINS="ALL;-multifile"
  239. CMAKE_HOST_OPTIONS = \
  240. -DCMAKE_SKIP_RPATH=FALSE \
  241. -DCMAKE_INSTALL_RPATH=$(STAGING_DIR_HOST)/lib/ \
  242. -DINSTALL_BUILD_TOOLS=ON \
  243. -DBUILD_STATIC=OFF \
  244. -DBUILD_DOCUMENTATION=OFF \
  245. -DINSTALL_SYSTEM_FILES=OFF \
  246. -DFORCE_IN_SOURCE_BUILD=ON \
  247. -DBUILD_TESTING=OFF \
  248. -DPLUGINS="ALL;-python2;-python;-ruby" \
  249. -DTOOLS="gen;kdb"
  250. define Package/libelektra-core/install
  251. $(INSTALL_DIR) $(1)/etc/kdb/
  252. $(INSTALL_DIR) $(1)/usr/lib/
  253. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra.so* $(1)/usr/lib/
  254. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-core.so* $(1)/usr/lib/
  255. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-ease.so* $(1)/usr/lib/
  256. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-invoke.so* $(1)/usr/lib/
  257. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-kdb.so* $(1)/usr/lib/
  258. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-meta.so* $(1)/usr/lib/
  259. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-plugin.so* $(1)/usr/lib/
  260. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-proposal.so* $(1)/usr/lib/
  261. #The next is only supported with glibc, so skip it.
  262. #$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektraintercept-* $(1)/usr/lib/
  263. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-resolver_fm_pb_b.so $(1)/usr/lib/
  264. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-utility.so* $(1)/usr/lib/
  265. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-ni.so $(1)/usr/lib/
  266. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-ini.so $(1)/usr/lib/
  267. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-sync.so $(1)/usr/lib/
  268. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-storage.so $(1)/usr/lib/
  269. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-resolver.so $(1)/usr/lib/
  270. endef
  271. define Package/elektra-kdb/install
  272. $(INSTALL_DIR) $(1)/usr/bin/
  273. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/kdb $(1)/usr/bin
  274. $(INSTALL_DIR) $(1)/usr/lib/elektra/
  275. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektratools* $(1)/usr/lib/
  276. $(CP) $(PKG_INSTALL_DIR)/usr/lib/elektra/tool_exec/ $(1)/usr/lib/elektra/
  277. endef
  278. define Package/libelektra-resolvers/install
  279. $(INSTALL_DIR) $(1)/usr/lib/
  280. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-resolver_* $(1)/usr/lib/
  281. rm -f $(1)/usr/lib/libelektra-resolver_fm_pb_b.so
  282. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-wresolver.so $(1)/usr/lib/
  283. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-noresolver.so $(1)/usr/lib/
  284. endef
  285. define Package/libelektra-plugins/install
  286. $(INSTALL_DIR) $(1)/usr/lib/
  287. $(CP) $(foreach plugin,$(CONTENT_ELEKTRA_PLUGINS),$(PKG_INSTALL_DIR)/usr/lib/libelektra-$(plugin).so) $(1)/usr/lib/
  288. endef
  289. define Package/libelektra-boost/install
  290. $(INSTALL_DIR) $(1)/usr/lib/
  291. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-tcl.so $(1)/usr/lib/
  292. endef
  293. define Package/libelektra-cpp/install
  294. $(INSTALL_DIR) $(1)/usr/lib/
  295. $(CP) $(foreach plugin,$(CONTENT_ELEKTRA_CPP),$(PKG_INSTALL_DIR)/usr/lib/libelektra-$(plugin).so) $(1)/usr/lib/
  296. endef
  297. define Package/libelektra-crypto/install
  298. $(INSTALL_DIR) $(1)/usr/lib/
  299. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-crypto_openssl.so $(1)/usr/lib/
  300. endef
  301. define Package/libelektra-curlget/install
  302. $(INSTALL_DIR) $(1)/usr/lib/
  303. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-curlget.so $(1)/usr/lib/
  304. endef
  305. define Package/libelektra-dbus/install
  306. $(INSTALL_DIR) $(1)/usr/lib/
  307. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-dbus.so $(1)/usr/lib/
  308. endef
  309. define Package/libelektra-xerces/install
  310. $(INSTALL_DIR) $(1)/usr/lib/
  311. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-xerces.so $(1)/usr/lib/
  312. endef
  313. define Package/libelektra-xml/install
  314. $(INSTALL_DIR) $(1)/usr/lib/
  315. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-xmltool.so $(1)/usr/lib/
  316. endef
  317. define Package/libelektra-yajl/install
  318. $(INSTALL_DIR) $(1)/usr/lib/
  319. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-yajl.so $(1)/usr/lib/
  320. endef
  321. define Package/libelektra-yamlcpp/install
  322. $(INSTALL_DIR) $(1)/usr/lib/
  323. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-yamlcpp.so $(1)/usr/lib/
  324. endef
  325. define Package/libelektra-python2/install
  326. $(INSTALL_DIR) $(1)/usr/lib/
  327. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-python2.so $(1)/usr/lib/
  328. endef
  329. define Package/libelektra-python3/install
  330. $(INSTALL_DIR) $(1)/usr/lib/
  331. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-python.so $(1)/usr/lib/
  332. endef
  333. define Package/libelektra-lua/install
  334. $(INSTALL_DIR) $(1)/usr/lib/
  335. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-lua.so $(1)/usr/lib/
  336. endef
  337. define Package/libelektra-extra/install
  338. $(INSTALL_DIR) $(1)/usr/lib/
  339. $(CP) $(foreach plugin,$(CONTENT_ELEKTRA_EXTRA),$(PKG_INSTALL_DIR)/usr/lib/libelektra-$(plugin).so) $(1)/usr/lib/
  340. endef
  341. define Build/InstallDev
  342. $(INSTALL_DIR) $(1)/usr/include/elektra/
  343. $(CP) $(PKG_INSTALL_DIR)/usr/include/elektra/* $(1)/usr/include/elektra/
  344. $(INSTALL_DIR) $(1)/usr/lib/
  345. $(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(1)/usr/lib/
  346. endef
  347. $(eval $(call HostBuild))
  348. $(eval $(call BuildPackage,libelektra-core))
  349. $(eval $(call BuildPackage,elektra-kdb))
  350. $(eval $(call BuildPackage,libelektra-resolvers))
  351. $(eval $(call BuildPackage,libelektra-plugins))
  352. $(eval $(call BuildPackage,libelektra-boost))
  353. $(eval $(call BuildPackage,libelektra-cpp))
  354. $(eval $(call BuildPackage,libelektra-curlget))
  355. $(eval $(call BuildPackage,libelektra-crypto))
  356. $(eval $(call BuildPackage,libelektra-dbus))
  357. $(eval $(call BuildPackage,libelektra-xerces))
  358. $(eval $(call BuildPackage,libelektra-yamlcpp))
  359. $(eval $(call BuildPackage,libelektra-xml))
  360. $(eval $(call BuildPackage,libelektra-yajl))
  361. $(eval $(call BuildPackage,libelektra-python2))
  362. $(eval $(call BuildPackage,libelektra-python3))
  363. $(eval $(call BuildPackage,libelektra-lua))
  364. $(eval $(call BuildPackage,libelektra-extra))