xref: /OK3568_Linux_fs/external/libmali/scripts/parse_name.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/sh
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunPRINT_GPU=false
4*4882a593SmuzhiyunPRINT_VERSION=false
5*4882a593SmuzhiyunPRINT_SUBVERSION=false
6*4882a593SmuzhiyunPRINT_PLATFORM=false
7*4882a593SmuzhiyunPRINT_FORMAT=false
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunPLATFORMS="only-cl|without-cl|vulkan|dummy|x11|wayland|gbm"
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun# Normalize platform variable
12*4882a593Smuzhiyunnormalize_platform() {
13*4882a593Smuzhiyun	PLATFORM="$@"
14*4882a593Smuzhiyun	for platform in $(echo $PLATFORMS|xargs -d'|'); do
15*4882a593Smuzhiyun		echo $PLATFORM|grep -ow $platform|uniq
16*4882a593Smuzhiyun	done
17*4882a593Smuzhiyun}
18*4882a593Smuzhiyun
19*4882a593Smuzhiyunparse_name() {
20*4882a593Smuzhiyun	FILE="$@"
21*4882a593Smuzhiyun	LIB=${FILE##*/}
22*4882a593Smuzhiyun	LIB=${LIB%.so}
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun	[ -z "$LIB" ] && return
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun	GPU=$(echo $LIB|cut -sd'-' -f'2,3')
27*4882a593Smuzhiyun	VERSION=$(echo $LIB|cut -sd'-' -f4)
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun	PLATFORM=$(echo $LIB|grep -owE "$PLATFORMS"|paste -sd'-')
30*4882a593Smuzhiyun	[ -z "$PLATFORM" ] && PLATFORM=x11
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun	SUBVERSION=$(echo ${LIB%-$PLATFORM}|cut -sd'-' -f'5-')
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun	# Fixup GBM platform
35*4882a593Smuzhiyun	if readelf -s "$FILE" 2>/dev/null | grep -wq gbm_create_device; then
36*4882a593Smuzhiyun		PLATFORM=${PLATFORM}-gbm
37*4882a593Smuzhiyun	fi
38*4882a593Smuzhiyun	PLATFORM=$(normalize_platform $PLATFORM|paste -sd'-')
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun	if $PRINT_GPU;then
41*4882a593Smuzhiyun		echo $GPU
42*4882a593Smuzhiyun	elif $PRINT_VERSION;then
43*4882a593Smuzhiyun		echo $VERSION
44*4882a593Smuzhiyun	elif $PRINT_SUBVERSION;then
45*4882a593Smuzhiyun		echo $SUBVERSION
46*4882a593Smuzhiyun	elif $PRINT_PLATFORM;then
47*4882a593Smuzhiyun		echo $PLATFORM
48*4882a593Smuzhiyun	elif $PRINT_FORMAT;then
49*4882a593Smuzhiyun		echo libmali-$GPU-$VERSION${SUBVERSION:+-$SUBVERSION}-$PLATFORM.so
50*4882a593Smuzhiyun	else
51*4882a593Smuzhiyun		echo name=$LIB
52*4882a593Smuzhiyun		echo gpu=$GPU
53*4882a593Smuzhiyun		echo version=$VERSION
54*4882a593Smuzhiyun		echo subversion=$SUBVERSION
55*4882a593Smuzhiyun		echo platform=$PLATFORM
56*4882a593Smuzhiyun	fi
57*4882a593Smuzhiyun}
58*4882a593Smuzhiyun
59*4882a593Smuzhiyuncase "$1" in
60*4882a593Smuzhiyun	--gpu)
61*4882a593Smuzhiyun		PRINT_GPU=true
62*4882a593Smuzhiyun		shift
63*4882a593Smuzhiyun		;;
64*4882a593Smuzhiyun	--version)
65*4882a593Smuzhiyun		PRINT_VERSION=true
66*4882a593Smuzhiyun		shift
67*4882a593Smuzhiyun		;;
68*4882a593Smuzhiyun	--subversion)
69*4882a593Smuzhiyun		PRINT_SUBVERSION=true
70*4882a593Smuzhiyun		shift
71*4882a593Smuzhiyun		;;
72*4882a593Smuzhiyun	--platform)
73*4882a593Smuzhiyun		PRINT_PLATFORM=true
74*4882a593Smuzhiyun		shift
75*4882a593Smuzhiyun		;;
76*4882a593Smuzhiyun	--format)
77*4882a593Smuzhiyun		PRINT_FORMAT=true
78*4882a593Smuzhiyun		shift
79*4882a593Smuzhiyun		;;
80*4882a593Smuzhiyunesac
81*4882a593Smuzhiyun
82*4882a593Smuzhiyunfor lib in "$@";do
83*4882a593Smuzhiyun	parse_name $lib
84*4882a593Smuzhiyundone
85*4882a593Smuzhiyun
86*4882a593Smuzhiyunexit 0
87