push
This commit is contained in:
229
scripts/configure.sh
Normal file
229
scripts/configure.sh
Normal file
@@ -0,0 +1,229 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright 2005 Timo Hirvonen
|
||||
#
|
||||
# This file is licensed under the GPLv2.
|
||||
|
||||
. scripts/utils.sh || exit 1
|
||||
. scripts/checks.sh || exit 1
|
||||
|
||||
# Usage: parse_command_line "$@"
|
||||
# USAGE string must be defined in configure (used for --help)
|
||||
parse_command_line()
|
||||
{
|
||||
while test $# -gt 0
|
||||
do
|
||||
case $1 in
|
||||
--help)
|
||||
show_usage
|
||||
;;
|
||||
--prefix=*|--bindir=*|--datadir=*|--libdir=*|--mandir=*|--docdir=*)
|
||||
# aliases for compatibility with common autoconf options
|
||||
# https://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Installation-Directory-Variables.html
|
||||
_var=`echo "$1" | sed "s/--//" | sed "s/=.*//"`
|
||||
_val=`echo "$1" | sed "s/--${_var}=//"`
|
||||
set_var "$_var" "$_val"
|
||||
;;
|
||||
-f)
|
||||
shift
|
||||
test $# -eq 0 && die "-f requires an argument"
|
||||
. "$1"
|
||||
;;
|
||||
-*)
|
||||
die "unrecognized option \`$1'"
|
||||
;;
|
||||
*=*)
|
||||
_var=`echo "$1" | sed "s/=.*//"`
|
||||
_val=`echo "$1" | sed "s/${_var}=//"`
|
||||
set_var "$_var" "$_val"
|
||||
;;
|
||||
*)
|
||||
die "unrecognized argument \`$1'"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
}
|
||||
|
||||
# check function [variable]
|
||||
#
|
||||
# Example:
|
||||
# check check_cc
|
||||
# check check_vorbis CONFIG_VORBIS
|
||||
check()
|
||||
{
|
||||
argc check $# 1 2
|
||||
if test $# -eq 1
|
||||
then
|
||||
$1 || die "configure failed."
|
||||
return
|
||||
fi
|
||||
|
||||
# optional feature
|
||||
case `get_var $2` in
|
||||
n)
|
||||
;;
|
||||
y)
|
||||
$1 || die "configure failed."
|
||||
;;
|
||||
a|'')
|
||||
if $1
|
||||
then
|
||||
set_var $2 y
|
||||
else
|
||||
set_var $2 n
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
die "invalid value for $2. 'y', 'n', 'a' or '' expected"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Set and register variable to be added to config.mk
|
||||
#
|
||||
# @name name of the variable
|
||||
# @value value of the variable
|
||||
makefile_var()
|
||||
{
|
||||
argc makefile_var $# 2 2
|
||||
set_var $1 "$2"
|
||||
makefile_vars $1
|
||||
}
|
||||
|
||||
# Register variables to be added to config.mk
|
||||
makefile_vars()
|
||||
{
|
||||
makefile_variables="$makefile_variables $*"
|
||||
}
|
||||
|
||||
# generate config.mk
|
||||
generate_config_mk()
|
||||
{
|
||||
CFLAGS="$CFLAGS $EXTRA_CFLAGS"
|
||||
CXXFLAGS="$CXXFLAGS $EXTRA_CXXFLAGS"
|
||||
if test -z "$GINSTALL"
|
||||
then
|
||||
GINSTALL=`path_find ginstall`
|
||||
test "$GINSTALL" || GINSTALL=install
|
||||
fi
|
||||
# $PWD is useless!
|
||||
topdir=`pwd`
|
||||
makefile_vars GINSTALL topdir
|
||||
|
||||
__tmp=`tmp_file config.mk`
|
||||
for __i in $makefile_variables
|
||||
do
|
||||
echo "$__i = `get_var $__i`"
|
||||
done > $__tmp
|
||||
update_file $__tmp config.mk
|
||||
}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Config header generation
|
||||
|
||||
# Simple interface
|
||||
#
|
||||
# Guesses variable types:
|
||||
# y or n -> bool
|
||||
# [0-9]+ -> int
|
||||
# anything else -> str
|
||||
#
|
||||
# Example:
|
||||
# CONFIG_FOO=y # bool
|
||||
# VERSION=2.0.1 # string
|
||||
# DEBUG=1 # int
|
||||
# config_header config.h CONFIG_FOO VERSION DEBUG
|
||||
config_header()
|
||||
{
|
||||
argc config_header $# 2
|
||||
config_header_begin "$1"
|
||||
shift
|
||||
while test $# -gt 0
|
||||
do
|
||||
__var=`get_var $1`
|
||||
case "$__var" in
|
||||
[yn])
|
||||
config_bool $1
|
||||
;;
|
||||
*)
|
||||
if test "$__var" && test "$__var" = "`echo $__var | sed 's/[^0-9]//g'`"
|
||||
then
|
||||
config_int $1
|
||||
else
|
||||
config_str $1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
config_header_end
|
||||
}
|
||||
|
||||
# Low-level interface
|
||||
#
|
||||
# Example:
|
||||
# config_header_begin config.h
|
||||
# config_str PACKAGE VERSION
|
||||
# config_bool CONFIG_ALSA
|
||||
# config_header_end
|
||||
|
||||
config_header_begin()
|
||||
{
|
||||
argc config_header_begin $# 1 1
|
||||
config_header_file="$1"
|
||||
config_header_tmp=`tmp_file config_header`
|
||||
|
||||
__def=`echo $config_header_file | to_upper | sed 's/[-\.\/]/_/g'`
|
||||
cat <<EOF > "$config_header_tmp"
|
||||
#ifndef $__def
|
||||
#define $__def
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
config_str()
|
||||
{
|
||||
while test $# -gt 0
|
||||
do
|
||||
echo "#define $1 \"`get_var $1`\"" >> "$config_header_tmp"
|
||||
shift
|
||||
done
|
||||
}
|
||||
|
||||
config_int()
|
||||
{
|
||||
while test $# -gt 0
|
||||
do
|
||||
echo "#define $1 `get_var $1`" >> "$config_header_tmp"
|
||||
shift
|
||||
done
|
||||
}
|
||||
|
||||
config_bool()
|
||||
{
|
||||
while test $# -gt 0
|
||||
do
|
||||
case "`get_var $1`" in
|
||||
n)
|
||||
echo "/* #define $1 */" >> "$config_header_tmp"
|
||||
;;
|
||||
y)
|
||||
echo "#define $1 1" >> "$config_header_tmp"
|
||||
;;
|
||||
*)
|
||||
die "bool '$1' has invalid value '`get_var $1`'"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
}
|
||||
|
||||
config_header_end()
|
||||
{
|
||||
argc config_header_end $# 0 0
|
||||
echo "" >> "$config_header_tmp"
|
||||
echo "#endif" >> "$config_header_tmp"
|
||||
mkdir -p `dirname "$config_header_file"`
|
||||
update_file "$config_header_tmp" "$config_header_file"
|
||||
}
|
||||
Reference in New Issue
Block a user