xref: /netbsd-src/sys/external/bsd/drm2/amdgpu/amdgpu2netbsd (revision 3f4e9ade405e5ed6e9c71e82f4ca6cc89bd7b698)
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
10set -Ceu
11
12: ${GMAKE:=gmake}
13: ${MV:=mv}
14
15# Location of amdgpu sources relative to $NETBSDSOURCEDIR.
16amdgpu_top=external/bsd/drm2/dist/drm/amd/amdgpu
17
18# config(5) flag for the amdgpu driver.
19amdgpu_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"
86done \
87| sort -u
88