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