123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- #
- # Copyright (C) 2020-2021 Jo-Philipp Wich <jo@mein.io>
- #
- # This is free software, licensed under the GNU General Public License v2.
- # See /LICENSE for more information.
- #
- include $(TOPDIR)/rules.mk
- PKG_NAME:=ucode
- PKG_RELEASE:=1
- PKG_SOURCE_PROTO:=git
- PKG_SOURCE_URL=https://github.com/jow-/ucode.git
- PKG_SOURCE_DATE:=2023-11-07
- PKG_SOURCE_VERSION:=a6e75e02528e36f3610a7f0073453018336def2e
- PKG_MIRROR_HASH:=e1a0f98ba865ed5911d5db3bfca55a2f1b825992bf5f7c7e324928d9412d7ae2
- PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
- PKG_LICENSE:=ISC
- PKG_ABI_VERSION:=20230711
- HOST_BUILD_DEPENDS:=libjson-c/host
- include $(INCLUDE_DIR)/package.mk
- include $(INCLUDE_DIR)/host-build.mk
- include $(INCLUDE_DIR)/cmake.mk
- CMAKE_OPTIONS += -DSOVERSION=$(PKG_ABI_VERSION)
- ifeq ($(HOST_OS),Darwin)
- CMAKE_HOST_OPTIONS += \
- -DCMAKE_SKIP_RPATH=FALSE \
- -DCMAKE_MACOSX_RPATH=1 \
- -DCMAKE_INSTALL_RPATH="${STAGING_DIR_HOSTPKG}/lib"
- else
- CMAKE_HOST_OPTIONS += \
- -DSOVERSION=$(PKG_ABI_VERSION)
- endif
- CMAKE_HOST_OPTIONS += \
- -DFS_SUPPORT=ON \
- -DMATH_SUPPORT=ON \
- -DNL80211_SUPPORT=OFF \
- -DRESOLV_SUPPORT=OFF \
- -DRTNL_SUPPORT=OFF \
- -DSTRUCT_SUPPORT=ON \
- -DUBUS_SUPPORT=OFF \
- -DUCI_SUPPORT=OFF \
- -DULOOP_SUPPORT=OFF \
- -DDEBUG_SUPPORT=ON \
- -DLOG_SUPPORT=OFF
- define Package/ucode/default
- SUBMENU:=ucode
- SECTION:=lang
- CATEGORY:=Languages
- TITLE:=Tiny scripting and templating language
- endef
- define Package/ucode
- $(Package/ucode/default)
- DEPENDS:=+libucode
- endef
- define Package/ucode/description
- ucode is a tiny script interpreter featuring an ECMAScript oriented
- script language and Jinja-inspired templating.
- endef
- define Package/libucode
- $(Package/ucode/default)
- SUBMENU:=
- SECTION:=libs
- CATEGORY:=Libraries
- TITLE+= (library)
- ABI_VERSION:=$(PKG_ABI_VERSION)
- DEPENDS:=+libjson-c
- endef
- define Package/libucode/description
- The libucode package provides the shared runtime library for the ucode interpreter.
- endef
- # 1: name
- # 2: cmake symbol
- # 3: depends
- # 4: description
- define UcodeModule
- UCODE_MODULES += ucode-mod-$(strip $(1))
- CMAKE_OPTIONS += -D$(strip $(2))=$(if $(CONFIG_PACKAGE_ucode-mod-$(strip $(1))),ON,OFF)
- PKG_CONFIG_DEPENDS += CONFIG_PACKAGE_ucode-mod-$(strip $(1))
- define Package/ucode-mod-$(strip $(1))
- $(Package/ucode/default)
- TITLE+= ($(strip $(1)) module)
- DEPENDS:=+ucode $(3)
- endef
- define Package/ucode-mod-$(strip $(1))/description
- $(strip $(4))
- endef
- define Package/ucode-mod-$(strip $(1))/install
- $(INSTALL_DIR) $$(1)/usr/lib/ucode
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/ucode/$(strip $(1)).so $$(1)/usr/lib/ucode/
- endef
- endef
- define Build/InstallDev
- $(INSTALL_DIR) $(1)/usr/lib $(1)/usr/include/ucode
- $(CP) $(PKG_INSTALL_DIR)/usr/include/ucode/*.h $(1)/usr/include/ucode/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libucode.so* $(1)/usr/lib/
- endef
- define Package/ucode/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/u* $(1)/usr/bin/
- endef
- define Package/libucode/install
- $(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libucode.so.* $(1)/usr/lib/
- endef
- $(eval $(call UcodeModule, \
- debug, DEBUG_SUPPORT, +libubox +libucode, \
- The debug plugin module provides runtime debugging and introspection facilities.))
- $(eval $(call UcodeModule, \
- fs, FS_SUPPORT, , \
- The filesystem plugin module allows interaction with the local file system.))
- $(eval $(call UcodeModule, \
- log, LOG_SUPPORT, +libubox, \
- The log plugin module provides access to the syslog and libubox ulog APIs.))
- $(eval $(call UcodeModule, \
- math, MATH_SUPPORT, , \
- The math plugin provides access to various <math.h> procedures.))
- $(eval $(call UcodeModule, \
- nl80211, NL80211_SUPPORT, +libnl-tiny +libubox, \
- The nl80211 plugin provides access to the Linux wireless 802.11 netlink API.))
- $(eval $(call UcodeModule, \
- resolv, RESOLV_SUPPORT, , \
- The resolv plugin implements simple DNS resolving.))
- $(eval $(call UcodeModule, \
- rtnl, RTNL_SUPPORT, +libnl-tiny +libubox, \
- The rtnl plugin provides access to the Linux routing netlink API.))
- $(eval $(call UcodeModule, \
- struct, STRUCT_SUPPORT, , \
- The struct plugin implements Python 3 compatible struct.pack/unpack functionality.))
- $(eval $(call UcodeModule, \
- ubus, UBUS_SUPPORT, +libubus +libblobmsg-json, \
- The ubus module allows ucode template scripts to enumerate and invoke ubus procedures.))
- $(eval $(call UcodeModule, \
- uci, UCI_SUPPORT, +libuci, \
- The uci module allows templates to read and modify uci configuration.))
- $(eval $(call UcodeModule, \
- uloop, ULOOP_SUPPORT, +libubox, \
- The uloop module allows ucode scripts to interact with libreCMC uloop event loop implementation.))
- $(eval $(call BuildPackage,libucode))
- $(eval $(call BuildPackage,ucode))
- $(foreach mod,$(UCODE_MODULES), \
- $(eval $(call BuildPackage,$(mod))))
- $(eval $(call HostBuild))
|