Skip to content
Snippets Groups Projects
configure 5.09 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-seed=DIR           system trees default configuration[DATAROOTDIR/$package_macro_dir/seed]
  --execlinedir=DIR                absolute path of execline binaries [BINDIR]
Eric Vidal's avatar
Eric Vidal committed

Eric Vidal's avatar
Eric Vidal committed
Fine tunning of boot-user configuration:
  --DISPLAY_MANAGER=VALUE          display manager to use []
  --CONSOLE_TRACKER=VALUE          console tracker to use []
  --XDG_RUNTIME=BOOLEAN            create and mount the XDG_RUNTIME directory [!yes]
  --DESKTOP_CMDLINE=VALUE          commandline to use in the .xinitrc file [!jwm]
  --version=VALUE                  version of the service[0.0.1]
Eric Vidal's avatar
Eric Vidal committed

Eric Vidal's avatar
Eric Vidal committed
 Use yes or no with lowercase character to set BOOLEAN values.
Eric Vidal's avatar
Eric Vidal committed

Eric Vidal's avatar
Eric Vidal committed
 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 --XDG_RUNTIME='!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'
seed_directory='$datarootdir/$package_macro_dir/seed'
execlinedir='$bindir'
Eric Vidal's avatar
Eric Vidal committed
DISPLAY_MANAGER=
CONSOLE_TRACKER=
XDG_RUNTIME='!yes'
DESKTOP_CMDLINE='!jwm'
Eric Vidal's avatar
Eric Vidal committed
version='0.5.3'
Eric Vidal's avatar
Eric Vidal committed

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-seed=*) seed_directory=${arg#*=} ;;
    --execlinedir=*) execlinedir=${arg#*=} ;;
Eric Vidal's avatar
Eric Vidal committed
    --DISPLAY_MANAGER=*) DISPLAY_MANAGER=${arg#*=} ;;
    --CONSOLE_TRACKER=*) CONSOLE_TRACKER=${arg#*=} ;;
    --XDG_RUNTIME=*) XDG_RUNTIME=${arg#*=} ;;
    --DESKTOP_CMDLINE=*) DESKTOP_CMDLINE=${arg#*=} ;;
Eric Vidal's avatar
Eric Vidal committed
    -* ) 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 \
		seed_directory service_directory execlinedir; do
Eric Vidal's avatar
Eric Vidal committed
  eval tmp=\${$i}
  eval $i=$tmp
  stripdir $i
done

stripdir datarootdir
for i in service_directory seed_directory; do
Eric Vidal's avatar
Eric Vidal committed
  eval tmp=\${$i}
  eval $i=$tmp
  stripdir $i
done

for i in DISPLAY_MANAGER CONSOLE_TRACKER XDG_RUNTIME DESKTOP_CMDLINE; do
  eval tmp=\${$i}
  if testval $tmp; then
  	if [ "${i}" = "DISPLAY_MANAGER" ]; then
		eval $i='${i}=\"\\#${i}=sddm\"'
	elif [ "${i}" = "CONSOLE_TRACKER" ]; then
		eval $i='${i}=\"\\#${i}=consolekit\"'
	else
		eval $i='${i}=\"\\#${i}=\"'
	fi
  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
Eric Vidal's avatar
Eric Vidal committed
prefix := $prefix
exec_prefix := $exec_prefix
bindir := $bindir
datarootdir := $datarootdir
service_directory := $service_directory
Eric Vidal's avatar
Eric Vidal committed
package_macro_dir := $package_macro_dir
execlinedir := $execlinedir
Eric Vidal's avatar
Eric Vidal committed
$DISPLAY_MANAGER
$CONSOLE_TRACKER
$XDG_RUNTIME
$DESKTOP_CMDLINE
EOF

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