gluon/package/gluon.mk

117 lines
3.0 KiB
Makefile
Raw Normal View History

GLUON_MK := $(abspath $(lastword $(MAKEFILE_LIST)))
PKG_FILE_DEPENDS += $(GLUON_MK)
# Dependencies for LuaSrcDiet
PKG_BUILD_DEPENDS += luci-base/host
ifneq ($(wildcard ./src/respondd.c),)
PKG_BUILD_DEPENDS += respondd
GLUON_PKG_MAKE ?= 1
endif
include $(INCLUDE_DIR)/package.mk
# Annoyingly, make's shell function replaces all newlines with spaces, so we have to do some escaping work. Yuck.
shell-escape = $(shell $(1) | sed -ne '1h; 1!H; $$ {g; s/@/@1/g; s/\n/@2/g; p}')
shell-unescape = $(subst @1,@,$(subst @2,$(newline),$(1)))
shell-verbatim = $(call shell-unescape,$(call shell-escape,$(1)))
define GluonCheckSite
[ -z "$$IPKG_INSTROOT" ] || "${TOPDIR}/staging_dir/hostpkg/bin/lua" "${TOPDIR}/../scripts/check_site.lua" <<'END__GLUON__CHECK__SITE'
$(call shell-verbatim,cat '$(1)')
END__GLUON__CHECK__SITE
endef
2015-03-18 17:14:21 +00:00
GLUON_SUPPORTED_LANGS := de fr
GLUON_LANG_de := German
GLUON_LANG_fr := French
2015-03-18 17:14:21 +00:00
GLUON_I18N_CONFIG := $(foreach lang,$(GLUON_SUPPORTED_LANGS),CONFIG_GLUON_WEB_LANG_$(lang))
GLUON_ENABLED_LANGS := en $(foreach lang,$(GLUON_SUPPORTED_LANGS),$(if $(CONFIG_GLUON_WEB_LANG_$(lang)),$(lang)))
2015-03-18 17:14:21 +00:00
ifneq ($(wildcard ./i18n/.),)
PKG_CONFIG_DEPENDS += $(GLUON_I18N_CONFIG)
endif
2015-03-18 17:14:21 +00:00
define GluonBuildI18N
mkdir -p $$(PKG_BUILD_DIR)/i18n
for lang in $$(GLUON_ENABLED_LANGS); do \
if [ -e $(1)/$$$$lang.po ]; then \
rm -f $$(PKG_BUILD_DIR)/i18n/$$$$lang.lmo; \
po2lmo $(1)/$$$$lang.po $$(PKG_BUILD_DIR)/i18n/$$$$lang.lmo; \
2015-03-18 17:14:21 +00:00
fi; \
done
endef
define GluonInstallI18N
$$(INSTALL_DIR) $(1)/lib/gluon/web/i18n
2015-03-18 17:14:21 +00:00
for lang in $$(GLUON_ENABLED_LANGS); do \
if [ -e $$(PKG_BUILD_DIR)/i18n/$$$$lang.lmo ]; then \
$$(INSTALL_DATA) $$(PKG_BUILD_DIR)/i18n/$$$$lang.lmo $(1)/lib/gluon/web/i18n/$(PKG_NAME).$$$$lang.lmo; \
2015-03-18 17:14:21 +00:00
fi; \
done
endef
define GluonSrcDiet
rm -rf $(2)
$(CP) $(1) $(2)
$(FIND) $(2) -type f | while read src; do \
2017-01-18 16:21:43 +00:00
if LuaSrcDiet --noopt-binequiv -o "$$$$src.o" "$$$$src"; then \
chmod $$$$(stat -c%a "$$$$src") "$$$$src.o"; \
mv "$$$$src.o" "$$$$src"; \
fi; \
done
endef
GLUON_PKG_MAKE ?= 0
define Gluon/Build/Compile
$(if $(findstring $(GLUON_PKG_MAKE),1),
$(Build/Compile/Default)
)
$(if $(wildcard ./luasrc/.),
$(call GluonSrcDiet,luasrc,$(PKG_BUILD_DIR)/luadest/)
)
$(if $(wildcard ./i18n/.),
$(call GluonBuildI18N,i18n)
)
endef
define Gluon/Build/Install
$(if $(findstring $(PKG_INSTALL),1),
$(CP) $(PKG_INSTALL_DIR)/. $(1)/
)
$(if $(wildcard ./files/.),
$(CP) ./files/. $(1)/
)
$(if $(wildcard ./luasrc/.),
$(CP) $(PKG_BUILD_DIR)/luadest/. $(1)/
)
$(if $(wildcard ./src/respondd.c),
$(INSTALL_DIR) $(1)/lib/gluon/respondd
$(CP) $(PKG_BUILD_DIR)/respondd.so $(1)/lib/gluon/respondd/$(PKG_NAME).so
)
$(if $(wildcard ./i18n/.),
$(GluonInstallI18N)
)
endef
Build/Compile=$(call Gluon/Build/Compile)
define BuildPackageGluon
Package/$(1)/install ?= $$(Gluon/Build/Install)
ifneq ($(wildcard check_site.lua),)
define Package/$(1)/postinst
#!/bin/sh
$$(call GluonCheckSite,check_site.lua)
endef
endif
$$(eval $$(call BuildPackage,$(1)))
endef