This patch adds support for target DEFAULT_OPTIONS and profile OPTIONS
variables. Those are simmilar to existing DEFAULT_PACKAGES and PACKAGES
but one can use them to select other options by default in menuconfig.

Signed-off-by: Luka Perkov <[email protected]>
---
 include/target.mk   |  4 ++++
 scripts/metadata.pl | 12 ++++++++++--
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/include/target.mk b/include/target.mk
index e36cdd6..20179d1 100644
--- a/include/target.mk
+++ b/include/target.mk
@@ -11,6 +11,7 @@ __target_inc=1
 # default device type
 DEVICE_TYPE?=router
 
+DEFAULT_OPTIONS:=
 # Default packages - the really basic set
 DEFAULT_PACKAGES:=base-files libc libgcc busybox dropbear mtd uci opkg netifd 
fstools
 # For router targets
@@ -56,6 +57,7 @@ extra_packages = $(if $(filter wpad-mini wpad 
nas,$(1)),iwinfo)
 
 define Profile/Default
   NAME:=
+  OPTIONS:=
   PACKAGES:=
 endef
 
@@ -68,6 +70,7 @@ define Profile
   DUMPINFO += \
        echo "Target-Profile: $(1)"; \
        echo "Target-Profile-Name: $(NAME)"; \
+       echo "Target-Profile-Options: $(OPTIONS)"; \
        echo "Target-Profile-Packages: $(PACKAGES) $(call 
extra_packages,$(DEFAULT_PACKAGES) $(PACKAGES))"; \
        if [ -f ./config/profile-$(1) ]; then \
                echo "Target-Profile-Kconfig: yes"; \
@@ -276,6 +279,7 @@ define BuildTargets/DumpCurrent
         echo 'Target-Description:'; \
         $(SH_FUNC) getvar $(call shvar,Target/Description); \
         echo '@@'; \
+        echo 'Default-Options: $(DEFAULT_OPTIONS)'; \
         echo 'Default-Packages: $(DEFAULT_PACKAGES) $(call 
extra_packages,$(DEFAULT_PACKAGES))'; \
         $(DUMPINFO)
        $(if $(SUBTARGET),,@$(foreach SUBTARGET,$(SUBTARGETS),$(SUBMAKE) -s 
DUMP=1 SUBTARGET=$(SUBTARGET); ))
diff --git a/scripts/metadata.pl b/scripts/metadata.pl
index 79f930c..d7d168d 100755
--- a/scripts/metadata.pl
+++ b/scripts/metadata.pl
@@ -58,16 +58,19 @@ sub parse_target_metadata() {
                /^Linux-Release:\s*(.+)\s*$/ and $target->{release} = $1;
                /^Linux-Kernel-Arch:\s*(.+)\s*$/ and $target->{karch} = $1;
                /^Default-Subtarget:\s*(.+)\s*$/ and $target->{def_subtarget} = 
$1;
+               /^Default-Options:\s*(.+)\s*$/ and $target->{options} = [ 
split(/\s+/, $1) ];
                /^Default-Packages:\s*(.+)\s*$/ and $target->{packages} = [ 
split(/\s+/, $1) ];
                /^Target-Profile:\s*(.+)\s*$/ and do {
                        $profile = {
                                id => $1,
                                name => $1,
+                               options => [],
                                packages => []
                        };
                        push @{$target->{profiles}}, $profile;
                };
                /^Target-Profile-Name:\s*(.+)\s*$/ and $profile->{name} = $1;
+               /^Target-Profile-Options:\s*(.*)\s*$/ and $profile->{options} = 
[ split(/\s+/, $1) ];
                /^Target-Profile-Packages:\s*(.*)\s*$/ and $profile->{packages} 
= [ split(/\s+/, $1) ];
                /^Target-Profile-Description:\s*(.*)\s*/ and $profile->{desc} = 
get_multiline(*FILE);
                /^Target-Profile-Config:/ and $profile->{config} = 
get_multiline(*FILE, "\t");
@@ -83,6 +86,7 @@ sub parse_target_metadata() {
                        {
                                id => 'Default',
                                name => 'Default',
+                               options => [],
                                packages => []
                        }
                ];
@@ -138,7 +142,7 @@ sub gen_kconfig_overrides() {
        }
 }
 
-sub merge_package_lists($$) {
+sub merge_lists($$) {
        my $list1 = shift;
        my $list2 = shift;
        my @l = ();
@@ -331,7 +335,11 @@ config TARGET_$target->{conf}_$profile->{id}
 $profile->{config}
 EOF
                        $profile->{kconfig} and print "\tselect 
PROFILE_KCONFIG\n";
-                       my @pkglist = merge_package_lists($target->{packages}, 
$profile->{packages});
+                       my @optlist = merge_lists($target->{options}, 
$profile->{options});
+                       foreach my $opt (@optlist) {
+                               print "\tselect $opt\n";
+                       }
+                       my @pkglist = merge_lists($target->{packages}, 
$profile->{packages});
                        foreach my $pkg (@pkglist) {
                                print "\tselect DEFAULT_$pkg\n";
                                $defaults{$pkg} = 1;
-- 
2.0.3
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to