Skip to content
Snippets Groups Projects
configure 4.9 KiB
Newer Older
Eric Vidal's avatar
Eric Vidal committed
#!/bin/sh

. package/info

usage () {
cat <<EOF
Usage: $0 [OPTION]... [TARGET]

Defaults for the options are specified in brackets.

Installation directories:
  --prefix=PREFIX                  main installation prefix [/]
  --exec-prefix=EPREFIX            installation prefix for executable files [PREFIX]

Fine tuning of the installation directories:
  --bindir=BINDIR                  user executables [EPREFIX/bin]
  --datarootdir=DATAROOTDIR        read-only architecture-independent data root [PREFIX/share]
  --with-system-service=DIR        66 service intallation directory [DATAROOTDIR/$package_macro_dir/service]
  --with-system-module=DIR         66 module intallation directory [DATAROOTDIR/$package_macro_dir/module]
  --livedir=DIR                    66 default live directory [/run/66]
  --with-user-service-conf=DIR     66 user service configuration directory [.66/conf]
 
Fine tunning of scandir configuration:
  --LOGGER=BOOLEAN                 create an associated logger [!yes]
  --USE_ENVIRONMENT=BOOLEAN        Launch the scandir with a environment [!yes]
  --NOTIFY=BOOLEAN                 use notification [!yes]
  --VERBOSITY_LEVEL=BOOLEAN        level of verbosity [!3]
  
 Use yes or no with lowercase character to set BOOLEAN values.
 
 Empty value is a commented one and not used at all.

 An exclamation mark '!' at the begin of the value unexport the variable
 for the environment after the use. This is avoid to poluate the environment
 with tempory variables. You need to single-quote the options as
 follow:
	./configure --NOTIFY='!yes'

EOF
exit 0
}

# Helper functions

# If your system does not have printf, you can comment this, but it is
# generally not a good idea to use echo.
# See http://www.etalabs.net/sh_tricks.html
echo () {
  IFS=" "
  printf %s\\n "$*"
}

quote () {
  tr '\n' ' ' <<EOF | grep '^[-[:alnum:]_=,./:]* $' >/dev/null 2>&1 && { echo "$1" ; return 0 ; }
$1
EOF
  echo "$1" | sed -e "s/'/'\\\\''/g" -e "1s/^/'/" -e "\$s/\$/'/" -e "s#^'\([-[:alnum:]_,./:]*\)=\(.*\)\$#\1='\2#" -e "s|\*/|* /|g"
}

fail () {
  echo "$*"
  exit 1
}

fnmatch () {
  eval "case \"\$2\" in $1) return 0 ;; *) return 1 ;; esac"
}

cmdexists () {
  type "$1" >/dev/null 2>&1
}

stripdir () {
  while eval "fnmatch '*/' \"\${$1}\"" ; do
    eval "$1=\${$1%/}"
  done
}

testval () {
 if test -z ${1}; then
	return 0 ;
 else
	return 1 ;
 fi
}

# Actual script

prefix=
exec_prefix='$prefix'
bindir='$exec_prefix/bin'
datarootdir='$prefix/share'
service_directory='$datarootdir/$package_macro_dir/service'
module_directory='$datarootdir/$package_macro_dir/module'
livedir='/run/66'
service_userconf='.66/conf'
LOGGER='!yes'
USE_ENVIRONMENT='!yes'
NOTIFY='!yes'
VERBOSITY_LEVEL='!3'

for arg ; do
  case "$arg" in
    --help) usage ;;
    --prefix=*) prefix=${arg#*=} ;;
    --exec-prefix=*) exec_prefix=${arg#*=} ;;
    --bindir=*) bindir=${arg#*=} ;;
    --datarootdir=*) datarootdir=${arg#*=} ;;
    --with-system-service=*) service_directory=${arg#*=} ;;
    --with-system-module=*) module_directory=${arg#*=} ;;
    --livedir=*) livedir=${arg#*=} ;;
    --with-user-service-conf=*) service_userconf=${arg#*=} ;;
    --LOGGER=*) LOGGER=${arg#*=} ;;
    --USE_ENVIRONMENT=*) USE_ENVIRONMENT=${arg#*=} ;;
    --NOTIFY=*) NOTIFY=${arg#*=} ;;
    --VERBOSITY_LEVEL=*) VERBOSITY_LEVEL=${arg#*=} ;;
    -* ) echo "$0: unknown option $arg" ;;
    *=*) ;;
    *) target=$arg ;;
  esac
done

# Add /usr in the default case
if test -z "$prefix" ; then
  if test "$datarootdir" = '$prefix/share'; then
    datarootdir=/usr/share
  fi
fi

# Expand installation directories
stripdir prefix
for i in exec_prefix bindir datarootdir \
		livedir service_directory module_directory ; do
  eval tmp=\${$i}
  eval $i=$tmp
  stripdir $i
done

stripdir datarootdir
for i in service_directory module_directory; do
  eval tmp=\${$i}
  eval $i=$tmp
  stripdir $i
done

for i in LOGGER USE_ENVIRONMENT NOTIFY VERBOSITY_LEVEL; do
  eval tmp=\${$i}
  if testval $tmp; then
  	eval $i='${i}=\"\\#${i}=\"'
  else
    eval $i='$i=$i=$tmp'
  fi
done

# Get usable temp filenames
i=0
set -C
while : ; do
  i=$(($i+1))
  tmpc="./tmp-configure-$$-$PPID-$i.c"
  tmpe="./tmp-configure-$$-$PPID-$i.tmp"
  2>|/dev/null > "$tmpc" && break
  2>|/dev/null > "$tmpe" && break
  test "$i" -gt 50 && fail "$0: cannot create temporary files"
done
set +C
trap 'rm -f "$tmpc" "$tmpe"' EXIT ABRT INT QUIT TERM HUP

echo "creating config.mak..."
cmdline=$(quote "$0")
for i ; do cmdline="$cmdline $(quote "$i")" ; done
exec 3>&1 1>config.mak
cat << EOF
# This file was generated by:
# $cmdline
# Any changes made here will be lost if configure is re-run.

version := $version
prefix := $prefix
exec_prefix := $exec_prefix
bindir := $bindir
datarootdir := $datarootdir
service_directory := $service_directory
module_directory := $module_directory
package_macro_dir := $package_macro_dir
livedir := $livedir
service_userconf := $service_userconf
$LOGGER
$USE_ENVIRONMENT
$NOTIFY
$VERBOSITY_LEVEL
EOF

exec 1>&3 3>&-
echo "  ... done."