-#!/bin/sh
+#!/bin/bash
#
# Generic/Simple configure script
#
# System setup
[ -z "$PLATFORM" ] && PLATFORM=$(uname -s | tr "[:upper:]" "[:lower:]")
[ -z "$CPU" ] && CPU=generic
-[ -z "$ARCH" ] && ARCH=`uname -m`
+[ -z "$ARCH" ] && ARCH=$(uname -m)
[ -z "$OSENV" ] && OSENV=posix
[ -z "$PYTHON" ] && PYTHON=python
TAB=" %-50s"
# Text conversion
-function toupper
+toupper ()
{
echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
}
# Terminate
-function die
+die ()
{
echo >&2 "ERROR: $@"
exit 1
# ###########################################################################
# Enable/Disable option
-function _enable
+_enable ()
{
local opt=$1 val=$2 ignore=$3 row= k= v=
for row in ${OPTIONS[*]}; do
k=${row%:*}
- [ "$k" == "$opt" ] || continue
+ [ "$k" = "$opt" ] || continue
v=${row#*:}
if [ $v != "$val" ]; then
OPTIONS=(${OPTIONS[@]//$row/$k:$val})
}
# Enable option
-function enable
+enable ()
{
_enable $1 yes $2
}
# Disable option
-function disable
+disable ()
{
_enable $1 no $2
}
# Enable package
-function enable_pkg
+enable_pkg ()
{
local opt=$1 row= k= v=
for row in ${PACKAGES[*]}; do
- [ "$row" == "$opt" ] && return
+ [ "$row" = "$opt" ] && return
done
PACKAGES=(${PACKAGES[@]} $opt)
}
# Get enabled state
-function _enabled
+_enabled ()
{
local opt=$1 row= k=
for row in ${OPTIONS[*]}; do
k=${row%:*}
- [ "$k" == "$opt" ] || continue
+ [ "$k" = "$opt" ] || continue
echo ${row#*:}
return
done
}
# Check if enabled
-function enabled
+enabled ()
{
local val=$(_enabled $1)
- [ "$val" == "yes" ] && return 0 || return 1
+ [ "$val" = "yes" ] && return 0 || return 1
}
# Check if disabled
-function disabled
+disabled ()
{
local val=$(_enabled $1)
- [ "$val" == "no" ] && return 0 || return 1
+ [ "$val" = "no" ] && return 0 || return 1
}
# Check if enabled (or auto)
-function enabled_or_auto
+enabled_or_auto ()
{
local val=$(_enabled $1)
- [ "$val" == "yes" -o "$val" == "auto" ] && return 0 || return 1
+ [ "$val" = "yes" -o "$val" = "auto" ] && return 0 || return 1
}
# Check if disabled (or auto)
-function disabled_or_auto
+disabled_or_auto ()
{
local val=$(_enabled $1)
- [ "$val" == "no" -o "$val" == "auto" ] && return 0 || return 1
+ [ "$val" = "no" -o "$val" = "auto" ] && return 0 || return 1
}
# ###########################################################################
# ###########################################################################
# Show help
-function show_help
+show_help ()
{
local opt= val= fmt="%-30s"
echo "Usage: $0 [options]"
for opt in ${OPTIONS[*]}; do
val=${opt#*:}
opt=${opt%:*}
- if [ "$val" == "yes" ]; then
+ if [ "$val" = "yes" ]; then
printf " $fmt Disable ${opt}\n" "--disable-${opt}"
- elif [ "$val" == "no" ]; then
+ elif [ "$val" = "no" ]; then
printf " $fmt Enable ${opt}\n" "--enable-${opt}"
else
printf " $fmt Disable ${opt}\n" "--disable-${opt}"
}
# Process command line
-function parse_args
+parse_args ()
{
local opt= val=
for opt do
eval "$opt=$val"
;;
cc|cflags|arch|cpu|platform|python)
- eval "`toupper $opt`=$val"
+ eval "$(toupper $opt)=$val"
;;
enable-*)
opt=${opt#*-}
# ###########################################################################
# Check package
-function check_pkg
+check_pkg ()
{
local pkg=$1; shift
local ver=$*
# ###########################################################################
# Check compiler
-function check_cc
+check_cc ()
{
local hdr=$1
local opt=$2
#endif
}
EOF
- $CC $CFLAGS $LDFLAGS $TMPDIR/$$.c -o $TMPDIR/$$.bin $opt &> /dev/null
+ $CC $CFLAGS $LDFLAGS $TMPDIR/$$.c -o $TMPDIR/$$.bin $opt 2>&1 /dev/null
RET=$?
rm -f $TMPDIR/$$.{c,bin}
return $RET
}
# Check compiler header
-function check_cc_header
+check_cc_header ()
{
local hdr=$1
local nam=$2
}
# Check some compiler snippet
-function check_cc_snippet
+check_cc_snippet ()
{
local nam=$1
local snp=$2
}
# Check compiler option
-function check_cc_option
+check_cc_option ()
{
local opt=$1
local nam=$2
}
# Check compiler library
-function check_cc_lib
+check_cc_lib ()
{
local opt=$1
local nam=$2
# ###########################################################################
# Check python
-function check_py
+check_py ()
{
local hdr=$1
cat >$TMPDIR/$$.py <<EOF
$hdr
EOF
- $PYTHON $TMPDIR/$$.py &> /dev/null
+ $PYTHON $TMPDIR/$$.py 2>&1 /dev/null
RET=$?
rm -f $TMPDIR/$$.py
return $RET
}
# Check python import
-function check_py_import
+check_py_import ()
{
local hdr=$1
local nam=$2
# Binary checks
# ###########################################################################
-function check_bin
+check_bin ()
{
local bin=$1
local nam=$2
# ###########################################################################
# Print config
-function print_config
+print_config ()
{
local pkg= fmt=" %-40s %s\n"
for opt in ${OPTIONS[*]}; do
k=${opt%:*}
v=${opt#*:}
- if [ "$v" == "yes" ]; then
+ if [ "$v" = "yes" ]; then
printf "$fmt" "$k" "yes"
else
printf "$fmt" "$k" "no"
}
# Write configuration
-function write_config
+write_config ()
{
local pkg= opt= k= v=
# Create build directory
mkdir -p "${BUILDDIR}"
- BUILDDIR=`cd "${BUILDDIR}" && pwd`
+ BUILDDIR=$(cd "${BUILDDIR}" && pwd)
# Create make include
CONFIG_MK=${ROOTDIR}/.config.mk
for row in ${OPTIONS[*]}; do
k=$(toupper ${row%:*})
v=${row#*:}
- if [ "$v" == "yes" ]; then
+ if [ "$v" = "yes" ]; then
cat >>"${CONFIG_H}" <<EOF
#define ENABLE_${k} 1
#define CONFIG_${k} 1