sets.subr revision 1.11
11.11Slukem# $NetBSD: sets.subr,v 1.11 2004/01/03 02:38:58 lukem Exp $ 21.1Sdyoung# 31.9Slukem 41.9Slukem# 51.11Slukem# The following variables contain defaults for sets.subr functions and callers: 61.9Slukem# setsdir path to src/distrib/sets 71.9Slukem# nlists list of base sets 81.9Slukem# xlists list of x11 sets 91.9Slukem# obsolete controls if obsolete files are selected instead 101.9Slukem# lkm if != "no", enable LKM sets 111.9Slukem# shlib shared library format (a.out, elf, or "") 121.9Slukem# stlib static library format (a.out, elf) 131.9Slukem# x11_version version of XF86 (3 or 4) 141.11Slukem# 151.11Slukem# The following <bsd.own.mk> variables are exported to the environment: 161.11Slukem# MACHINE 171.11Slukem# MACHINE_ARCH 181.11Slukem# MACHINE_CPU 191.11Slukem# HAVE_GCC3 201.11Slukem# TOOLCHAIN_MISSING 211.11Slukem# OBJECT_FMT 221.11Slukem# MKKERBEROS 231.11Slukem# MKKERBEROS4 241.11Slukem# MKLINT 251.11Slukem# MKSENDMAIL 261.9Slukem 271.9SlukemoIFS=$IFS 281.9SlukemIFS=" 291.9Slukem" 301.9Slukemfor x in $( 311.11Slukem${MAKE:-make} -B -f- all <<'EOF' 321.9Slukem.include <bsd.own.mk> 331.9Slukemall: 341.11Slukem.for i in MACHINE MACHINE_ARCH MACHINE_CPU \ 351.11Slukem HAVE_GCC3 OBJECT_FMT TOOLCHAIN_MISSING \ 361.11Slukem MKKERBEROS MKKERBEROS4 MKLINT MKSENDMAIL 371.11Slukem @echo "export $i=${$i}" 381.11Slukem.endfor 391.11Slukem.if defined(USE_XF86_4) && (${USE_XF86_4} != "no") 401.9Slukem @echo x11_version=4 411.9Slukem.else 421.9Slukem @echo x11_version=3 431.9Slukem.endif 441.9Slukem 451.9SlukemEOF 461.9Slukem); do 471.11Slukem# echo 1>&2 "DEBUG: read $x" 481.9Slukem eval $x 491.9Slukemdone 501.9SlukemIFS=$oIFS 511.9Slukem 521.9Slukemsetsdir=$(dirname $0) 531.9Slukemnlists="base comp etc games man misc text" 541.9Slukemcase $x11_version in 551.9Slukem3) xlists="xbase3 xcomp3 xcontrib3 xfont3 xmisc3 xserver3" ;; 561.9Slukem4) xlists="xbase4 xcomp4 xcontrib4 xfont4 xmisc4 xserver4" ;; 571.9Slukem*) xlists="xbase xcomp xcontrib xfont xmisc xserver" ;; 581.9Slukemesac 591.9Slukemobsolete=0 601.9Slukemlkm=yes 611.11Slukemif [ "${MACHINE}" = "evbppc" ]; then 621.9Slukem lkm=no # Turn off LKMs for some ports. 631.9Slukemfi 641.9Slukem# Determine lib type. 651.11Slukemif [ "${OBJECT_FMT}" = "ELF" ]; then 661.9Slukem shlib=elf 671.9Slukemelse 681.9Slukem shlib=aout 691.9Slukemfi 701.9Slukemstlib=$shlib 711.11Slukemif [ "${MACHINE_CPU}" = "sh3" -o "${MACHINE_ARCH}" = "m68000" ]; then 721.9Slukem shlib=no # Turn off shlibs for some ports. 731.9Slukemfi 741.9Slukem 751.9Slukem 761.9Slukem# 771.9Slukem# list_set_files setfile [...] 781.1Sdyoung# 791.9Slukem# Produce a packing list for setfile(s). 801.9Slukem# In each file, a record consists of a path and a System Package name, 811.9Slukem# separated by whitespace. E.g., 821.9Slukem# 831.11Slukem# # $NetBSD: sets.subr,v 1.11 2004/01/03 02:38:58 lukem Exp $ 841.9Slukem# . base-sys-root [keyword[,...]] 851.9Slukem# ./altroot base-sys-root 861.9Slukem# ./bin base-sys-root 871.9Slukem# ./bin/[ base-util-root 881.9Slukem# ./bin/cat base-util-root 891.9Slukem# [...] 901.9Slukem# 911.9Slukem# A # in the first column marks a comment. 921.9Slukem# 931.9Slukem# If ${obsolete} != 0, only entries with an "obsolete" keyword will 941.9Slukem# be printed. 951.9Slukem# 961.9Slukem# The third field is an optional comma separated list of keywords to 971.9Slukem# control if a record is printed; every keyword listed must be enabled 981.9Slukem# for the record to be printed. The following keywords are available: 991.9Slukem# dummy dummy entry (ignored) 1001.11Slukem# kerberos <bsd.own.mk> ${MKKERBEROS} != no 1011.9Slukem# kerberos4 <bsd.own.mk> ${MKKERBEROS4} != no 1021.9Slukem# lint <bsd.own.mk> ${MKLINT} != no 1031.11Slukem# sendmail <bsd.own.mk> ${MKSENDMAIL} != no 1041.9Slukem# obsolete file is obsolete, and only printed if 1051.9Slukem# ${obsolete} != 0 1061.1Sdyoung# 1071.8Slukemlist_set_files() 1081.8Slukem{ 1091.1Sdyoung for setname; do 1101.1Sdyoung list_set_lists $setname 1111.9Slukem done | xargs cat | \ 1121.11Slukem awk -v obsolete=${obsolete} ' 1131.9Slukem BEGIN { 1141.9Slukem if (! obsolete) { 1151.11Slukem split("kerberos4 kerberos lint sendmail", 1161.9Slukem needvars) 1171.9Slukem for (vi in needvars) { 1181.9Slukem nv = needvars[vi] 1191.9Slukem if (ENVIRON["MK" toupper(nv)] != "no") 1201.9Slukem wanted[nv] = 1 1211.9Slukem } 1221.9Slukem } 1231.9Slukem } 1241.9Slukem 1251.9Slukem /^#/ { 1261.9Slukem next; 1271.9Slukem } 1281.9Slukem 1291.9Slukem NF > 2 && $3 != "-" { 1301.9Slukem split($3, keywords, ",") 1311.9Slukem show = 1 1321.9Slukem for (ki in keywords) { 1331.9Slukem kw = keywords[ki] 1341.9Slukem if (kw == "obsolete") { 1351.9Slukem if (obsolete) 1361.9Slukem print 1371.9Slukem next 1381.9Slukem } 1391.9Slukem if (! (kw in wanted)) 1401.9Slukem show = 0 1411.9Slukem } 1421.9Slukem if (show) 1431.9Slukem print 1441.9Slukem next 1451.9Slukem } 1461.9Slukem 1471.9Slukem { 1481.9Slukem if (! obsolete) 1491.9Slukem print 1501.9Slukem }' 1511.9Slukem 1521.1Sdyoung} 1531.1Sdyoung 1541.1Sdyoung# 1551.1Sdyoung# list_set_lists setname 1561.1Sdyoung# 1571.1Sdyoung# Print to stdout a list of files, one filename per line, which 1581.1Sdyoung# concatenate to create the packing list for setname. E.g., 1591.1Sdyoung# 1601.1Sdyoung# .../lists/base/mi 1611.1Sdyoung# .../lists/base/rescue.mi 1621.1Sdyoung# .../lists/base/md.i386 1631.9Slukem# [...] 1641.1Sdyoung# 1651.9Slukem# For a given setname $set, the following files may be selected from 1661.9Slukem# .../list/$set: 1671.9Slukem# mi 1681.11Slukem# ad.${MACHINE_ARCH} 1691.11Slukem# (or) ad.${MACHINE_CPU} 1701.11Slukem# ad.${MACHINE_CPU}.shl 1711.11Slukem# md.${MACHINE}.${MACHINE_ARCH} 1721.11Slukem# (or) md.${MACHINE} 1731.9Slukem# stl.mi 1741.9Slukem# stl.stlib 1751.9Slukem# shl.mi 1761.9Slukem# shl.shlib 1771.9Slukem# lkm.mi if ${lkm} != no 1781.9Slukem# gcc.mi 1791.9Slukem# gcc.shl 1801.9Slukem# tc.mi 1811.9Slukem# tc.shl 1821.9Slukem# rescue.shl 1831.11Slukem# rescue.${MACHINE} 1841.11Slukem# rescue.ad.${MACHINE_ARCH} 1851.11Slukem# (or) rescue.ad.${MACHINE_CPU} 1861.11Slukem# rescue.ad.${MACHINE_CPU}.shl 1871.1Sdyoung# 1881.9Slukem# Environment: 1891.1Sdyoung# shlib 1901.1Sdyoung# stlib 1911.1Sdyoung# 1921.8Slukemlist_set_lists() 1931.8Slukem{ 1941.1Sdyoung setname=$1 1951.1Sdyoung 1961.9Slukem setdir=$setsdir/lists/$setname 1971.9Slukem echo $setdir/mi 1981.11Slukem if [ "${MACHINE}" != "${MACHINE_ARCH}" ]; then 1991.11Slukem # Prefer an ad.${MACHINE_ARCH} over an ad.${MACHINE_CPU}, 2001.1Sdyoung # since the arch-specific one will be more specific than 2011.1Sdyoung # the cpu-specific one. 2021.11Slukem if [ -f $setdir/ad.${MACHINE_ARCH} ]; then 2031.11Slukem echo $setdir/ad.${MACHINE_ARCH} 2041.11Slukem elif [ -f $setdir/ad.${MACHINE_CPU} ]; then 2051.11Slukem echo $setdir/ad.${MACHINE_CPU} 2061.1Sdyoung fi 2071.1Sdyoung if [ "$shlib" != "no" -a \ 2081.11Slukem -f $setdir/ad.${MACHINE_CPU}.shl ]; then 2091.11Slukem echo $setdir/ad.${MACHINE_CPU}.shl 2101.1Sdyoung fi 2111.1Sdyoung fi 2121.11Slukem if [ -f $setdir/md.${MACHINE}.${MACHINE_ARCH} ]; then 2131.11Slukem echo $setdir/md.${MACHINE}.${MACHINE_ARCH} 2141.11Slukem elif [ -f $setdir/md.${MACHINE} ]; then 2151.11Slukem echo $setdir/md.${MACHINE} 2161.1Sdyoung fi 2171.9Slukem if [ -f $setdir/stl.mi ]; then 2181.9Slukem echo $setdir/stl.mi 2191.1Sdyoung fi 2201.9Slukem if [ -f $setdir/stl.${stlib} ]; then 2211.9Slukem echo $setdir/stl.${stlib} 2221.1Sdyoung fi 2231.1Sdyoung if [ "$shlib" != "no" ]; then 2241.9Slukem if [ -f $setdir/shl.mi ]; then 2251.9Slukem echo $setdir/shl.mi 2261.7Sdyoung fi 2271.9Slukem if [ -f $setdir/shl.${shlib} ]; then 2281.9Slukem echo $setdir/shl.${shlib} 2291.7Sdyoung fi 2301.1Sdyoung fi 2311.1Sdyoung if [ "$lkm" != "no" ]; then 2321.9Slukem if [ -f $setdir/lkm.mi ]; then 2331.9Slukem echo $setdir/lkm.mi 2341.1Sdyoung fi 2351.1Sdyoung fi 2361.11Slukem if [ "${TOOLCHAIN_MISSING}" != "yes" ]; then 2371.11Slukem if [ "${HAVE_GCC3}" = "yes" ]; then 2381.9Slukem if [ -f $setdir/gcc.mi ]; then 2391.9Slukem echo $setdir/gcc.mi 2401.2Smrg fi 2411.2Smrg if [ "$shlib" != "no" ]; then 2421.9Slukem if [ -f $setdir/gcc.shl ]; then 2431.9Slukem echo $setdir/gcc.shl 2441.2Smrg fi 2451.2Smrg fi 2461.2Smrg else 2471.9Slukem if [ -f $setdir/tc.mi ]; then 2481.9Slukem echo $setdir/tc.mi 2491.2Smrg fi 2501.2Smrg if [ "$shlib" != "no" ]; then 2511.9Slukem if [ -f $setdir/tc.shl ]; then 2521.9Slukem echo $setdir/tc.shl 2531.2Smrg fi 2541.1Sdyoung fi 2551.1Sdyoung fi 2561.1Sdyoung fi 2571.1Sdyoung 2581.9Slukem if [ -f $setdir/rescue.mi ]; then 2591.9Slukem echo $setdir/rescue.mi 2601.1Sdyoung fi 2611.11Slukem if [ -f $setdir/rescue.${MACHINE} ]; then 2621.11Slukem echo $setdir/rescue.${MACHINE} 2631.1Sdyoung fi 2641.11Slukem if [ "${MACHINE}" != "${MACHINE_ARCH}" ]; then 2651.11Slukem # Prefer a rescue.ad.${MACHINE_ARCH} over a 2661.11Slukem # rescue.ad.${MACHINE_CPU}, since the arch- 2671.1Sdyoung # specific one will be more specific than the 2681.1Sdyoung # cpu-specific one. 2691.11Slukem if [ -f $setdir/rescue.ad.${MACHINE_ARCH} ]; then 2701.11Slukem echo $setdir/rescue.ad.${MACHINE_ARCH} 2711.11Slukem elif [ -f $setdir/rescue.ad.${MACHINE_CPU} ]; then 2721.11Slukem echo $setdir/rescue.ad.${MACHINE_CPU} 2731.1Sdyoung fi 2741.10Sjmc if [ "$shlib" != "no" -a \ 2751.11Slukem -f $setdir/rescue.ad.${MACHINE_CPU}.shl ]; then 2761.11Slukem echo $setdir/rescue.ad.${MACHINE_CPU}.shl 2771.10Sjmc fi 2781.1Sdyoung fi 2791.5Sdyoung} 2801.5Sdyoung 2811.9Slukem# arch_to_cpu mach 2821.9Slukem# 2831.11Slukem# Print the ${MACHINE_CPU} for ${MACHINE_ARCH}=mach, 2841.9Slukem# as determined by <bsd.own.mk>. 2851.9Slukem# 2861.8Slukemarch_to_cpu() 2871.8Slukem{ 2881.9Slukem MACHINE_ARCH=${1} ${MAKE:-make} -f- all <<EOF 2891.5Sdyoung.include <bsd.own.mk> 2901.5Sdyoungall: 2911.5Sdyoung @echo \${MACHINE_CPU} 2921.5SdyoungEOF 2931.1Sdyoung} 294