#! /bin/sh
#
# Configure script for wine

: ${EDITOR:=vi}
: ${PAGER:=more}

ALLDEFINES=''

# Ask question 'str' and sets 'var' reply (defaulting to 'def' on CR)
prompt ()
{
	str="$1"
	var="$2"
	def="$3"

	eval $var='$def'
	echo
	echo -n "$str [$def]? "
	input=`head -1`  #  When using read, user must double all backslashes
	if [ -n "$input" ]
	then
		eval $var='$input'
	fi
}

echo -n 'Build Wine as emulator or library (E/L) [E]? '
read input
if [ "$input" = 'l' -o "$input" = 'L' ]
then
	WINELIB='#define WINELIB -DWINELIB'
	ALLDEFINES="$ALLDEFINES -DWINELIB"
else
	WINELIB=''

#	Commented out until the processor emulator starts to work.
#
#	echo
#	echo -n 'Use processor emulator (*DOES*NOT*WORK*YET*) (Y/N) [N]? '
#	read input
#	if [ "$input" = 'y' -o "$input" = 'Y' ]
#	then
#		PROCEMU='#define PROCEMU'
#		echo
#		echo -n 'bochs directory [/usr/src/bochs]? '
#		read input
#		if [ "$input" = '' ]
#		then
#			ALLDEFINES="$ALLDEFINES -DPROC_EMU_DIR=/usr/src/bochs"
#		else
#			ALLDEFINES="$ALLDEFINES -DPROC_EMU_DIR="$input
#		fi
#	fi

fi

echo
echo -n 'Short filenames (Y/N) [N]? '
read input
if [ "$input" = 'y' -o "$input" = 'Y' ]
then
	SHORTNAMES='#define ShortNames -DSHORTNAMES'
	ALLDEFINES="$ALLDEFINES -DSHORTNAMES"
else
	SHORTNAMES=''
fi

prompt "Global configfile name" WINE_CONFIGFILE /usr/local/etc/wine.conf

WINE_INI_GLOBAL='#define WINE_INI_GLOBAL "'$WINE_CONFIGFILE'"'

if [ -r $WINE_CONFIGFILE ]
then
	DEFAULT_ANS=N
else
	DEFAULT_ANS=Y
fi

echo
echo -n "Do you want to make a config file now (Y/N) [$DEFAULT_ANS]? "
read input
if [ "$input" = '' ]
then
	input="$DEFAULT_ANS"
fi
if [ "$input" = 'y' -o "$input" = 'Y' ]
then
	if [ -r $WINE_CONFIGFILE ]
	then
		echo "Backing up the old file to ${WINE_CONFIGFILE}.old."
		if cp $WINE_CONFIGFILE ${WINE_CONFIGFILE}.old
		then	:
		else
			echo "Error while creating backup file.  Fix it and run Configure again"
			exit 1
		fi
	fi

	case `awk 'BEGIN {s=0} {if ($3=="msdos") s++} END {print s}' /etc/fstab` in
	0)	CF_C=/c;;
	1)	CF_C=`awk '{if ($3=="msdos") print $2}' /etc/fstab`;;
	*)	CF_C=`awk '{if ($3=="msdos") {print $2;exit}}' /etc/fstab`;;
	esac

	prompt "Which directory do you want to use as A:" CF_A /a
	prompt "Which directory do you want to use as C:" CF_C $CF_C
	prompt "Where is the Windows directory" CF_Windows 'c:\windows'
	prompt "Where is the System directory" CF_System 'c:\windows\system'
	prompt "Where should Windows apps store temp files" CF_Temp 'c:\temp'
	prompt "Which path should be used to find executables and DLL's" CF_Path 'c:\windows;c:\windows\system'
	prompt "Where is sysres.dll" CF_SystemResources `pwd`/sysres.dll
	prompt "Where is COM1" CF_Com1 '/dev/cua0'
	prompt "Where is COM2" CF_Com2 '/dev/cua1'
	prompt "Where is LPT1" CF_Lpt1 '/dev/lp0'
	prompt "Log messages to which file (CON = stdout)" CF_File 'CON'

	echo
	sed -n -e 's/^ *\"\(WM_[A-Z0-9]*\)\".*/\1/p' < misc/spy.c | \
		sort | pr -ta4w83 | sed '1 i\
Here is the list of messages:\
\
' | $PAGER

	prompt "Exclude which messages from the log" CF_Exclude 'WM_SIZE;WM_TIMER'

	echo
	echo "The config file $WINE_CONFIGFILE now looks like this:"
	tee $WINE_CONFIGFILE << EOF
[drives]
A=$CF_A
C=$CF_C

[wine]
Windows=$CF_Windows
System=$CF_System
Temp=$CF_Temp
Path=$CF_Path
SystemResources=$CF_SystemResources

[serialports]
Com1=$CF_Com1
Com2=$CF_Com2

[parallelports]
Lpt1=$CF_Lpt1

[spy]
File=$CF_File
Exclude=$CF_Exclude
EOF

	echo
	echo -n "Do you want to edit it using $EDITOR (Y/N) [N]? "
	read input
	if [ "$input" = 'y' -o "$input" = 'Y' ]
	then
		$EDITOR $WINE_CONFIGFILE
	fi
else
	if [ ! -r $WINE_CONFIGFILE ]
	then
		echo 'Ok, remember to make it yourself later.'
	fi
fi

NEWBUILD=''
if [ "`(domainname)`" = 'amscons.com' ]
then
    echo
    echo -n 'New build program (Y/N) [N]? '
    read input
    if [ "$input" = 'y' -o "$input" = 'Y' ]
    then
	NEWBUILD='#define NewBuild -DNEWBUILD'
	ALLDEFINES="$ALLDEFINES -DNEWBUILD"
    fi
fi

NEWLINUXLDT=''
if grep -s seg_not_present /usr/include/linux/ldt.h 2> /dev/null
then
	NEWLINUXLDT='#define NEW_LDT_STRUCT'
fi

cat > autoconf.h << EOF
/* autoconf.h generated automatically.  Run Configure. */
$WINELIB
$SHORTNAMES
$NEWBUILD
$WINE_INI_GLOBAL
$NEWLINUXLDT
$ENDIAN
$PROCEMUDIR
#define AutoDefines $ALLDEFINES
EOF

xmkmf -a

if [ 0 -lt `find . -name "*.rej" -print | wc -l` ]
then
	cat << EOF

WARNING:  You have some files named "*.rej".  Rejected patch files?
Maybe you tried to upgrade Wine by diff-files, and that patch failed.
If something doesn't work, this might be the reason.  See "man patch".

List of "*.rej" files:

EOF
	find . -name "*.rej" -print
	echo
fi
