aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2006-10-10 15:30:50 +0000
committerFelix Fietkau <nbd@openwrt.org>2006-10-10 15:30:50 +0000
commitaf7a470f9c3f0c8546a90ae24a8494d3ee94efd6 (patch)
treec2adf76904f7a6a6449131129eac74ec00780dd1
parentc2527c7204b8fdd4638af13d1899013ab262eb28 (diff)
downloadupstream-af7a470f9c3f0c8546a90ae24a8494d3ee94efd6.tar.gz
upstream-af7a470f9c3f0c8546a90ae24a8494d3ee94efd6.tar.bz2
upstream-af7a470f9c3f0c8546a90ae24a8494d3ee94efd6.zip
add support for a common shell include file, which is evaluated for every make shell call, simplify variable passing to the shell with shvar and shexport templates, use Package/<pkgname>/config for adding config.in data
SVN-Revision: 5014
-rw-r--r--openwrt/include/package.mk38
-rw-r--r--openwrt/include/shell.sh15
-rw-r--r--openwrt/package/busybox/Makefile10
-rw-r--r--openwrt/rules.mk3
4 files changed, 45 insertions, 21 deletions
diff --git a/openwrt/include/package.mk b/openwrt/include/package.mk
index e931924134..181ea32b6e 100644
--- a/openwrt/include/package.mk
+++ b/openwrt/include/package.mk
@@ -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
index 0000000000..6ee0cf6030
--- /dev/null
+++ b/openwrt/include/shell.sh
@@ -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" ]
+}
diff --git a/openwrt/package/busybox/Makefile b/openwrt/package/busybox/Makefile
index c87701ad1e..f56d2462d7 100644
--- a/openwrt/package/busybox/Makefile
+++ b/openwrt/package/busybox/Makefile
@@ -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
diff --git a/openwrt/rules.mk b/openwrt/rules.mk
index 84163ba225..8e5294edb3 100644
--- a/openwrt/rules.mk
+++ b/openwrt/rules.mk
@@ -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)))