Refactor for mixed platforms

Major changes:
1/ Allow mixed platforms, e.g. x11-wayland-gbm.
2/ Move extra features, e.g. without-cl, from subversion to platform.
3/ Rename all libraries with GBM API to libmali-*-gbm.so

Change-Id: I9364f8298080788b41c5f3a3cf69aec9a2859ff5
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
This commit is contained in:
Jeffy Chen
2022-07-14 12:50:55 +08:00
parent c30d96ae67
commit 6e1c5cbcf5
44 changed files with 116 additions and 74 deletions

View File

@@ -4,18 +4,21 @@ ARCH=${1:-aarch64}
GPU=${2:-midgard-t86x}
VERSION=${3:-r18p0}
SUBVERSION=${4:-none}
PLATFORM=${5:-x11}
PLATFORM=${5:-gbm}
OPTIMIZE=${6:-O3}
[ ${ARCH} = 'armv7l' -o ${ARCH} = 'armhf' -o ${ARCH} = 'arm32' ] && ARCH=arm
[ ${ARCH} = 'armv8' -o ${ARCH} = 'arm64' ] && ARCH=aarch64
# Normalize platform variable
PLATFORM=$(scripts/parse_name.sh --platform $PLATFORM)
if [ ${SUBVERSION} = 'none' ]; then
LIB="libmali-${GPU}-${VERSION}-${PLATFORM}.so"
LIB="libmali-${GPU}-${VERSION}-${PLATFORM}"
elif [ ${SUBVERSION} = 'all' ]; then
LIB="libmali-${GPU}-${VERSION}*-${PLATFORM}.so"
LIB="libmali-${GPU}-${VERSION}\(-[rg][0-9]+p[0-9]+\)*-${PLATFORM}"
else
LIB="libmali-${GPU}-${VERSION}-${SUBVERSION}-${PLATFORM}.so"
LIB="libmali-${GPU}-${VERSION}-${SUBVERSION}-${PLATFORM}"
fi
DIR=lib
@@ -25,6 +28,13 @@ case ${OPTIMIZE} in
;;
esac
find ${DIR}/${ARCH}* -name ${LIB}
LIBS=$(find ${DIR}/${ARCH}* -regex ".*${LIB}.so")
if [ -z "$LIBS" ]; then
LIBS=$(find ${DIR}/${ARCH}* -regex ".*${LIB}-gbm.so")
[ -n "$LIBS" ] && echo "Fallback to GBM version!" >&2
fi
echo $LIBS
exit 0

View File

@@ -23,10 +23,8 @@ for lib in $LIBS; do
readelf -s $lib 2>&1 | grep -q Warning && \
scripts/fixup_dynsym.py $lib&
# Rename default libs to -x11
echo $lib | grep -qE "\-[rg].p.\.so" || continue
[ ! -L $lib ] && mv $lib ${lib%.so}-x11.so
rm $lib
# Normalize library name
mv $lib "${lib%/*}/$(scripts/parse_name.sh --format $lib)" 2>/dev/null
done
# Update debian control and rules

View File

@@ -4,19 +4,38 @@ PRINT_GPU=false
PRINT_VERSION=false
PRINT_SUBVERSION=false
PRINT_PLATFORM=false
PRINT_FORMAT=false
PLATFORMS="gbm|wayland|x11|only-cl|dummy"
PLATFORMS="only-cl|without-cl|dummy|x11|wayland|gbm"
# Normalize platform variable
normalize_platform() {
PLATFORM="$@"
for platform in $(echo $PLATFORMS|xargs -d'|'); do
echo $PLATFORM|grep -ow $platform|uniq
done
}
parse_name() {
[ -z "$1" ] && return
FILE="$@"
LIB=${FILE##*/}
LIB=${LIB%.so}
GPU=$(echo $1|cut -d'-' -f'2,3')
VERSION=$(echo $1|cut -d'-' -f4)
[ -z "$LIB" ] && return
PLATFORM=$(echo $1|grep -owE "$PLATFORMS"|xargs -n 1|tail -1)
GPU=$(echo $LIB|cut -sd'-' -f'2,3')
VERSION=$(echo $LIB|cut -sd'-' -f4)
PLATFORM=$(echo $LIB|grep -owE "$PLATFORMS"|paste -sd'-')
[ -z "$PLATFORM" ] && PLATFORM=x11
SUBVERSION=$(echo ${1%-$PLATFORM}|cut -d'-' -f'5-')
SUBVERSION=$(echo ${LIB%-$PLATFORM}|cut -sd'-' -f'5-')
# Fixup GBM platform
if readelf -s "$FILE" 2>/dev/null | grep -wq gbm_create_device; then
PLATFORM=${PLATFORM}-gbm
fi
PLATFORM=$(normalize_platform $PLATFORM|paste -sd'-')
if $PRINT_GPU;then
echo $GPU
@@ -26,8 +45,10 @@ parse_name() {
echo $SUBVERSION
elif $PRINT_PLATFORM;then
echo $PLATFORM
elif $PRINT_FORMAT;then
echo libmali-$GPU-$VERSION${SUBVERSION:+-$SUBVERSION}-$PLATFORM.so
else
echo name=$1
echo name=$LIB
echo gpu=$GPU
echo version=$VERSION
echo subversion=$SUBVERSION
@@ -52,10 +73,14 @@ case "$1" in
PRINT_PLATFORM=true
shift
;;
--format)
PRINT_FORMAT=true
shift
;;
esac
for lib in "$@";do
parse_name $(echo $lib|grep -o "libmali-[^\.]*")
parse_name $lib
done
exit 0