minix/tools/gcc/mknative.common
Thomas Veerman c8a0e2f4c6 Import NetBSD tools and build.sh
This commit finalizes support for cross compilation. The tools
directory are all links to the actual tools and are built on the
host system to build Minix. build.sh is the work horse that takes
care of all environment settings. It's slightly adjusted for Minix.
The /usr/src/Makefile has additional targets needed for cross
compilation.
2012-06-18 10:54:51 +00:00

91 lines
2.4 KiB
Text

# $NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp $
#
# from: NetBSD: mknative,v 1.12 2003/03/05 06:17:17 mrg Exp
#
# shell-fragment common to all "mknative" scripts
bomb()
{
echo >&2 "ABORT: $*"
exit 1
}
# Make sure we can run OK.
if [ -x "$MAKE" ]; then
:
else
bomb "MAKE not set"
fi
# usage: getvars MAKEFILE VARNAME [VARNAME...]
#
getvars()
{
_mf="$1"; shift
case "$MAKE" in
*gmake)
env MAKEFLAGS= $MAKE -f - -f "$_TMPDIR/$_mf" _x_ <<EOF || bomb "getvars $_mf $* failed"
define echo_var
@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'
endef
_x_:
\$(foreach var,$*,\$(echo_var))
EOF
;;
*)
$MAKE -B -f - _x_ <<EOF || bomb "getvars $_mf $* failed"
_x_:
.for var in $*
@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'
.endfor
.include "$_TMPDIR/$_mf"
EOF
;;
esac
}
# usage: write_c FILENAME
#
write_c()
{
echo '/* This file is automatically generated. DO NOT EDIT! */' >$_TOP/$1.tmp || \
bomb "cannot create $1"
grep '$''NetBSD' $0 | sed 's,[#$],,g;s,.*,/* Generated from: & */,' >>$_TOP/$1.tmp
echo '$NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp $' | sed 's,[#$],,g;s,.*,/* Generated from: & */,' >>$_TOP/$1.tmp
echo '' >>$_TOP/$1.tmp
writefile $1
}
# usage: write_mk FILENAME
#
write_mk()
{
echo '# This file is automatically generated. DO NOT EDIT!' >$_TOP/$1.tmp || \
bomb "cannot create $1"
grep '$''NetBSD' $0 | sed 's,[#$],,g;s,.*,# Generated from: &,' >>$_TOP/$1.tmp
echo '$NetBSD: mknative.common,v 1.9 2007/02/05 18:26:01 apb Exp $' | sed 's,[#$],,g;s,.*,# Generated from: &,' >>$_TOP/$1.tmp
echo '#' >>$_TOP/$1.tmp
writefile $1
}
writefile()
{
sed -e 's,netbsd\(elf\)*1[0-9\.]*\(_\)*[A-Z]*,netbsd\1,' \
-e 's,^/\* #undef HAVE_MMAP \*/$,#define HAVE_MMAP 1,' \
>>$_TOP/$1.tmp
# Compare new file, sans "generated from" comments and RCS Id,
# to old file. If they match, don't change anything.
rm -f $_TMPDIR/.1 $_TMPDIR/.2
grep -v 'Generated from:' $_TOP/$1 >$_TMPDIR/.1 2>/dev/null
grep -v 'Generated from:' $_TOP/$1.tmp >$_TMPDIR/.2
# will not overwrite a file that has the same content
if cmp $_TMPDIR/.1 $_TMPDIR/.2 >/dev/null 2>&1; then
rm -f $_TOP/$1.tmp
else
echo >&2 "$1 changed"
mv -f $_TOP/$1.tmp $_TOP/$1
fi
}