libretro-super/script-modules/module_base.sh

77 lines
1.5 KiB
Bash

# vim: set ts=3 sw=3 noet ft=sh : bash
register_module() {
mod_type="$1"
mod_name="$2"
shift 2
case "$mod_type" in
core|devkit|player|lutro)
if [ -n "$mod_name" ]; then
build_plats=""
skip_plats=""
while [ -n "$1" ]; do
if [[ "$1" = -* ]]; then
skip_plats="$skip_plats,$1"
else
build_plats="$build_plats,$1"
fi
shift
done
build_plats="${build_plats#,}"
skip_plats="${skip_plats#,}"
eval "libretro_${mod_type}s=\"\$libretro_${mod_type}s $mod_name:${build_plats:=any}:$skip_plats\""
libretro_modules="$libretro_modules $mod_name:$build_plats:$skip_plats"
else
echo "register_module:Trying to register a $mod_type without a name"
exit 1
fi
;;
*)
echo "register_module:Unknown module type \"$mod_type\""
exit 1
;;
esac
}
can_build_module() {
[ -n "$force" ] && return 0
if [[ "$1" != *:*:* ]]; then
# Not in <name>:<build>:<skip> format, assume error
return 1
fi
build_plats="${1#*:}"
build_plats="${build_plats%:*}"
skip_plats="${1##*:}"
if [ "$build_plats" != "any" ]; then
# Module is exclusive to certain platforms
if [[ "$platform" != *${build_plats}* ]]; then
# And this isn't one of them.
return 1
fi
fi
if [[ "$skip_plats" = *${platform}* ]]; then
# Module is disabled on this particular platform
return 1
fi
return 0
}
find_module() {
needle="$1"
shift
for haystack in $@; do
if [[ "$needle" == $haystack:* ]]; then
echo "$needle"
fi
done
}