11.16Schristos# $NetBSD: mknative.common,v 1.16 2018/04/15 15:13:37 christos Exp $ 21.1Smrg# 31.1Smrg# from: NetBSD: mknative,v 1.12 2003/03/05 06:17:17 mrg Exp 41.1Smrg# 51.1Smrg# shell-fragment common to all "mknative" scripts 61.1Smrg 71.2Slukembomb() 81.2Slukem{ 91.2Slukem echo >&2 "ABORT: $*" 101.1Smrg exit 1 111.1Smrg} 121.1Smrg 131.4Smrg# Make sure we can run OK. 141.4Smrgif [ -x "$MAKE" ]; then 151.4Smrg : 161.4Smrgelse 171.4Smrg bomb "MAKE not set" 181.4Smrgfi 191.4Smrg 201.1Smrg# usage: getvars MAKEFILE VARNAME [VARNAME...] 211.2Slukem# 221.2Slukemgetvars() 231.2Slukem{ 241.12Schristos _mfp="$1"; shift 251.4Smrg case "$MAKE" in 261.4Smrg *gmake) 271.12Schristos _dir=$(dirname "$_TMPDIR/$_mfp") 281.12Schristos _mf=$(basename "$_TMPDIR/$_mfp") 291.12Schristos env MAKEFLAGS= $MAKE -C "$_dir" --quiet -f - -f "$_mf" _x_ <<EOF || bomb "getvars $_mf $* failed" 301.4Smrgdefine echo_var 311.15Schristos @echo G_\${var}="\${\${var}}" | sed -e 's,\([^\.]\)\./\([a-zA-Z0-9_-]*\.o\),\1\2,g' -e 's,$_VPATH,\$\${GNUHOSTDIST},g' -e 's,$_GNU_DIST,\$\${GNUHOSTDIST},g' -e 's@"\\([A-Za-z0-9_./]*\\)"@\\\\"\\1\\\\"@g' -e "s@'"'\\([A-Za-z0-9./]*\\)'"'"'@\\\\"\\1\\\\"@g' 321.13Schristos 331.4Smrg 341.4Smrgendef 351.4Smrg_x_: 361.4Smrg \$(foreach var,$*,\$(echo_var)) 371.4SmrgEOF 381.4Smrg ;; 391.4Smrg *) 401.16Schristos $MAKE -B -f - _x_ <<EOF || bomb "getvars $_mfp $* failed" 411.1Smrg_x_: 421.1Smrg.for var in $* 431.5Smrg @echo G_\${var}=\${\${var}:Q} | sed -e 's,\([^\.]\)\./\([a-zA-Z0-9_-]*\.o\),\1\2,g' -e 's,$_VPATH,\$\${GNUHOSTDIST},g' -e 's,$_GNU_DIST,\$\${GNUHOSTDIST},g' 441.1Smrg.endfor 451.16Schristos.include "$_TMPDIR/$_mfp" 461.1SmrgEOF 471.4Smrg ;; 481.4Smrg esac 491.1Smrg} 501.1Smrg 511.11Schristos# usage: getlinks <config.status> <subdir> 521.11Schristos# 531.11Schristosgetlinks() 541.11Schristos{ 551.11Schristos _cs="$1"; shift 561.11Schristos _dir="$1"; shift 571.11Schristos echo -n G_CONFIGLINKS= 581.11Schristos grep "^config_links=" $_cs | sed -e 's@config_links="\([^"]*\)"@\1@g' -e "s@\([^:]*\):\([^ ]*\)@\${GNUHOSTDIST}/${_dir}/\2 \1 @g" 591.11Schristos} 601.11Schristos 611.1Smrg# usage: write_c FILENAME 621.2Slukem# 631.2Slukemwrite_c() 641.2Slukem{ 651.1Smrg echo '/* This file is automatically generated. DO NOT EDIT! */' >$_TOP/$1.tmp || \ 661.1Smrg bomb "cannot create $1" 671.11Schristos grep '$''NetBSD' $0 | sed 's,[ #$],,g;s,.*,/* Generated from: & */,' >>$_TOP/$1.tmp 681.16Schristos echo '$NetBSD: mknative.common,v 1.16 2018/04/15 15:13:37 christos Exp $' | sed 's,[#$],,g;s,.*,/* Generated from: & */,' >>$_TOP/$1.tmp 691.1Smrg echo '' >>$_TOP/$1.tmp 701.1Smrg writefile $1 711.1Smrg} 721.1Smrg 731.1Smrg# usage: write_mk FILENAME 741.2Slukem# 751.2Slukemwrite_mk() 761.2Slukem{ 771.1Smrg echo '# This file is automatically generated. DO NOT EDIT!' >$_TOP/$1.tmp || \ 781.1Smrg bomb "cannot create $1" 791.11Schristos grep '$''NetBSD' $0 | sed 's,[ #$],,g;s,.*,# Generated from: &,' >>$_TOP/$1.tmp 801.16Schristos echo '$NetBSD: mknative.common,v 1.16 2018/04/15 15:13:37 christos Exp $' | sed 's,[#$],,g;s,.*,# Generated from: &,' >>$_TOP/$1.tmp 811.1Smrg echo '#' >>$_TOP/$1.tmp 821.1Smrg writefile $1 831.1Smrg} 841.1Smrg 851.2Slukemwritefile() 861.2Slukem{ 871.1Smrg sed -e 's,netbsd\(elf\)*1[0-9\.]*\(_\)*[A-Z]*,netbsd\1,' \ 881.2Slukem -e 's,^/\* #undef HAVE_MMAP \*/$,#define HAVE_MMAP 1,' \ 891.2Slukem >>$_TOP/$1.tmp 901.1Smrg 911.2Slukem # Compare new file, sans "generated from" comments and RCS Id, 921.2Slukem # to old file. If they match, don't change anything. 931.1Smrg rm -f $_TMPDIR/.1 $_TMPDIR/.2 941.1Smrg grep -v 'Generated from:' $_TOP/$1 >$_TMPDIR/.1 2>/dev/null 951.1Smrg grep -v 'Generated from:' $_TOP/$1.tmp >$_TMPDIR/.2 961.1Smrg 971.2Slukem # will not overwrite a file that has the same content 981.1Smrg if cmp $_TMPDIR/.1 $_TMPDIR/.2 >/dev/null 2>&1; then 991.1Smrg rm -f $_TOP/$1.tmp 1001.1Smrg else 1011.1Smrg echo >&2 "$1 changed" 1021.1Smrg mv -f $_TOP/$1.tmp $_TOP/$1 1031.1Smrg fi 1041.1Smrg} 105