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