|  | @@ -40,12 +40,14 @@ for dn in */Makefile; do
 | 
	
		
			
				|  |  |  done
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  # build Config.in files and resolve dependencies
 | 
	
		
			
				|  |  | +rm -f package_sections
 | 
	
		
			
				|  |  | +rm -rf pkgconfigs.d
 | 
	
		
			
				|  |  | +mkdir pkgconfigs.d
 | 
	
		
			
				|  |  |  for dn in */Makefile; do
 | 
	
		
			
				|  |  |  	dn=${dn%/*}
 | 
	
		
			
				|  |  | -	# skip if we take care of this one manually
 | 
	
		
			
				|  |  | -	[[ $dn != "base-files" ]] && [[ -s $dn/Config.in.manual ]] && continue
 | 
	
		
			
				|  |  |  	pbar="Pass 2: $dn ..."
 | 
	
		
			
				|  |  |  	print -nu2 "$pbar\r"
 | 
	
		
			
				|  |  | +	mkdir pkgconfigs.d/$dn
 | 
	
		
			
				|  |  |  	cd $dn
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	# PKG_NAME: package name (directory, free-format)
 | 
	
	
		
			
				|  | @@ -61,9 +63,9 @@ for dn in */Makefile; do
 | 
	
		
			
				|  |  |  	# CFLINE_*: one free-format Config.in line per subpackage option
 | 
	
		
			
				|  |  |  	# PKGFD_*: flavour description, per package flavour option
 | 
	
		
			
				|  |  |  	# PKG_{HOST,TARGET}_DEPENDS: add host or target dependencies
 | 
	
		
			
				|  |  | -	eval $($GMAKE dump="PKG_NAME PKG_FLAVOURS PKG_DESCR PKG_URL PKG_MULTI PKG_CXX \
 | 
	
		
			
				|  |  | +	eval $($GMAKE dump="PKG_NAME PKG_FLAVOURS PKG_DESCR PKG_SECTION PKG_URL PKG_MULTI PKG_CXX \
 | 
	
		
			
				|  |  |  	    ALL_PKGOPTS \$(foreach x,\${ALL_PKGOPTS},PKGNAME_\${x} \
 | 
	
		
			
				|  |  | -	    PKGDESC_\${x} PKGDEPS_\${x} PKGDFLT_\${x} CFLINE_\${x}) \
 | 
	
		
			
				|  |  | +	    PKGDESC_\${x} PKGDEPS_\${x} PKGDFLT_\${x} PKGSECT_\${x} CFLINE_\${x}) \
 | 
	
		
			
				|  |  |  	    \$(foreach x,\${PKG_FLAVOURS},PKGFD_\${x}) \
 | 
	
		
			
				|  |  |  	    PKG_HOST_DEPENDS PKG_TARGET_DEPENDS")
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -71,8 +73,13 @@ for dn in */Makefile; do
 | 
	
		
			
				|  |  |  	typeset -u dnu=${dn//-/_}
 | 
	
		
			
				|  |  |  	dnu=${dnu//+/X}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	(	# fd 4 = Config.in; fd 5 = Config.in.lib; fd 6 = Config.in.kmod
 | 
	
		
			
				|  |  | -	g5=0
 | 
	
		
			
				|  |  | +	echo "pkgconfigs.d/$dn/Config.in ${PKG_SECTION:=none}" >>../package_sections
 | 
	
		
			
				|  |  | +	echo "$dn/Config.in.manual ${PKG_SECTION:=none}" >>../package_sections
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	# skip if we take care of this one manually
 | 
	
		
			
				|  |  | +	[[ $dn != "base-files" ]] && [[ -s Config.in.manual ]] && { cd ..; continue; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	exec 4>../pkgconfigs.d/$dn/Config.in
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	# Handle master package (directory)
 | 
	
		
			
				|  |  |  	print -u4 "config ADK_COMPILE_$dnu"
 | 
	
	
		
			
				|  | @@ -165,20 +172,15 @@ for dn in */Makefile; do
 | 
	
		
			
				|  |  |  		eval sppn=\$PKGNAME_$spcu	# sppn: subpackage (ipkg) name
 | 
	
		
			
				|  |  |  		eval desc=\$PKGDESC_$spcu	# desc: subpackage description
 | 
	
		
			
				|  |  |  		: ${desc:=$PKG_DESCR}		# take from main pkg if empty
 | 
	
		
			
				|  |  | +		eval sect=\$PKGSECT_$spcu	# sect: subpackage section
 | 
	
		
			
				|  |  | +		: ${sect:=$PKG_SECTION}		# take from main pkg if empty
 | 
	
		
			
				|  |  |  		eval deps=\$PKGDEPS_$spcu	# deps: subpackage dependencies
 | 
	
		
			
				|  |  |  		eval dflt=\$PKGDFLT_$spcu	# dflt: config 'default' opt.
 | 
	
		
			
				|  |  |  		eval xline=\$CFLINE_$spcu	# xline: one free-format line
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		if [[ $spcu = LIB* ]]; then
 | 
	
		
			
				|  |  | -			h=5			# divert to Config.in.lib
 | 
	
		
			
				|  |  | -			(( g5++ )) && print -u5	# been here before
 | 
	
		
			
				|  |  | -		elif [[ $spcu = KMOD* ]]; then
 | 
	
		
			
				|  |  | -			h=6
 | 
	
		
			
				|  |  | -			(( g6++ )) && print -u6
 | 
	
		
			
				|  |  | -		else
 | 
	
		
			
				|  |  | -			h=4			# divert to Config.in
 | 
	
		
			
				|  |  | -			print -u4
 | 
	
		
			
				|  |  | -		fi
 | 
	
		
			
				|  |  | +		echo "pkgconfigs.d/$dn/Config.in.$sppn $sect" >>../package_sections
 | 
	
		
			
				|  |  | +		exec 4>../pkgconfigs.d/$dn/Config.in.$sppn
 | 
	
		
			
				|  |  | +		h=4
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		print -u$h config ADK_PACKAGE_$spcu
 | 
	
		
			
				|  |  |  		spnf=$sppn			# spnf: subpackage name, filled
 | 
	
	
		
			
				|  | @@ -261,7 +263,6 @@ EOF
 | 
	
		
			
				|  |  |  		print "\t  flavour ADK_PACKAGE_${dnu}_$pfcu for $PKG_NAME"
 | 
	
		
			
				|  |  |  	done >&4
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	) 4>Config.in 5>Config.in.lib 6>Config.in.kmod
 | 
	
		
			
				|  |  |  	cd ..
 | 
	
		
			
				|  |  |  done
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -285,44 +286,16 @@ function get_first_prompt() {
 | 
	
		
			
				|  |  |  	[[ -n $prompt ]] && echo $prompt
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -# collect packages along with their section and
 | 
	
		
			
				|  |  | -# create a list of '<name> <path to config.in> <section string>' for later sorting
 | 
	
		
			
				|  |  | -rm -f package_section_list
 | 
	
		
			
				|  |  | -for dn in */Makefile; do
 | 
	
		
			
				|  |  | -	dn=${dn%/*}
 | 
	
		
			
				|  |  | -	pbar="Pass 3: $dn ..."
 | 
	
		
			
				|  |  | +# prepare Config.in list for sorting
 | 
	
		
			
				|  |  | +while read config_in section; do
 | 
	
		
			
				|  |  | +	pbar="Pass 3: $config_in ..."
 | 
	
		
			
				|  |  |  	print -nu2 "$pbar\r"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	cd $dn
 | 
	
		
			
				|  |  | -	eval $($GMAKE dump="PKG_NAME PKG_SECTION")
 | 
	
		
			
				|  |  | -	cd ..
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	# ignore section kernel, these are included inside target/config
 | 
	
		
			
				|  |  | -	[[ $PKG_SECTION = kernel ]] && continue
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	PKG_SECTION=${PKG_SECTION:-none}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	has_config_in=false
 | 
	
		
			
				|  |  | -	if non_empty_file $dn/Config.in; then
 | 
	
		
			
				|  |  | -		prompt="$(get_first_prompt $dn/Config.in)"
 | 
	
		
			
				|  |  | -		prompt="${prompt:-$PKG_NAME}"
 | 
	
		
			
				|  |  | -		echo "$prompt $dn/Config.in $(lookup_section_string $PKG_SECTION)"
 | 
	
		
			
				|  |  | -		has_config_in=true
 | 
	
		
			
				|  |  | -	fi
 | 
	
		
			
				|  |  | -	if non_empty_file $dn/Config.in.lib; then
 | 
	
		
			
				|  |  | -		prompt="$(get_first_prompt $dn/Config.in.lib)"
 | 
	
		
			
				|  |  | -		prompt="${prompt:-$PKG_NAME}"
 | 
	
		
			
				|  |  | -		echo "$prompt $dn/Config.in.lib $(lookup_section_string libs)"
 | 
	
		
			
				|  |  | -		has_config_in=true
 | 
	
		
			
				|  |  | -	fi
 | 
	
		
			
				|  |  | -	if non_empty_file $dn/Config.in.manual; then
 | 
	
		
			
				|  |  | -		prompt="$(get_first_prompt $dn/Config.in.manual)"
 | 
	
		
			
				|  |  | -		prompt="${prompt:-$PKG_NAME}"
 | 
	
		
			
				|  |  | -		echo "$prompt $dn/Config.in.manual $(lookup_section_string $PKG_SECTION)"
 | 
	
		
			
				|  |  | -		has_config_in=true
 | 
	
		
			
				|  |  | -	fi
 | 
	
		
			
				|  |  | -	$has_config_in || print -u2 "$dn: No Config.in file found?!"
 | 
	
		
			
				|  |  | -done >package_section_list
 | 
	
		
			
				|  |  | +	non_empty_file $config_in || continue
 | 
	
		
			
				|  |  | +	prompt="$(get_first_prompt $config_in)"
 | 
	
		
			
				|  |  | +	[[ -n $prompt ]] || continue
 | 
	
		
			
				|  |  | +	echo "$prompt $config_in $(lookup_section_string $section)"
 | 
	
		
			
				|  |  | +done <package_sections >package_section_list
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  # create the Config.in.auto from the sorted list from above
 | 
	
		
			
				|  |  |  cursec=""
 | 
	
	
		
			
				|  | @@ -339,4 +312,4 @@ sort -k 3 -k 1 -f package_section_list | while read name file section; do
 | 
	
		
			
				|  |  |  	print "source \"package/$file\""
 | 
	
		
			
				|  |  |  done >Config.in.auto
 | 
	
		
			
				|  |  |  print "endmenu\n" >>Config.in.auto
 | 
	
		
			
				|  |  | -rm -f package_section_list
 | 
	
		
			
				|  |  | +rm -f package_sections package_section_list
 |