add support for a common shell include file, which is evaluated for every make shell...
authorFelix Fietkau <nbd@openwrt.org>
Tue, 10 Oct 2006 15:30:50 +0000 (15:30 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Tue, 10 Oct 2006 15:30:50 +0000 (15:30 +0000)
SVN-Revision: 5014

openwrt/include/package.mk
openwrt/include/shell.sh [new file with mode: 0644]
openwrt/package/busybox/Makefile
openwrt/rules.mk

index e9319241344d68cd9b5c843efb41d004274310db..181ea32b6e91a25b99f5fce26ff013b403823b3d 100644 (file)
@@ -12,6 +12,15 @@ endif
 
 include $(INCLUDE_DIR)/prereq.mk
 
+define shvar
+V_$(subst .,_,$(subst -,_,$(subst /,_,$(1))))
+endef
+
+define shexport
+$(call shvar,$(1))=$$(call $(1))
+export $(call shvar,$(1))
+endef
+
 define Build/DefaultTargets
   ifeq ($(DUMP),)
     ifeq ($(CONFIG_AUTOREBUILD),y)
@@ -98,9 +107,8 @@ define BuildDescription
 endef
 
 define BuildIPKGVariable
-  pkg_$(subst .,_,$(subst -,_,$(1)))_$(2) = $$(Package/$(1)/$(2))
-  export pkg_$(subst .,_,$(subst -,_,$(1))_$(2))
-  $(1)_COMMANDS += if [ -n "$$$$$$$$pkg_$(subst .,_,$(subst -,_,$(1)))_$(2)" ]; then echo "$$$$$$$$pkg_$(subst .,_,$(subst -,_,$(1)))_$(2)" > $(2); fi;
+  $(call shexport,Package/$(1)/$(2))
+  $(1)_COMMANDS += var2file "$(call shvar,Package/$(1)/$(2))" $(2);
 endef
 
 define BuildPackage
@@ -168,22 +176,22 @@ define BuildPackage
        echo "Build-Depends: $(PKG_BUILDDEP)"; \
        echo "Category: $(CATEGORY)"; \
        echo "Title: $(TITLE)"; \
-       echo "Description: $(DESCRIPTION)" | sed -e 's,\\,\n,g';
+       echo "Description: $(DESCRIPTION)" | sed -e 's,\\,\n,g'; \
        
     ifneq ($(URL),)
       DUMPINFO += \
-       echo; \
-       echo "$(URL)";
-    endif
-
-    DUMPINFO += \
-       echo "@@";
-
-    ifneq ($(CONFIG),)
-      DUMPINFO += \
-       echo "Config: $(CONFIG)" | sed -e 's,\\,\n,g'; \
-       echo "@@";
+               echo; \
+               echo "$(URL)";
     endif
+       
+       DUMPINFO += \
+               echo "@@";
+
+       $(call shexport,Package/$(1)/config)
+       DUMPINFO += \
+               if isset $(call shvar,Package/$(1)/config); then echo "Config: "; getvar $(call shvar,Package/$(1)/config); fi; \
+               echo "@@";
+  
   endif
 
   $(eval $(call BuildIPKGVariable,$(1),conffiles))
diff --git a/openwrt/include/shell.sh b/openwrt/include/shell.sh
new file mode 100644 (file)
index 0000000..6ee0cf6
--- /dev/null
@@ -0,0 +1,15 @@
+getvar() {
+       eval "echo \"\${$1}\""
+}
+
+var2file() {
+       local var
+       eval "var=\"\${$1}\""
+       if [ -n "$var" ]; then echo "$var" > "$2"; fi
+}
+
+isset() {
+       local var
+       eval "var=\"\${$1}\""
+       [ -n "$var" ]
+}
index c87701ad1e5a24f94801c8b1d1f82571539e5e64..f56d2462d74658b92bfc5f0f7288e08b6dcb470c 100644 (file)
@@ -31,10 +31,12 @@ define Package/busybox
        It slices, it dices, it makes Julian Fries.
   URL:=http://busybox.net/
   MENU:=1
-  CONFIG:=\\\
-       menu "Configuration" \\\
-               depends on PACKAGE_busybox \\\
-               source "$(SOURCE)/config/Config.in" \\\
+endef
+
+define Package/busybox/config
+       menu "Configuration"
+               depends on PACKAGE_busybox
+               source "$(SOURCE)/config/Config.in"
        endmenu
 endef
 
index 84163ba225218c6d7fd621a27db9de3da2731295..8e5294edb3ad69ccbd3b218922a0449c368b8995 100644 (file)
@@ -8,8 +8,7 @@
 -include $(TOPDIR)/.config
 include $(TOPDIR)/include/verbose.mk
 
-export SHELL=/bin/bash
-
+export SHELL=/usr/bin/env bash -c '. $(TOPDIR)/include/shell.sh; eval "$$2"'  --
 ARCH:=$(strip $(subst ",, $(CONFIG_ARCH)))
 TARGET_OPTIMIZATION:=$(strip $(subst ",, $(CONFIG_TARGET_OPTIMIZATION)))
 WGET:=$(strip $(subst ",, $(CONFIG_WGET)))