amdgpu2netbsd revision 1.5 1 #!/bin/sh
2
3 # $NetBSD: amdgpu2netbsd,v 1.5 2024/07/02 20:08:51 riastradh Exp $
4 #
5 # $ /path/to/amdgpu2netbsd > /path/to/files.amdgpu.new
6 #
7 # Run from the top-level dist/drm/amd/amdgpu source directory, ideally
8 # before import.
9
10 set -Ceu
11
12 : ${GMAKE:=gmake}
13 : ${MV:=mv}
14
15 # Location of amdgpu sources relative to $NETBSDSOURCEDIR.
16 amdgpu_top=external/bsd/drm2/dist/drm/amd/amdgpu
17
18 # config(5) flag for the amdgpu driver.
19 amdgpu_flag=amdgpu
20
21 {
22 printf 'show-amdgpu-y:\n'
23 printf '\t@echo $(amdgpu-y)\n'
24 printf 'include Makefile\n'
25 } | env \
26 env CONFIG_ACPI=y \
27 env CONFIG_COMPAT=y \
28 env CONFIG_DRM_AMDGPU=y \
29 env CONFIG_DRM_AMDGPU_CIK=y \
30 env CONFIG_DRM_AMDGPU_SI=y \
31 env CONFIG_DRM_AMD_ACP=y \
32 env CONFIG_DRM_AMD_DC=y \
33 env CONFIG_DRM_AMD_DC_FP=y \
34 env CONFIG_DRM_AMD_DC_HDCP=y \
35 env CONFIG_DRM_AMD_DC_SI=y \
36 env CONFIG_HMM_MIRROR=y \
37 env CONFIG_HSA_AMD=y \
38 env CONFIG_HSA_AMD_SVM=y \
39 env CONFIG_PERF_EVENTS=y \
40 env CONFIG_VGA_SWITCHEROO=y \
41 env srctree="`pwd`" \
42 env src=. \
43 ${GMAKE} -f - -s show-amdgpu-y \
44 | tr ' ' '\n' \
45 | grep -v '^$' \
46 | sed -e 's,\.o$,.c,' \
47 | sort -u \
48 | awk '
49 BEGIN {
50 duplicates = 0
51 }
52 {
53 if (index($1, "/")) {
54 dir = $1
55 sub("/[^/]*$", "/", dir)
56 base = $1
57 sub("^.*/", "", base)
58 } else {
59 dir = ""
60 base = $1
61 }
62 fqbase = (base ~ "^amdgpu_" ? "" : "amdgpu_") base
63 if (seen[fqbase]) {
64 printf("Duplicate basename: %s %s\n", fqbase,
65 seen[fqbase]) >"/dev/stderr"
66 duplicates = 1
67 }
68 if (duplicates)
69 next
70 printf("%s %s\n", $1, dir fqbase)
71 }
72 END {
73 if (duplicates) {
74 printf("Time to rewite me!\n") > "/dev/stderr"
75 exit 1
76 }
77 }
78 ' \
79 | while read from to; do
80 # If the move already happened, that's fine: the makefile
81 # detects duplicates.
82 if [ "x$from" != "x$to" -a \! -f "$to" ]; then
83 ${MV} -f -- "$from" "$to"
84 fi
85 printf 'file\t%s\t%s\n' "$amdgpu_top/$to" "$amdgpu_flag"
86 done \
87 | sort -u
88