Skip to content
Snippets Groups Projects
gluon.mk 3.04 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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
    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)))
    
    
    
    [ -z "$$IPKG_INSTROOT" ] || "${TOPDIR}/staging_dir/hostpkg/bin/lua" "${TOPDIR}/../scripts/check_site.lua" <<'END__GLUON__CHECK__SITE'
    $(call shell-verbatim,cat '$(1)')
    
    Matthias Schiffer's avatar
    Matthias Schiffer committed
    
    
    GLUON_SUPPORTED_LANGS := de fr
    
    GLUON_LANG_de := German
    GLUON_LANG_fr := French
    
    Matthias Schiffer's avatar
    Matthias Schiffer committed
    
    
    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)))
    
    Matthias Schiffer's avatar
    Matthias Schiffer committed
    
    
    ifneq ($(wildcard ./i18n/.),)
      PKG_CONFIG_DEPENDS += $(GLUON_I18N_CONFIG)
    endif
    
    
    Matthias Schiffer's avatar
    Matthias Schiffer committed
    
    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; \
    
    Matthias Schiffer's avatar
    Matthias Schiffer committed
    		fi; \
    	done
    endef
    
    define GluonInstallI18N
    
    	$$(INSTALL_DIR) $(1)/lib/gluon/web/i18n
    
    Matthias Schiffer's avatar
    Matthias Schiffer committed
    	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; \
    
    Matthias Schiffer's avatar
    Matthias Schiffer committed
    		fi; \
    	done
    endef
    
    
    define GluonSrcDiet
    	rm -rf $(2)
    	$(CP) $(1) $(2)
    	$(FIND) $(2) -type f | while read src; do \
    
    		if LuaSrcDiet --noopt-binequiv -o "$$$$src.o" "$$$$src"; then \
    			chmod $$$$(stat -c%a "$$$$src") "$$$$src.o"; \
    			mv "$$$$src.o" "$$$$src"; \
    		fi; \
    
    	$(if $(wildcard ./src/Makefile ./src/CMakeLists.txt),
    
    		$(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)/usr/lib/respondd
    		$(CP) $(PKG_BUILD_DIR)/respondd.so $(1)/usr/lib/respondd/$(PKG_NAME).so
    
    	)
    	$(if $(wildcard ./i18n/.),
    		$(GluonInstallI18N)
    	)
    endef
    
    Build/Compile=$(call Gluon/Build/Compile)
    
    define BuildPackageGluon
    
      define Package/$(1) :=
        SECTION:=gluon
        CATEGORY:=Gluon
        $$(Package/$(1))
      endef
    
    
      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