From 97b61354626866dd2483c2a283ab9b2bc087ac74 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Sat, 29 Sep 2007 01:21:56 +0000
Subject: add a packaging method that installs files into a subdirectory of
 bin/ instead of an ipkg

SVN-Revision: 9060
---
 include/package-bin.mk      | 31 +++++++++++++++++++++++++++++++
 include/package-dumpinfo.mk |  1 +
 include/package.mk          |  1 +
 scripts/metadata.pl         |  2 +-
 scripts/metadata.pm         |  8 ++++++++
 5 files changed, 42 insertions(+), 1 deletion(-)
 create mode 100644 include/package-bin.mk

diff --git a/include/package-bin.mk b/include/package-bin.mk
new file mode 100644
index 0000000000..6ee7aed621
--- /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 bc075e1bc0..e29e113241 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 bf82c60458..9f45a441aa 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 f3d6e9df2c..aa5df6fb9d 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 f90446298a..ff39e346ea 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 {
-- 
cgit v1.2.3