vmwgfx2netbsd revision 1.1 1 #!/bin/sh
2
3 # $NetBSD: vmwgfx2netbsd,v 1.1 2022/02/17 01:21:03 riastradh Exp $
4 #
5 # $ /path/to/vmwgfx2netbsd > /path/to/files.vmwgfx.new
6 #
7 # Run from the top-level vmwgfx source directory.
8
9 set -Ceu
10
11 : ${MV:=mv}
12
13 # Location of the vmwgfx sources relative to $NETBSDSRCDIR.
14 vmwgfx_top=external/bsd/drm2/dist/drm/vmwgfx
15
16 # config(5) flag for the vmwgfx driver.
17 vmwgfx_flag=vmwgfx
18
19 env CONFIG_ACPI=y \
20 env src=. \
21 make -f Makefile -V '$(vmwgfx-y)' \
22 | tr ' ' '\n' \
23 | grep -v -e '^[[:space:]]*$' \
24 | sed -e 's,\.o$,.c,' \
25 | sort -u \
26 | awk '
27 BEGIN {
28 duplicates = 0
29 }
30 {
31 if (index($1, "/")) {
32 dir = $1
33 sub("/[^/]*$", "/", dir)
34 base = $1
35 sub("^.*/", "", base)
36 } else {
37 dir = ""
38 base = $1
39 }
40 fqbase = (base ~ "^vmwgfx_" ? "" : "vmwgfx_") base
41 if (seen[fqbase]) {
42 printf("Duplicate basename: %s %s\n", fqbase,
43 seen[fqbase]) >"/dev/stderr"
44 duplicates = 1
45 }
46 if (duplicates)
47 next
48 printf("%s %s\n", $1, dir fqbase)
49 }
50 END {
51 if (duplicates) {
52 printf("Time to rewite me!\n") > "/dev/stderr"
53 exit 1
54 }
55 }
56 ' \
57 | while read from to; do
58 # If the move already happened, that's fine: the makefile
59 # detects duplicates.
60 if [ "x$from" != "x$to" -a \! -f "$to" ]; then
61 ${MV} -f -- "$from" "$to"
62 fi
63 printf 'file\t%s\t%s\n' "$vmwgfx_top/$to" "$vmwgfx_flag"
64 done \
65 | sort -u
66