xref: /netbsd-src/sys/external/bsd/drm2/amdgpu/amdgpu2netbsd (revision 3f4e9ade405e5ed6e9c71e82f4ca6cc89bd7b698)
110f82c92Sriastradh#!/bin/sh
210f82c92Sriastradh
3*3f4e9adeSriastradh#	$NetBSD: amdgpu2netbsd,v 1.5 2024/07/02 20:08:51 riastradh Exp $
410f82c92Sriastradh#
510f82c92Sriastradh# $ /path/to/amdgpu2netbsd > /path/to/files.amdgpu.new
610f82c92Sriastradh#
7*3f4e9adeSriastradh# Run from the top-level dist/drm/amd/amdgpu source directory, ideally
8a81e94c5Sriastradh# before import.
910f82c92Sriastradh
1010f82c92Sriastradhset -Ceu
1110f82c92Sriastradh
12cfe31299Sriastradh: ${GMAKE:=gmake}
13a81e94c5Sriastradh: ${MV:=mv}
14a81e94c5Sriastradh
15a81e94c5Sriastradh# Location of amdgpu sources relative to $NETBSDSOURCEDIR.
1610f82c92Sriastradhamdgpu_top=external/bsd/drm2/dist/drm/amd/amdgpu
1710f82c92Sriastradh
1810f82c92Sriastradh# config(5) flag for the amdgpu driver.
1910f82c92Sriastradhamdgpu_flag=amdgpu
2010f82c92Sriastradh
21cfe31299Sriastradh{
22cfe31299Sriastradh	printf 'show-amdgpu-y:\n'
23cfe31299Sriastradh	printf '\t@echo $(amdgpu-y)\n'
24cfe31299Sriastradh	printf 'include Makefile\n'
25cfe31299Sriastradh} | env \
2610f82c92Sriastradh	env CONFIG_ACPI=y \
27*3f4e9adeSriastradh	env CONFIG_COMPAT=y \
28cfe31299Sriastradh	env CONFIG_DRM_AMDGPU=y \
295200bf37Sriastradh	env CONFIG_DRM_AMDGPU_CIK=y \
30cfe31299Sriastradh	env CONFIG_DRM_AMDGPU_SI=y \
31cfe31299Sriastradh	env CONFIG_DRM_AMD_ACP=y \
32cfe31299Sriastradh	env CONFIG_DRM_AMD_DC=y \
33*3f4e9adeSriastradh	env CONFIG_DRM_AMD_DC_FP=y \
34cfe31299Sriastradh	env CONFIG_DRM_AMD_DC_HDCP=y \
35*3f4e9adeSriastradh	env CONFIG_DRM_AMD_DC_SI=y \
36*3f4e9adeSriastradh	env CONFIG_HMM_MIRROR=y \
37*3f4e9adeSriastradh	env CONFIG_HSA_AMD=y \
38*3f4e9adeSriastradh	env CONFIG_HSA_AMD_SVM=y \
39*3f4e9adeSriastradh	env CONFIG_PERF_EVENTS=y \
40*3f4e9adeSriastradh	env CONFIG_VGA_SWITCHEROO=y \
41cfe31299Sriastradh	env srctree="`pwd`" \
4210f82c92Sriastradh	env src=. \
43cfe31299Sriastradh	${GMAKE} -f - -s show-amdgpu-y \
4410f82c92Sriastradh| tr ' ' '\n' \
4510f82c92Sriastradh| grep -v '^$' \
4610f82c92Sriastradh| sed -e 's,\.o$,.c,' \
4710f82c92Sriastradh| sort -u \
48a81e94c5Sriastradh| awk '
49a81e94c5Sriastradh	BEGIN {
50a81e94c5Sriastradh		duplicates = 0
51a81e94c5Sriastradh	}
52a81e94c5Sriastradh	{
53a81e94c5Sriastradh		if (index($1, "/")) {
54a81e94c5Sriastradh			dir = $1
55a81e94c5Sriastradh			sub("/[^/]*$", "/", dir)
56a81e94c5Sriastradh			base = $1
57a81e94c5Sriastradh			sub("^.*/", "", base)
58a81e94c5Sriastradh		} else {
59a81e94c5Sriastradh			dir = ""
60a81e94c5Sriastradh			base = $1
61a81e94c5Sriastradh		}
62a81e94c5Sriastradh		fqbase = (base ~ "^amdgpu_" ? "" : "amdgpu_") base
63a81e94c5Sriastradh		if (seen[fqbase]) {
64a81e94c5Sriastradh			printf("Duplicate basename: %s %s\n", fqbase,
65a81e94c5Sriastradh			    seen[fqbase]) >"/dev/stderr"
66a81e94c5Sriastradh			duplicates = 1
67a81e94c5Sriastradh		}
68a81e94c5Sriastradh		if (duplicates)
69a81e94c5Sriastradh			next
70a81e94c5Sriastradh		printf("%s %s\n", $1, dir fqbase)
71a81e94c5Sriastradh	}
72a81e94c5Sriastradh	END {
73a81e94c5Sriastradh		if (duplicates) {
74a81e94c5Sriastradh			printf("Time to rewite me!\n") > "/dev/stderr"
75a81e94c5Sriastradh			exit 1
76a81e94c5Sriastradh		}
77a81e94c5Sriastradh	}
78a81e94c5Sriastradh' \
79a81e94c5Sriastradh| while read from to; do
805200bf37Sriastradh	# If the move already happened, that's fine: the makefile
815200bf37Sriastradh	# detects duplicates.
825200bf37Sriastradh	if [ "x$from" != "x$to" -a \! -f "$to" ]; then
83a81e94c5Sriastradh		${MV} -f -- "$from" "$to"
84a81e94c5Sriastradh	fi
85a81e94c5Sriastradh	printf 'file\t%s\t%s\n' "$amdgpu_top/$to" "$amdgpu_flag"
86a81e94c5Sriastradhdone \
87a81e94c5Sriastradh| sort -u
88