mirror of
https://github.com/libretro/RetroArch
synced 2025-01-30 21:32:45 +00:00
b67bb87c8d
This allows a user to use --datarootdir=PATH to configure the share directory used for pixmaps, desktop files, man pages and assets. By default this will be '/usr/local/share'. Assets and man page install paths can still be configured with: --with-man_dir=PATH and --with-assets_dir=PATH Some operating systems like Haiku use unconventional install paths and this should allow them to configure their build correctly.
116 lines
2.8 KiB
Bash
116 lines
2.8 KiB
Bash
die() # $1 = exit code, use : to not exit when printing warnings $@ = exit or warning messages
|
|
{
|
|
ret="$1"
|
|
shift 1
|
|
printf %s\\n "$@" >&2
|
|
case "$ret" in
|
|
: ) return 0 ;;
|
|
* ) exit "$ret" ;;
|
|
esac
|
|
}
|
|
|
|
print_help_option() # $1 = option $@ = description
|
|
{
|
|
_opt="$1"
|
|
shift 1
|
|
printf ' %-26s %s\n' "$_opt" "$@"
|
|
}
|
|
|
|
print_help()
|
|
{ cat << EOF
|
|
====================
|
|
Quickbuild script
|
|
====================
|
|
Package: $PACKAGE_NAME
|
|
|
|
General environment variables:
|
|
CC: C compiler
|
|
CFLAGS: C compiler flags
|
|
CXX: C++ compiler
|
|
CXXFLAGS: C++ compiler flags
|
|
LDFLAGS: Linker flags
|
|
|
|
General options:
|
|
EOF
|
|
print_help_option "--prefix=PATH" "Install path prefix"
|
|
print_help_option "--global-config-dir=PATH" "System wide config file prefix"
|
|
print_help_option "--datarootdir=PATH" "Read-only data install directory"
|
|
print_help_option "--build=BUILD" "The build system (no-op)"
|
|
print_help_option "--host=HOST" "Cross-compile with HOST-gcc instead of gcc"
|
|
print_help_option "--help" "Show this help"
|
|
|
|
echo ""
|
|
echo "Custom options:"
|
|
|
|
while read -r VAR COMMENT; do
|
|
TMPVAR="${VAR%=*}"
|
|
COMMENT="${COMMENT#*#}"
|
|
VAL="${VAR#*=}"
|
|
VAR="$(echo "${TMPVAR#HAVE_}" | tr '[:upper:]' '[:lower:]')"
|
|
case "$VAR" in
|
|
'c89_'*) continue;;
|
|
*)
|
|
case "$VAL" in
|
|
'yes'*)
|
|
print_help_option "--disable-$VAR" "Disable $COMMENT";;
|
|
'no'*)
|
|
print_help_option "--enable-$VAR" "Enable $COMMENT";;
|
|
'auto'*)
|
|
print_help_option "--enable-$VAR" "Enable $COMMENT"
|
|
print_help_option "--disable-$VAR" "Disable $COMMENT";;
|
|
*)
|
|
print_help_option "--with-$VAR" "Config $COMMENT";;
|
|
esac
|
|
esac
|
|
done < 'qb/config.params.sh'
|
|
}
|
|
|
|
opt_exists() # $opt is returned if exists in OPTS
|
|
{ opt="$(echo "$1" | tr '[:lower:]' '[:upper:]')"
|
|
err="$2"
|
|
eval "set -- $OPTS"
|
|
for OPT do [ "$opt" = "$OPT" ] && return; done
|
|
die 1 "Unknown option $err"
|
|
}
|
|
|
|
parse_input() # Parse stuff :V
|
|
{ OPTS=; while read -r VAR _; do
|
|
TMPVAR="${VAR%=*}"
|
|
OPTS="$OPTS ${TMPVAR##HAVE_}"
|
|
done < 'qb/config.params.sh'
|
|
#OPTS contains all available options in config.params.sh - used to speedup
|
|
#things in opt_exists()
|
|
|
|
while [ "$1" ]; do
|
|
case "$1" in
|
|
--prefix=*) PREFIX=${1##--prefix=};;
|
|
--global-config-dir=*) GLOBAL_CONFIG_DIR=${1##--global-config-dir=};;
|
|
--build=*) BUILD="${1#*=}";;
|
|
--datarootdir=*) SHARE_DIR="${1#*=}";;
|
|
--host=*) CROSS_COMPILE=${1##--host=}-;;
|
|
--enable-*)
|
|
opt_exists "${1##--enable-}" "$1"
|
|
eval "HAVE_$opt=yes"
|
|
;;
|
|
--disable-*)
|
|
opt_exists "${1##--disable-}" "$1"
|
|
eval "HAVE_$opt=no"
|
|
eval "HAVE_NO_$opt=yes"
|
|
;;
|
|
--with-*)
|
|
arg="${1##--with-}"
|
|
val="${arg##*=}"
|
|
opt_exists "${arg%%=*}" "$1"
|
|
eval "$opt=\"$val\""
|
|
;;
|
|
-h|--help) print_help; exit 0;;
|
|
*) die 1 "Unknown option $1";;
|
|
esac
|
|
shift
|
|
done
|
|
}
|
|
|
|
. qb/config.params.sh
|
|
|
|
parse_input "$@"
|