@echo off\r
rem ----------------------------------------------------------------------\r
-rem Configuration script for MS Windows 95/98 and NT/2000\r
-rem Copyright (C) 1999-2001 Free Software Foundation, Inc.\r
+rem Configuration script for MS Windows 95/98/Me and NT/2000/XP\r
+rem Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005,\r
+rem 2006 Free Software Foundation, Inc.\r
\r
rem This file is part of GNU Emacs.\r
\r
\r
rem You should have received a copy of the GNU General Public License\r
rem along with GNU Emacs; see the file COPYING. If not, write to the\r
-rem Free Software Foundation, Inc., 59 Temple Place - Suite 330,\r
-rem Boston, MA 02111-1307, USA.\r
+rem Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\r
+rem Boston, MA 02110-1301, USA.\r
rem ----------------------------------------------------------------------\r
rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:\r
rem\r
-rem + MS Windows 95/98 or NT/2000\r
+rem + MS Windows 95/98/Me or NT/2000/XP\r
rem + either MSVC 2.x or later, or gcc-2.95 or later (with gmake 3.75\r
rem or later) and the Mingw32 and W32 API headers and libraries\r
rem\r
rem For reference, here is a list of which builds of gmake are known to\r
rem work or not, and whether they work in the presence and/or absence of\r
rem sh.exe.\r
-rem \r
+rem\r
rem sh exists no sh\r
rem cygwin b20.1 make (3.75): okay[1] fails[2]\r
rem MSVC compiled gmake 3.77: okay okay\r
rem cygwin provides this?\r
rem\r
\r
+if exist config.log del config.log\r
+\r
rem ----------------------------------------------------------------------\r
rem See if the environment is large enough. We need 43 (?) bytes.\r
set $foo$=123456789_123456789_123456789_123456789_123\r
if "%1" == "--no-cygwin" goto nocygwin\r
if "%1" == "--cflags" goto usercflags\r
if "%1" == "--ldflags" goto userldflags\r
+if "%1" == "--without-png" goto withoutpng\r
+if "%1" == "--without-jpeg" goto withoutjpeg\r
+if "%1" == "--without-gif" goto withoutgif\r
+if "%1" == "--without-tiff" goto withouttiff\r
+if "%1" == "--without-xpm" goto withoutxpm\r
if "%1" == "" goto checkutils\r
:usage\r
echo Usage: configure [options]\r
echo. --no-cygwin use -mno-cygwin option with GCC\r
echo. --cflags FLAG pass FLAG to compiler\r
echo. --ldflags FLAG pass FLAG to compiler when linking\r
+echo. --without-png do not use libpng even if it is installed\r
+echo. --without-jpeg do not use jpeg-6b even if it is installed\r
+echo. --without-gif do not use libungif even if it is installed\r
+echo. --without-tiff do not use libtiff even if it is installed\r
+echo. --without-xpm do not use libXpm even if it is installed\r
goto end\r
rem ----------------------------------------------------------------------\r
:setprefix\r
set sep2= %nothing%\r
shift\r
goto again\r
+rem ----------------------------------------------------------------------\r
+\r
+:withoutpng\r
+set pngsupport=N\r
+set HAVE_PNG=\r
+shift\r
+goto again\r
+\r
+rem ----------------------------------------------------------------------\r
+\r
+:withoutjpeg\r
+set jpegsupport=N\r
+set HAVE_JPEG=\r
+shift\r
+goto again\r
+\r
+rem ----------------------------------------------------------------------\r
+\r
+:withoutgif\r
+set gifsupport=N\r
+set HAVE_GIF=\r
+shift\r
+goto again\r
+\r
+rem ----------------------------------------------------------------------\r
+\r
+:withouttiff\r
+set tiffsupport=N\r
+set HAVE_TIFF=\r
+shift\r
+goto again\r
+\r
+rem ----------------------------------------------------------------------\r
+\r
+:withoutxpm\r
+set xpmsupport=N\r
+set HAVE_XPM=\r
+shift\r
+goto again\r
\r
rem ----------------------------------------------------------------------\r
rem Check that necessary utilities (cp and rm) are present.\r
rem ----------------------------------------------------------------------\r
rem Auto-detect compiler if not specified, and validate GCC if chosen.\r
:checkcompiler\r
-if (%COMPILER%)==(cl) goto genmakefiles\r
+if (%COMPILER%)==(cl) goto compilercheckdone\r
if (%COMPILER%)==(gcc) goto checkgcc\r
\r
echo Checking whether 'cl' is available...\r
echo Checking whether gcc requires '-mno-cygwin'...\r
echo #include "cygwin/version.h" >junk.c\r
echo main(){} >>junk.c\r
-gcc -c junk.c\r
+echo gcc -c junk.c >>config.log\r
+gcc -c junk.c >>config.log 2>&1\r
if not exist junk.o goto chkapi\r
-gcc -mno-cygwin -c junk.c\r
+echo gcc -mno-cygwin -c junk.c >>config.log\r
+gcc -mno-cygwin -c junk.c >>config.log 2>&1\r
if exist junk.o set nocygwin=Y\r
rm -f junk.c junk.o\r
\r
:chkapi\r
+echo The failed program was: >>config.log\r
+type junk.c >>config.log\r
rem ----------------------------------------------------------------------\r
rem Older versions of the Windows API headers either don't have any of\r
rem the IMAGE_xxx definitions (the headers that come with Cygwin b20.1\r
:chkapi2\r
echo on\r
gcc %cf% -c junk.c\r
-echo off\r
+@echo off\r
+@echo gcc %cf% -c junk.c >>config.log\r
+gcc %cf% -c junk.c >>config.log 2>&1\r
set cf=\r
if exist junk.o goto gccOk\r
+echo The failed program was: >>config.log\r
+type junk.c >>config.log\r
\r
:nocompiler\r
echo.\r
\r
:gccOk\r
set COMPILER=gcc\r
-rm -f junk.c junk.o\r
echo Using 'gcc'\r
-goto genmakefiles\r
+rm -f junk.c junk.o\r
+Rem It is not clear what GCC version began supporting -mtune\r
+Rem and pentium4 on x86, so check this explicitly.\r
+echo main(){} >junk.c\r
+echo gcc -c -O2 -mtune=pentium4 junk.c >>config.log\r
+gcc -c -O2 -mtune=pentium4 junk.c >>config.log 2>&1\r
+if not errorlevel 1 goto gccMtuneOk\r
+echo The failed program was: >>config.log\r
+type junk.c >>config.log\r
+set mf=-mcpu=i686\r
+rm -f junk.c junk.o\r
+goto compilercheckdone\r
+:gccMtuneOk\r
+echo GCC supports -mtune=pentium4 >>config.log\r
+set mf=-mtune=pentium4\r
+rm -f junk.c junk.o\r
+goto compilercheckdone\r
\r
:clOk\r
set COMPILER=cl\r
rm -f junk.c junk.obj\r
echo Using 'MSVC'\r
-goto genmakefiles\r
+\r
+:compilercheckdone\r
+\r
+rem ----------------------------------------------------------------------\r
+rem Check for external image libraries. Since they are loaded\r
+rem dynamically, the libraries themselves do not need to be present\r
+rem at compile time, but the header files are required.\r
+\r
+set mingwflag=\r
+\r
+if (%nocygwin%) == (N) goto flagsOK\r
+set mingwflag=-mno-cygwin\r
+\r
+:flagsOK\r
+\r
+if (%pngsupport%) == (N) goto pngDone\r
+\r
+echo Checking for libpng...\r
+echo #include "png.h" >junk.c\r
+echo main (){} >>junk.c\r
+rem -o option is ignored with cl, but allows result to be consistent.\r
+echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
+%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
+if exist junk.obj goto havePng\r
+\r
+echo ...png.h not found, building without PNG support.\r
+echo The failed program was: >>config.log\r
+type junk.c >>config.log\r
+set HAVE_PNG=\r
+goto :pngDone\r
+\r
+:havePng\r
+echo ...PNG header available, building with PNG support.\r
+set HAVE_PNG=1\r
+\r
+:pngDone\r
+rm -f junk.c junk.obj\r
+\r
+if (%jpegsupport%) == (N) goto jpegDone\r
+\r
+echo Checking for jpeg-6b...\r
+echo #include "jconfig.h" >junk.c\r
+echo main (){} >>junk.c\r
+rem -o option is ignored with cl, but allows result to be consistent.\r
+echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
+%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
+if exist junk.obj goto haveJpeg\r
+\r
+echo ...jconfig.h not found, building without JPEG support.\r
+echo The failed program was: >>config.log\r
+type junk.c >>config.log\r
+set HAVE_JPEG=\r
+goto :jpegDone\r
+\r
+:haveJpeg\r
+echo ...JPEG header available, building with JPEG support.\r
+set HAVE_JPEG=1\r
+\r
+:jpegDone\r
+rm -f junk.c junk.obj\r
+\r
+if (%gifsupport%) == (N) goto gifDone\r
+\r
+echo Checking for libgif...\r
+echo #include "gif_lib.h" >junk.c\r
+echo main (){} >>junk.c\r
+rem -o option is ignored with cl, but allows result to be consistent.\r
+echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
+%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
+if exist junk.obj goto haveGif\r
+\r
+echo ...gif_lib.h not found, building without GIF support.\r
+echo The failed program was: >>config.log\r
+type junk.c >>config.log\r
+set HAVE_GIF=\r
+goto :gifDone\r
+\r
+:haveGif\r
+echo ...GIF header available, building with GIF support.\r
+set HAVE_GIF=1\r
+\r
+:gifDone\r
+rm -f junk.c junk.obj\r
+\r
+if (%tiffsupport%) == (N) goto tiffDone\r
+\r
+echo Checking for tiff...\r
+echo #include "tiffio.h" >junk.c\r
+echo main (){} >>junk.c\r
+rem -o option is ignored with cl, but allows result to be consistent.\r
+echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
+%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
+if exist junk.obj goto haveTiff\r
+\r
+echo ...tiffio.h not found, building without TIFF support.\r
+echo The failed program was: >>config.log\r
+type junk.c >>config.log\r
+set HAVE_TIFF=\r
+goto :tiffDone\r
+\r
+:haveTiff\r
+echo ...TIFF header available, building with TIFF support.\r
+set HAVE_TIFF=1\r
+\r
+:tiffDone\r
+rm -f junk.c junk.obj\r
+\r
+if (%xpmsupport%) == (N) goto xpmDone\r
+\r
+echo Checking for libXpm...\r
+echo #define FOR_MSW 1 >junk.c\r
+echo #include "X11/xpm.h" >>junk.c\r
+echo main (){} >>junk.c\r
+rem -o option is ignored with cl, but allows result to be consistent.\r
+echo %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log\r
+%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>>config.log\r
+if exist junk.obj goto haveXpm\r
+\r
+echo ...X11/xpm.h not found, building without XPM support.\r
+echo The failed program was: >>config.log\r
+type junk.c >>config.log\r
+set HAVE_XPM=\r
+goto :xpmDone\r
+\r
+:haveXpm\r
+echo ...XPM header available, building with XPM support.\r
+set HAVE_XPM=1\r
+\r
+:xpmDone\r
+rm -f junk.c junk.obj junk.err junk.out\r
\r
rem ----------------------------------------------------------------------\r
:genmakefiles\r
rem\r
echo # Start of settings from configure.bat >config.settings\r
echo COMPILER=%COMPILER%>>config.settings\r
+if not "(%mf%)" == "()" echo MCPU_FLAG=%mf%>>config.settings\r
if (%nodebug%) == (Y) echo NODEBUG=1 >>config.settings\r
if (%noopt%) == (Y) echo NOOPT=1 >>config.settings\r
if (%nocygwin%) == (Y) echo NOCYGWIN=1 >>config.settings\r
echo # End of settings from configure.bat>>config.settings\r
echo. >>config.settings\r
\r
-copy config.nt ..\src\config.h\r
-if not "(%usercflags%)" == "()" echo #define USER_CFLAGS " %usercflags%">>..\src\config.h\r
-if not "(%userldflags%)" == "()" echo #define USER_LDFLAGS " %userldflags%">>..\src\config.h\r
+copy config.nt config.tmp\r
+echo. >>config.tmp\r
+echo /* Start of settings from configure.bat. */ >>config.tmp\r
+if not "(%usercflags%)" == "()" echo #define USER_CFLAGS " %usercflags%">>config.tmp\r
+if not "(%userldflags%)" == "()" echo #define USER_LDFLAGS " %userldflags%">>config.tmp\r
+if not "(%HAVE_PNG%)" == "()" echo #define HAVE_PNG 1 >>config.tmp\r
+if not "(%HAVE_JPEG%)" == "()" echo #define HAVE_JPEG 1 >>config.tmp\r
+if not "(%HAVE_GIF%)" == "()" echo #define HAVE_GIF 1 >>config.tmp\r
+if not "(%HAVE_TIFF%)" == "()" echo #define HAVE_TIFF 1 >>config.tmp\r
+if not "(%HAVE_XPM%)" == "()" echo #define HAVE_XPM 1 >>config.tmp\r
+echo /* End of settings from configure.bat. */ >>config.tmp\r
+\r
+Rem See if fc.exe returns a meaningful exit status. If it does, we\r
+Rem might as well avoid unnecessary overwriting of config.h and epaths.h,\r
+Rem since this forces recompilation of every source file.\r
+if exist foo.bar del foo.bar\r
+fc /b foo.bar foo.bar >nul 2>&1\r
+if not errorlevel 2 goto doCopy\r
+fc /b config.tmp ..\src\config.h >nul 2>&1\r
+if errorlevel 1 goto doCopy\r
+fc /b paths.h ..\src\epaths.h >nul 2>&1\r
+if errorlevel 0 goto dontCopy\r
+:doCopy\r
+copy config.tmp ..\src\config.h\r
copy paths.h ..\src\epaths.h\r
\r
+:dontCopy\r
+if exist config.tmp del config.tmp\r
copy /b config.settings+%MAKECMD%.defs+..\nt\makefile.w32-in ..\nt\makefile\r
copy /b config.settings+%MAKECMD%.defs+..\lib-src\makefile.w32-in ..\lib-src\makefile\r
copy /b config.settings+%MAKECMD%.defs+..\src\makefile.w32-in ..\src\makefile\r
-if not exist ..\lisp\Makefile.unix rename ..\lisp\Makefile.in Makefile.unix\r
+copy /b config.settings+%MAKECMD%.defs+..\man\makefile.w32-in ..\man\makefile\r
+copy /b config.settings+%MAKECMD%.defs+..\lispref\makefile.w32-in ..\lispref\makefile\r
+copy /b config.settings+%MAKECMD%.defs+..\lispintro\makefile.w32-in ..\lispintro\makefile\r
if exist ..\lisp\makefile rm -f ../lisp/[Mm]akefile\r
copy /b config.settings+%MAKECMD%.defs+..\lisp\makefile.w32-in ..\lisp\makefile\r
rem Use the default (no-op) Makefile.in if the nt version is not present.\r
\r
echo.\r
echo Emacs successfully configured.\r
+echo Emacs successfully configured. >>config.log\r
echo Run `%MAKECMD%' to build, then run `%MAKECMD% install' to install.\r
goto end\r
\r
set MAKECMD=\r
set usercflags=\r
set userldflags=\r
+set mingwflag=\r
+set mf=\r
+\r
+goto skipArchTag\r
+ arch-tag: 300d20a4-1675-4e75-b615-7ce1a8c5376c\r
+:skipArchTag\r