213 lines
4.5 KiB
Bash
213 lines
4.5 KiB
Bash
#! /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
|