#!/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]
  --libdir=LIBDIR                  static library files [PREFIX/lib/$package_macro_dir]
  --sysconfdir=SYSDIR              global configuration files [/etc]
  --datarootdir=DATAROOTDIR        read-only architecture-independent data root [PREFIX/share]
  --mandir=DIR                     man documentation [$datarootdir/man]
  --livedir=DIR                    66 default live directory [/run/66]
  --with-system-service=DIR        66 service intallation directory [DATAROOTDIR/$package_macro_dir/service]
  --with-system-script=DIR         66 script installation directory of scripts [DATAROOTDIR/$package_macro_dir/script]
  --with-system-seed=DIR           system trees default configuration[DATAROOTDIR/$package_macro_dir/seed]
  --with-sysadmin-service-conf=DIR 66 sysadmin service configuration file directory [SYSDIR/$package_macro_dir/conf]
  --with-skeleton=DIR              66 skeleton files directory installation [SYSDIR/$package_macro_dir]
  --opentmpfiles-script=DIR        absolute path of the opentmpfiles script [BINDIR]
  --modules-script=DIR             absolute path of the modules.sh script [BINDIR]

Fine tunning of boot configuration:
  --HOSTNAME=VALUE                 hostname of the system [obarunS6]
  --HARDWARECLOCK=VALUE            set the hardware clock [UTC]
  --TZ=VALUE                       set timezone [GMT]
  --SETUPCONSOLE=BOOLEAN           configure the console [!yes]
  --TTY=VALUE                      number of tty to start. Maximum is 11. 0 for no tty at all [!2]
  --KEYMAP=VALUE                   set the console keymap [!us]
  --FONT=VALUE                     set the console font [!lat9w-16]
  --FONT_MAP=VALUE                 set the console map []
  --FONT_UNIMAP=VALUE              set the console unimap []
  --UDEV=BOOLEAN                   use udev [!yes]
  --SYSCTL=BOOLEAN                 configure kernel runtime with sysctl [!yes]
  --FORCECHCK=BOOLEAN              force a check of the filesystem [!no]
  --LOCAL=BOOLEAN                  use rc.local scripts [!no]
  --CONTAINER=BOOLEAN              boot inside a container [!no]
  --TMPFILE=BOOLEAN                use tmpfiles.d files [!yes]
  --MODULE_KERNEL=BOOLEAN          load modules kernel [!yes]
  --MODULE_SYSTEM=BOOLEAN          load modules from modules.d files [!yes]
  --RANDOMSEED=BOOLEAN             set random seed [!yes]
  --FSTAB=BOOLEAN                  mount devices from fstab [!yes]
  --SWAP=BOOLEAN                   mount swap [!no]
  --LVM=BOOLEAN                    mount lvm devices [!no]
  --DMRAID=BOOLEAN                 mount dmraid devices [!no]
  --MDRAID=BOOLEAN                 mount mdraid devices [!no]
  --BTRFS=BOOLEAN                  mount btrfs devices [!no]
  --ZFS=BOOLEAN                    mount zfs devices [!no]
  --ZFS_IMPORT=VALUE               use scan or zpoolcache method for zfs pools importation [!zpoolcache]
  --CRYPTTAB=BOOLEAN               use crypttab by default [!no]
  --FIREWALL=VALUE                 use iptables|ip6tables|nftables|ebtables|arptables []
  --CGROUPS=BOOLEAN                mount cgroups [!yes]
  --MNT_PROC=BOOLEAN               mount /proc [!yes]
  --MNT_SYS=BOOLEAN                mount /sys [!yes]
  --MNT_DEV=BOOLEAN                mount /dev [!yes]
  --MNT_RUN=BOOLEAN                mount /run [!yes]
  --MNT_TMP=BOOLEAN                mount /tmp [!yes]
  --MNT_PTS=BOOLEAN                mount /dev/pts [!yes]
  --MNT_SHM=BOOLEAN                mount /dev/shm [!yes]
  --MNT_NETFS=BOOLEAN              mount no-network filesystems [!yes]
  --POPULATE_SYS=BOOLEAN           populate sys directory [!yes]
  --POPULATE_DEV=BOOLEAN           populate dev directory [!yes]
  --POPULATE_RUN=BOOLEAN           populate run directory [!yes]
  --POPULATE_TMP=BOOLEAN           populate tmp directory [!yes]
  --CHECK_CONFIGURATION=BOOLEAN    enable checks on 66-enable [!yes]


 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 --KEYMAP='!us'

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'
libdir='$prefix/lib/$package_macro_dir'
sysconfdir='/etc'
datarootdir='$prefix/share'
mandir='$datarootdir/man'
livedir='/run/66'
service_directory='$datarootdir/$package_macro_dir/service'
script_directory='$datarootdir/$package_macro_dir/script'
skel_directory='$sysconfdir/$package_macro_dir'
seed_directory='$datarootdir/$package_macro_dir/seed'
adm_conf='$sysconfdir/$package_macro_dir/conf'
tmpfiles='$bindir'
modules='$bindir'
HOSTNAME='obarunS6'
HARDWARECLOCK='UTC'
TZ='GMT'
SETUPCONSOLE='!yes'
TTY='!2'
KEYMAP='!us'
FONT='!lat9w-16'
FONT_MAP=
FONT_UNIMAP=
UDEV='!yes'
SYSCTL='!yes'
FORCECHCK='!no'
LOCAL='!no'
CONTAINER='!no'
TMPFILE='!yes'
MODULE_KERNEL='!yes'
MODULE_SYSTEM='!yes'
RANDOMSEED='!yes'
FSTAB='!yes'
SWAP='!no'
LVM='!no'
DMRAID='!no'
MDRAID='!no'
BTRFS='!no'
ZFS='!no'
ZFS_IMPORT='!zpoolcache'
CRYPTTAB='!no'
FIREWALL=
CGROUPS='!yes'
MNT_PROC='!yes'
MNT_SYS='!yes'
MNT_DEV='!yes'
MNT_RUN='!yes'
MNT_TMP='!yes'
MNT_PTS='!yes'
MNT_SHM='!yes'
MNT_NETFS='!yes'
POPULATE_SYS='!yes'
POPULATE_DEV='!yes'
POPULATE_RUN='!yes'
POPULATE_TMP='!yes'
CHECK_CONFIGURATION='!yes'


for arg ; do
  case "$arg" in
    --help) usage ;;
    --prefix=*) prefix=${arg#*=} ;;
    --exec-prefix=*) exec_prefix=${arg#*=} ;;
    --bindir=*) bindir=${arg#*=} ;;
    --libdir=*) libdir=${arg#*=} ;;
    --sysconfdir=*) sysconfdir=${arg#*=} ;;
    --datarootdir=*) datarootdir=${arg#*=} ;;
    --mandir=*) mandir=${arg#*=} ;;
    --livedir=*) livedir=${arg#*=} ;;
    --with-system-service=*) service_directory=${arg#*=} ;;
    --with-system-script=*) script_directory=${arg#*=} ;;
    --with-system-seed=*) seed_directory=${arg#*=} ;;
    --with-sysadmin-service-conf=*) adm_conf=${arg#*=} ;;
    --with-skeleton=*) skel_directory=${arg#*=} ;;
    --opentmpfiles-script=*) tmpfiles=${arg#*=} ;;
    --modules-script=*) modules=${arg#*=} ;;
    --HOSTNAME=*) HOSTNAME=${arg#*=} ;;
    --HARDWARECLOCK=*) HARDWARECLOCK=${arg#*=} ;;
    --TZ=*) TZ=${arg#*=} ;;
    --SETUPCONSOLE=*) SETUPCONSOLE=${arg#*=} ;;
    --TTY=*) TTY=${arg#*=} ;;
    --KEYMAP=*) KEYMAP=${arg#*=} ;;
    --FONT=*) FONT=${arg#*=} ;;
    --FONT_MAP=*) FONT_MAP=${arg#*=} ;;
    --FONT_UNIMAP=*) FONT_UNIMAP=${arg#*=} ;;
    --SYSCTL=*) SYSCTL=${arg#*=} ;;
    --FORCECHCK=*) FORCECHCK=${arg#*=} ;;
    --LOCAL=*) LOCAL=${arg#*=} ;;
    --CONTAINER=*) CONTAINER=${arg#*=} ;;
    --TMPFILE=*) TMPFILE=${arg#*=} ;;
    --MODULE_KERNEL=*) MODULE_KERNEL=${arg#*=} ;;
    --MODULE_SYSTEM=*) MODULE_SYSTEM=${arg#*=} ;;
    --RANDOMSEED=*) RANDOMSEED=${arg#*=} ;;
    --FSTAB=*) FSTAB=${arg#*=} ;;
    --SWAP=*) SWAP=${arg#*=} ;;
    --LVM=*) LVM=${arg#*=} ;;
    --DMRAID=*) DMRAID=${arg#*=} ;;
    --MDRAID=*) MDRAID=${arg#*=} ;;
    --BTRFS=*) BTRFS=${arg#*=} ;;
    --ZFS=*) ZFS=${arg#*=} ;;
    --ZFS_IMPORT=*) ZFS_IMPORT=${arg#*=} ;;
    --CRYPTTAB=*) CRYPTTAB=${arg#*=} ;;
    --FIREWALL=*) FIREWALL=${arg#*=} ;;
    --CGROUPS=*) CGROUPS=${arg#*=} ;;
    --MNT_PROC=*) MNT_PROC=${arg#*=} ;;
    --MNT_SYS=*) MNT_SYS=${arg#*=} ;;
    --MNT_DEV=*) MNT_DEV=${arg#*=} ;;
    --MNT_RUN=*) MNT_RUN=${arg#*=} ;;
    --MNT_TMP=*) MNT_TMP=${arg#*=} ;;
    --MNT_PTS=*) MNT_PTS=${arg#*=} ;;
    --MNT_SHM=*) MNT_SHM=${arg#*=} ;;
    --MNT_NETFS=*) MNT_NETFS=${arg#*=} ;;
    --POPULATE_SYS=*) POPULATE_SYS=${arg#*=} ;;
    --POPULATE_DEV=*) POPULATE_DEV=${arg#*=} ;;
    --POPULATE_RUN=*) POPULATE_RUN=${arg#*=} ;;
    --POPULATE_TMP=*) POPULATE_TMP=${arg#*=} ;;
    --CHECK_CONFIGURATION=*) CHECK_CONFIGURATION=${arg#*=} ;;
    -* ) echo "$0: unknown option $arg" ;;
    *=*) ;;
    *) target=$arg ;;
  esac
done

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

if test -z "$sysconfdir" ; then
  if test "$sysconfdir" = '$sysconfdir' ; then
    sysconfdir = '/etc'
  fi
  if test "$adm_conf" = '$sysconfdir/$package_macro_dir/conf' ; then
    adm_conf = '$sysconfdir/$package_macro_dir/conf'
  fi
  if test "$skel_directory" = '$sysconfdir/$package_macro_dir' ; then
    skel_directory = '$sysconfdir/$package_macro_dir'
  fi
fi

# Expand installation directories
stripdir prefix
for i in exec_prefix bindir libdir sysconfdir datarootdir mandir livedir \
        service_directory script_directory seed_directory skel_directory adm_conf tmpfiles modules; do
  eval tmp=\${$i}
  eval $i=$tmp
  stripdir $i
done

stripdir sysconfdir
for i in adm_conf skel_directory; do
  eval tmp=\${$i}
  eval $i=$tmp
  stripdir $i
done

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

for i in HOSTNAME HARDWARECLOCK TZ SETUPCONSOLE TTY \
        KEYMAP FONT FONT_MAP FONT_UNIMAP UDEV SYSCTL FORCECHCK LOCAL CONTAINER \
        TMPFILE MODULE_KERNEL MODULE_SYSTEM RANDOMSEED \
        FSTAB SWAP LVM DMRAID MDRAID BTRFS ZFS ZFS_IMPORT \
        CRYPTTAB FIREWALL \
        CGROUPS MNT_PROC MNT_SYS MNT_DEV MNT_RUN MNT_TMP \
        MNT_PTS MNT_SHM MNT_NETFS POPULATE_SYS POPULATE_DEV POPULATE_RUN POPULATE_TMP CHECK_CONFIGURATION ; 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.
package := $package
version := $version
prefix := $prefix
exec_prefix := $exec_prefix
bindir := $bindir
libdir := $libdir
sysconfdir := $sysconfdir
datarootdir := $datarootdir
mandir := $mandir
livedir := $livedir
service_directory := $service_directory
script_directory := $script_directory
seed_directory := $seed_directory
adm_conf := $adm_conf
skel_directory := $skel_directory
tmpfiles := $tmpfiles
modules := $modules
package_macro_dir := $package_macro_dir
$HOSTNAME
$HARDWARECLOCK
$TZ
$SETUPCONSOLE
$TTY
$KEYMAP
$FONT
$FONT_MAP
$FONT_UNIMAP
$UDEV
$SYSCTL
$FORCECHCK
$LOCAL
$CONTAINER
$TMPFILE
$MODULE_KERNEL
$MODULE_SYSTEM
$RANDOMSEED
$FSTAB
$SWAP
$LVM
$DMRAID
$MDRAID
$BTRFS
$ZFS
$ZFS_IMPORT
$CRYPTTAB
$FIREWALL
$CGROUPS
$MNT_PROC
$MNT_SYS
$MNT_DEV
$MNT_RUN
$MNT_TMP
$MNT_PTS
$MNT_SHM
$MNT_NETFS
$POPULATE_SYS
$POPULATE_DEV
$POPULATE_RUN
$POPULATE_TMP
$CHECK_CONFIGURATION
EOF

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