#! /bin/sh # # Configure script for wine : ${EDITOR:=vi} : ${PAGER:=more} WINELIB='' SHORTNAMES='' XPM='' LANG=not_matching NEWBUILD='' ALLDEFINES='' # Ask question 'str' and set 'var' to 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" 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" fi echo echo -n 'Use the XPM library (Y/N) [N]? ' read input if [ "$input" = 'y' -o "$input" = 'Y' ] then XPM='#define USE_XPM' ALLDEFINES="$ALLDEFINES -DUSE_XPM" fi LANGS=`echo En rc/sysres_*.rc | sed -e 's/rc\/sysres_//g' -e 's/\.rc//g' -e 's/ /\//g;'` while expr "$LANGS" : ".*$LANG" = 0 > /dev/null do prompt "Language ($LANGS)" LANG En if expr "$LANGS" : ".*$LANG" = 0 > /dev/null then echo "\"$LANG\" is not a supported language." fi done ALLDEFINES="$ALLDEFINES -ALANG\($LANG\)" 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 prompt "Global configfile name" WINE_CONFIGFILE /usr/local/etc/wine.conf 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 CF_A=`mount | awk '/^\/dev\/fd/ {print $3;exit} END {print "/a"}'` prompt "Which directory do you want to use as A:" CF_A $CF_A CF_C=`awk '{if ($3=="msdos") {print $2;exit}} END {print "/c"}' /etc/fstab` 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' if [ -r "$CF_C/autoexec.bat" ] then CF_Temp=`tr A-Z a-z < "$CF_C/autoexec.batX" | sed -n 's/^ *set *temp= *\(c:.*[a-z]\).*/\1/p'` fi if [ -z "$CF_Temp" ] then CF_Temp='c:\temp' fi prompt "Where should Windows apps store temp files" CF_Temp $CF_Temp prompt "Which path should be used to find progs/DLL's" CF_Path "$CF_Windows;$CF_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' cat > $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 [fonts] system=*-helvetica mssansserif=*-helvetica msserif=*-times fixedsys=*-fixed arial=*-helvetica helv=*-helvetica roman=*-times default=*-* [serialports] Com1=$CF_Com1 Com2=$CF_Com2 [parallelports] Lpt1=$CF_Lpt1 [spy] File=$CF_File Exclude=$CF_Exclude EOF echo sed '1 i\ The config file '"$WINE_CONFIGFILE"' now looks like this:\ \ ' < $WINE_CONFIGFILE | $PAGER 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 if grep -s seg_not_present /usr/include/linux/ldt.h 2> /dev/null then ALLDEFINES="$ALLDEFINES -DNEW_LDT_STRUCT" fi cat > autoconf.h << EOF /* autoconf.h generated automatically. Run Configure. */ $WINELIB $SHORTNAMES $XPM $NEWBUILD #define WINE_INI_GLOBAL "$WINE_CONFIGFILE" #define AutoDefines $ALLDEFINES EOF echo echo "Creating Makefiles. This may take a while." if xmkmf -a then : else cat << EOF WARNING: The exit status of the command 'xmkmf -a' indicates an error. Maybe the Wine directory is incomplete, or Imake (see 'man xmkmf imake') is incorrectly configured? In the latter case, it might be easiest to reinstall X11 to get a new copy of Imake. EOF fi if [ 0 -lt `find . -name "*.rej" -print | wc -l` ] then cat << EOF WARNING: You have some files named '*.rej', which usually indicates rejected patch files. Maybe you tried to upgrade Wine with 'patch', and that some of the patches failed? If something doesn't work, this might be the reason. See 'man patch' (especially the '-p' option). List of "*.rej" files: EOF find . -name "*.rej" -print fi if [ -f ./Makefile ] then echo echo "Configure finished. Do 'make' to compile Wine." else echo echo "*** There was a problem with 'imake': the main Makefile has not be created." fi