summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/package-bin.mk31
-rw-r--r--include/package-dumpinfo.mk1
-rw-r--r--include/package.mk1
-rwxr-xr-xscripts/metadata.pl2
-rw-r--r--scripts/metadata.pm8
5 files changed, 42 insertions, 1 deletions
diff --git a/include/package-bin.mk b/include/package-bin.mk
new file mode 100644
index 000000000..6ee7aed62
--- /dev/null
+++ b/include/package-bin.mk
@@ -0,0 +1,31 @@
+#
+# Copyright (C) 2007 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+ifeq ($(DUMP),)
+ define BuildTarget/bin
+ ifdef Package/$(1)/install
+ ifneq ($(CONFIG_PACKAGE_$(1))$(SDK)$(DEVELOPER),)
+ compile: install-bin-$(1)
+ else
+ compile: $(1)-disabled
+ $(1)-disabled:
+ @echo "WARNING: skipping $(1) -- package not selected"
+ endif
+ endif
+
+ install-bin-$(1): $(STAMP_BUILT)
+ rm -rf $(BIN_DIR)/$(1)
+ $(INSTALL_DIR) $(BIN_DIR)/$(1)
+ $(call Package/$(1)/install,$(BIN_DIR)/$(1))
+
+ clean-$(1):
+ rm -rf $(BIN_DIR)/$(1)
+
+ clean: clean-$(1)
+ .PHONY: install-bin-$(1)
+ endef
+endif
diff --git a/include/package-dumpinfo.mk b/include/package-dumpinfo.mk
index bc075e1bc..e29e11324 100644
--- a/include/package-dumpinfo.mk
+++ b/include/package-dumpinfo.mk
@@ -28,6 +28,7 @@ ifneq ($(DUMP),)
echo "Category: $(CATEGORY)"; \
echo "Title: $(TITLE)"; \
echo "Maintainer: $(MAINTAINER)"; \
+ echo "Type: $(if $(Package/$(1)/targets),$(Package/$(1)/targets),$(if $(PKG_TARGETS),$(PKG_TARGETS),ipkg))"; \
$(if $(KCONFIG),echo "Kernel-Config: $(KCONFIG)";) \
echo -n "Description: "; \
getvar $(call shvar,Package/$(1)/description); \
diff --git a/include/package.mk b/include/package.mk
index bf82c6045..9f45a441a 100644
--- a/include/package.mk
+++ b/include/package.mk
@@ -25,6 +25,7 @@ include $(INCLUDE_DIR)/quilt.mk
include $(INCLUDE_DIR)/package-defaults.mk
include $(INCLUDE_DIR)/package-dumpinfo.mk
include $(INCLUDE_DIR)/package-ipkg.mk
+include $(INCLUDE_DIR)/package-bin.mk
override MAKEFLAGS=
export CONFIG_SITE:=$(INCLUDE_DIR)/site/$(REAL_GNU_TARGET_NAME)
diff --git a/scripts/metadata.pl b/scripts/metadata.pl
index f3d6e9df2..aa5df6fb9 100755
--- a/scripts/metadata.pl
+++ b/scripts/metadata.pl
@@ -361,7 +361,7 @@ sub print_package_config_category($) {
print "\t";
$pkg->{menu} and print "menu";
print "config PACKAGE_".$pkg->{name}."\n";
- print "\t\ttristate \"$title\"\n";
+ print "\t\t".($pkg->{tristate} ? 'tristate' : 'bool')." \"$title\"\n";
print "\t\tdefault y if DEFAULT_".$pkg->{name}."\n";
foreach my $default (split /\s*,\s*/, $pkg->{default}) {
print "\t\tdefault $default\n";
diff --git a/scripts/metadata.pm b/scripts/metadata.pm
index f90446298..ff39e346e 100644
--- a/scripts/metadata.pm
+++ b/scripts/metadata.pm
@@ -63,6 +63,7 @@ sub parse_package_metadata($) {
$pkg->{depends} = [];
$pkg->{builddepends} = [];
$pkg->{subdir} = $subdir;
+ $pkg->{tristate} = 1;
$package{$1} = $pkg;
push @{$srcpackage{$src}}, $pkg;
};
@@ -88,6 +89,13 @@ sub parse_package_metadata($) {
push @{$category{$1}->{$src}}, $pkg;
};
/^Description: \s*(.*)\s*$/ and $pkg->{description} = "\t\t $1\n". get_multiline(*FILE, "\t\t ");
+ /^Type: \s*(.+)\s*$/ and do {
+ $pkg->{type} = [ split /\s+/, $1 ];
+ undef $pkg->{tristate};
+ foreach my $type (@{$pkg->{type}}) {
+ $type =~ /ipkg/ and $pkg->{tristate} = 1;
+ }
+ };
/^Config: \s*(.*)\s*$/ and $pkg->{config} = "$1\n".get_multiline(*FILE);
/^Prereq-Check:/ and $pkg->{prereq} = 1;
/^Preconfig:\s*(.+)\s*$/ and do {