Add kludgey nouveau2netbsd script in preparation for re-import.
This commit is contained in:
parent
a412265c72
commit
d630126e7b
|
@ -0,0 +1,112 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# $NetBSD: nouveau2netbsd,v 1.1 2014/08/05 17:39:07 riastradh Exp $
|
||||||
|
#
|
||||||
|
# $ /path/to/nouveau2netbsd > /path/to/files.nouveau.new
|
||||||
|
#
|
||||||
|
# Run from the top-level Nouveau source directory. This stupid kludge
|
||||||
|
# reinterprets the GNU makefile as a BSD makefile to extract the source
|
||||||
|
# file names, renames the ones that have obscure and/or colliding
|
||||||
|
# basenames to be less obscure and unlikely (though not guaranteed) to
|
||||||
|
# collide, and spits out config(5) directives for all of them.
|
||||||
|
|
||||||
|
set -Ceu
|
||||||
|
|
||||||
|
# Location of the Nouveau sources relative to $NETBSDSRCDIR.
|
||||||
|
nouveau_top=external/bsd/drm2/dist/drm/nouveau
|
||||||
|
|
||||||
|
# config(5) flag for the Nouveau driver.
|
||||||
|
nouveau_flag=nouveau
|
||||||
|
|
||||||
|
filemap=
|
||||||
|
|
||||||
|
clean ()
|
||||||
|
{
|
||||||
|
[ -z "$filemap" ] || rm -f -- "$filemap" || :
|
||||||
|
}
|
||||||
|
trap clean EXIT HUP INT TERM
|
||||||
|
|
||||||
|
filemap="$(mktemp -t ${0##*/})"
|
||||||
|
|
||||||
|
cat Makefile \
|
||||||
|
| sed -e 's,^include \(.*\)$,.include "\1",' \
|
||||||
|
| sed -e 's,^ifdef \(.*\)$,.if !empty(\1:M[yY][eE][sS]),' \
|
||||||
|
| sed -e 's,^endif$,.endif,' \
|
||||||
|
| make -f /dev/stdin -V nouveau-y src=. \
|
||||||
|
| tr ' ' '\n' \
|
||||||
|
| sed -e 's,^$,,' \
|
||||||
|
| sort -u \
|
||||||
|
| sed -e 's,\.o$,.c,' \
|
||||||
|
| awk '
|
||||||
|
BEGIN {
|
||||||
|
duplicates = 0
|
||||||
|
}
|
||||||
|
$1 ~ "nouveau_[^/]*$" {
|
||||||
|
if (seen[$1])
|
||||||
|
printf("Duplicate basename: %s\n", $1)
|
||||||
|
seen[$1] = $1
|
||||||
|
printf("%s %s\n", $1, $1)
|
||||||
|
next
|
||||||
|
}
|
||||||
|
{
|
||||||
|
if (index($1, "/")) {
|
||||||
|
dir = $1
|
||||||
|
sub("/[^/]*$", "/", dir)
|
||||||
|
} else {
|
||||||
|
dir = ""
|
||||||
|
}
|
||||||
|
base = $1
|
||||||
|
sub("^core/", "", base)
|
||||||
|
gsub("/", "_", base)
|
||||||
|
if (seen[base]) {
|
||||||
|
printf("Duplicate basename: %s %s\n", seen[base], $1) \
|
||||||
|
> "/dev/stderr"
|
||||||
|
duplicates = 1
|
||||||
|
}
|
||||||
|
if (duplicates)
|
||||||
|
next
|
||||||
|
seen[base] = $1
|
||||||
|
printf("%s %s\n", $1, dir "nouveau_" base)
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
if (duplicates) {
|
||||||
|
printf("Time to rewite me!\n") > "/dev/stderr"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
' >> "$filemap"
|
||||||
|
|
||||||
|
while read from to; do
|
||||||
|
if [ "x$from" != "x$to" ]; then
|
||||||
|
mv -f -- "$from" "$to"
|
||||||
|
fi
|
||||||
|
# Probably not necessary -- Linux tends not to have RCS ids --
|
||||||
|
# but a precaution out of paranoia.
|
||||||
|
cleantags "$to"
|
||||||
|
case $to in
|
||||||
|
*.c)
|
||||||
|
awk '
|
||||||
|
BEGIN {
|
||||||
|
done = 0
|
||||||
|
printf("/*\t%c%s%c\t*/\n\n", "$","NetBSD","$")
|
||||||
|
}
|
||||||
|
/^#include/ && !done {
|
||||||
|
printf("#include <sys/cdefs.h>\n")
|
||||||
|
printf("__KERNEL_RCSID(0, \"%c%s%c\");\n",
|
||||||
|
"$","NetBSD","$")
|
||||||
|
printf("\n")
|
||||||
|
done = 1
|
||||||
|
}
|
||||||
|
{
|
||||||
|
print
|
||||||
|
}
|
||||||
|
' < "$to" > "$to".tmp
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
mv -f -- "$to".tmp "$to"
|
||||||
|
printf 'file\t%s\t%s\n' "$nouveau_top/$to" "$nouveau_flag"
|
||||||
|
done < "$filemap" | sort
|
||||||
|
|
||||||
|
# We sort the output again at the end because we renamed some files but
|
||||||
|
# left $TOP/nouveau_* unchanged, so their sort order relative to the
|
||||||
|
# ones that got renamed may have changed.
|
Loading…
Reference in New Issue