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