From b0e7c7ba79625e2331c4898cc1c2b5f39ea7a651 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Wed, 1 Oct 2008 21:26:19 +0000 Subject: [PATCH] implement conditional dependencies for menuconfig and build deps SVN-Revision: 12820 --- package/hostapd/Makefile | 4 ++-- scripts/feeds | 1 + scripts/metadata.pl | 25 +++++++++++++++++++++++-- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/package/hostapd/Makefile b/package/hostapd/Makefile index e9d8a5c2cc..8f8af96b1e 100644 --- a/package/hostapd/Makefile +++ b/package/hostapd/Makefile @@ -17,7 +17,7 @@ PKG_SOURCE_URL:=http://hostap.epitest.fi/releases/ PKG_SOURCE_SUBDIR:=hostapd-$(PKG_VERSION) PKG_SOURCE_VERSION:=$(PKG_REV) PKG_MD5SUM:=62876f2179f316db0621cc33adf04c19 -PKG_BUILD_DEPENDS:=madwifi mac80211 libnl openssl +PKG_BUILD_DEPENDS:=PACKAGE_kmod-madwifi:madwifi PACKAGE_kmod-mac80211:mac80211 PACKAGE_kmod-mac80211:libnl include $(INCLUDE_DIR)/package.mk STAMP_CONFIGURED:=$(STAMP_CONFIGURED)_$(call confvar,CONFIG_PACKAGE_kmod-mac80211 CONFIG_PACKAGE_kmod-madwifi CONFIG_PACKAGE_hostapd CONFIG_PACKAGE_hostapd-mini) @@ -33,7 +33,7 @@ endef define Package/hostapd $(call Package/hostapd/Default) TITLE+= (full) - DEPENDS+= +libopenssl + DEPENDS+= +PACKAGE_hostapd:libopenssl endef #define Package/hostapd/conffiles diff --git a/scripts/feeds b/scripts/feeds index ab765b1ea3..8ec0799f70 100755 --- a/scripts/feeds +++ b/scripts/feeds @@ -290,6 +290,7 @@ sub install_package { foreach my $vpkg (@{$srcpackage{$src}}, $pkg) { foreach my $dep (@{$vpkg->{depends}}, @{$vpkg->{builddepends}}) { next if $dep =~ /@/; + next if $dep =~ /:/; $dep =~ s/^\+//; install_package($feed, $dep) == 0 or $ret = 1; } diff --git a/scripts/metadata.pl b/scripts/metadata.pl index bee3020121..e05cc92c42 100755 --- a/scripts/metadata.pl +++ b/scripts/metadata.pl @@ -223,6 +223,7 @@ EOF $flags = $1; $name = $2; + next if $name =~ /:/; $flags =~ /-/ and $mode = "deselect"; $flags =~ /\+/ and $mode = "select"; $flags =~ /@/ and $confstr .= "\t$mode $name\n"; @@ -374,8 +375,13 @@ sub mconf_depends($$) { my $m = "depends"; $depend =~ s/^([@\+]+)//; my $flags = $1; + my $condition; my $vdep; + if ($depend =~ /^(.+):(.+)$/) { + $condition = $1; + $depend = $2; + } if ($vdep = $package{$depend}->{vdepends}) { $depend = join("||", map { "PACKAGE_".$_ } @$vdep); } else { @@ -390,6 +396,7 @@ sub mconf_depends($$) { next if $only_dep; }; $flags =~ /@/ or $depend = "PACKAGE_$depend"; + $condition and $depend = "$depend if $condition"; } $dep->{$depend} =~ /select/ or $dep->{$depend} = $m; } @@ -535,6 +542,13 @@ sub gen_package_mk() { my $depline = ""; foreach my $deps (@srcdeps) { my $idx; + my $condition; + + if ($deps =~ /^(.+):(.+)/) { + $condition = $1; + $deps = $2; + } + my $pkg_dep = $package{$deps}; my @deps; @@ -556,13 +570,20 @@ sub gen_package_mk() { next if $pkg->{src} eq $pkg_dep->{src}; next if $dep{$pkg->{src}."->".$idx}; next if $dep{$pkg->{src}."->($dep)".$idx}; + my $depstr; + if ($pkg_dep->{vdepends}) { - $depline .= " \$(if \$(CONFIG_PACKAGE_$dep),\$(curdir)/$idx/compile)"; + $depstr = "\$(if \$(CONFIG_PACKAGE_$dep),\$(curdir)/$idx/compile)"; $dep{$pkg->{src}."->($dep)".$idx} = 1; } else { - $depline .= " \$(curdir)/$idx/compile"; + $depstr = "\$(curdir)/$idx/compile"; $dep{$pkg->{src}."->".$idx} = 1; } + if ($condition) { + $depline .= " \$(if \$(CONFIG_$condition),$depstr)"; + } else { + $depline .= " $depstr"; + } } } } -- 2.30.2