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