pkgmaker 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. cd "$(dirname "$0")"
  2. export TOPDIR=$(realpath ..)
  3. if gmake --help >/dev/null 2>&1; then
  4. export GMAKE=gmake
  5. else
  6. export GMAKE=make
  7. fi
  8. rm -rf pkglist.d pkgopts.d
  9. mkdir pkglist.d pkgopts.d
  10. for sd in */Makefile; do
  11. sd=${sd%/*}
  12. cd $sd
  13. pa=$($GMAKE show=ALL_PKGOPTS) # pa: all subpackage options
  14. print -r -- $pa >../pkgopts.d/pa-"$sd"
  15. xa=
  16. for xu in $pa; do # xu: package option uppercase
  17. x=$($GMAKE show=PKGNAME_$xu) # x: subpackage name
  18. print -r -- "$xu" >../pkglist.d/"$x"
  19. xa="$xa $x"
  20. done
  21. print -r -- $xa >../pkgopts.d/xa-"$sd"
  22. cd ..
  23. done
  24. for sd in */Makefile; do
  25. sd=${sd%/*}
  26. cd $sd
  27. pn=$($GMAKE show=PKG_NAME) # pn: package name
  28. pfl=$($GMAKE show=PKG_FLAVOURS) # pfl: all package flavours
  29. typeset -u dnu=${sd//-/_} # dnu: subdir name uppercase
  30. dnu=${dnu//+/X}
  31. pd=$($GMAKE show=PKG_DESCR) # pd: package description
  32. ph=$($GMAKE show=PKG_URL) # ph: package homepage
  33. usecxx=$($GMAKE show=PKG_CXX)
  34. (
  35. print "config ADK_COMPILE_$dnu"
  36. print \\ttristate
  37. print -n \\tdepends on
  38. sp=' ' # local sp: space (or ' || ')
  39. for xu in $(<../pkgopts.d/pa-"$sd"); do # xu: package option uppercase
  40. print -n "${sp}ADK_PACKAGE_$xu"
  41. sp=' || '
  42. done
  43. print
  44. print \\tdefault n
  45. for x in $(<../pkgopts.d/xa-"$sd"); do # x: subpackage name
  46. xu=$(<../pkglist.d/"$x") # xu: package option uppercase
  47. print \\nconfig ADK_PACKAGE_$xu
  48. xf=$x # xf: subpackage name ........
  49. while (( ${#xf} < 34 )); do
  50. xf=$xf.
  51. done
  52. desc=$($GMAKE show=PKGDESC_$xu)
  53. print "\tprompt \"$xf ${desc:-${pd:-$pn}}\""
  54. print \\ttristate
  55. print \\tdefault n
  56. deps=$($GMAKE show=PKGDEPS_$xu)
  57. for dep in $deps; do
  58. [[ -n $usecxx && $dep = @(uclibc++|libstdcxx) ]] && \
  59. continue
  60. case $dep {
  61. (kmod-*)
  62. typeset -u udep=${dep//-/_}
  63. print "\tselect ADK_KPACKAGE_$udep"
  64. ;;
  65. (*)
  66. print '\tselect' \
  67. ADK_PACKAGE_$(<../pkglist.d/"$dep")
  68. ;;
  69. }
  70. done
  71. print \\tselect ADK_COMPILE_$dnu
  72. dep=$($GMAKE show=CFLINE_$xu) # one free-format line
  73. [[ -n $dep ]] && print "\t$dep"
  74. if [[ -n $pd$ph ]]; then
  75. print \\thelp
  76. [[ -n $pd ]] && print "\t $pd"
  77. [[ -n $pd && -n $ph ]] && print '\t '
  78. [[ -n $ph ]] && print "\t $ph"
  79. fi
  80. done
  81. [[ -n $usecxx ]] && cat <<EOF
  82. choice
  83. prompt "C++ library to use"
  84. depends on ADK_COMPILE_$dnu
  85. default ADK_COMPILE_${usecxx}_WITH_STDCXX if ADK_TARGET_LIB_GLIBC || ADK_TARGET_LIB_EGLIBC
  86. default ADK_COMPILE_${usecxx}_WITH_UCLIBCXX if ADK_TARGET_LIB_UCLIBC
  87. config ADK_COMPILE_${usecxx}_WITH_STDCXX
  88. bool "GNU C++ library"
  89. select ADK_PACKAGE_LIBSTDCXX
  90. config ADK_COMPILE_${usecxx}_WITH_UCLIBCXX
  91. bool "uClibc++ library"
  92. select ADK_PACKAGE_UCLIBCXX
  93. endchoice
  94. EOF
  95. for pf in $pfl; do # pf: package flavour
  96. pfd=$($GMAKE show=PKGFD_$pf)
  97. print
  98. print config ADK_PACKAGE_${dnu}_$pf
  99. print "\tbool \"${pfd:-flavour ADK_PACKAGE_${dnu}_$pf}\""
  100. print \\tdefault n
  101. print \\tdepends on ADK_COMPILE_$dnu
  102. print \\thelp
  103. print "\t flavour ADK_PACKAGE_${dnu}_$pf"
  104. done
  105. ) >Config.in
  106. cd ..
  107. done