mknative.common revision 1.2
11.2Slukem#	$NetBSD: mknative.common,v 1.2 2004/12/11 01:37:36 lukem 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.1Smrg# usage: getvars MAKEFILE VARNAME [VARNAME...]
141.2Slukem#
151.2Slukemgetvars()
161.2Slukem{
171.1Smrg	_mf="$1"; shift
181.1Smrg	$MAKE -f - _x_ <<EOF || bomb "getvars $_mf $* failed"
191.1Smrg_x_:
201.1Smrg.for var in $*
211.1Smrg	@echo G_\${var}=\${\${var}:Q} | sed 's,$_VPATH,\$\${GNUHOSTDIST},g'
221.1Smrg.endfor
231.1Smrg.include "$_TMPDIR/$_mf"
241.1SmrgEOF
251.1Smrg}
261.1Smrg
271.1Smrg# usage: write_c FILENAME
281.2Slukem#
291.2Slukemwrite_c()
301.2Slukem{
311.1Smrg	echo '/* This file is automatically generated.  DO NOT EDIT! */' >$_TOP/$1.tmp || \
321.1Smrg		bomb "cannot create $1"
331.1Smrg	grep '$''NetBSD' $0 | sed 's,[#$],,g;s,.*,/* Generated from: & */,' >>$_TOP/$1.tmp
341.1Smrg	echo '' >>$_TOP/$1.tmp
351.1Smrg	writefile $1
361.1Smrg}
371.1Smrg
381.1Smrg# usage: write_mk FILENAME
391.2Slukem#
401.2Slukemwrite_mk()
411.2Slukem{
421.1Smrg	echo '# This file is automatically generated.  DO NOT EDIT!' >$_TOP/$1.tmp || \
431.1Smrg		bomb "cannot create $1"
441.1Smrg	grep '$''NetBSD' $0 | sed 's,[#$],,g;s,.*,# Generated from: &,' >>$_TOP/$1.tmp
451.1Smrg	echo '#' >>$_TOP/$1.tmp
461.1Smrg	writefile $1
471.1Smrg}
481.1Smrg
491.2Slukemwritefile()
501.2Slukem{
511.1Smrg	sed -e 's,netbsd\(elf\)*1[0-9\.]*\(_\)*[A-Z]*,netbsd\1,' \
521.2Slukem	    -e 's,^/\* #undef HAVE_MMAP \*/$,#define HAVE_MMAP 1,' \
531.2Slukem	    >>$_TOP/$1.tmp
541.1Smrg
551.2Slukem		# Compare new file, sans "generated from" comments and RCS Id,
561.2Slukem		# to old file.  If they match, don't change anything.
571.1Smrg	rm -f $_TMPDIR/.1 $_TMPDIR/.2
581.1Smrg	grep -v 'Generated from:' $_TOP/$1 >$_TMPDIR/.1 2>/dev/null
591.1Smrg	grep -v 'Generated from:' $_TOP/$1.tmp >$_TMPDIR/.2
601.1Smrg
611.2Slukem		# will not overwrite a file that has the same content
621.1Smrg	if cmp $_TMPDIR/.1 $_TMPDIR/.2 >/dev/null 2>&1; then
631.1Smrg		rm -f $_TOP/$1.tmp
641.1Smrg	else
651.1Smrg		echo >&2 "$1 changed"
661.1Smrg		mv -f $_TOP/$1.tmp $_TOP/$1
671.1Smrg	fi
681.1Smrg}
69