@echo off\r
rem ----------------------------------------------------------------------\r
-rem Configuration script for MS Windows 95/98/Me and NT/2000/XP\r
+rem Configuration script for MS Windows operating systems\r
rem Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005,\r
rem 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.\r
\r
rem ----------------------------------------------------------------------\r
rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:\r
rem\r
-rem + MS Windows 95/98/Me or NT/2000/XP\r
+rem + MS Windows 95, NT or later\r
rem + either MSVC 2.x or later, or gcc-2.95 or later (with GNU make 3.75\r
rem or later) and the Mingw32 and W32 API headers and libraries.\r
rem + Visual Studio 2005 is not supported at this time.\r
set prefix=\r
set nodebug=N\r
set noopt=N\r
+set enablechecking=N\r
set profile=N\r
set nocygwin=N\r
set COMPILER=\r
set doldflags=\r
set sep1=\r
set sep2=\r
+set sep3=\r
+set distfiles=\r
\r
rem ----------------------------------------------------------------------\r
rem Handle arguments.\r
if "%1" == "--with-msvc" goto withmsvc\r
if "%1" == "--no-debug" goto nodebug\r
if "%1" == "--no-opt" goto noopt\r
+if "%1" == "--enable-checking" goto enablechecking\r
if "%1" == "--profile" goto profile\r
if "%1" == "--no-cygwin" goto nocygwin\r
if "%1" == "--cflags" goto usercflags\r
if "%1" == "--without-tiff" goto withouttiff\r
if "%1" == "--without-xpm" goto withoutxpm\r
if "%1" == "--with-svg" goto withsvg\r
+if "%1" == "--distfiles" goto distfiles\r
if "%1" == "" goto checkutils\r
+\r
:usage\r
echo Usage: configure [options]\r
echo Options:\r
echo. --with-msvc use MSVC to compile Emacs\r
echo. --no-debug exclude debug info from executables\r
echo. --no-opt disable optimization\r
+echo. --enable-checking enable checks and assertions\r
echo. --profile enable profiling\r
echo. --no-cygwin use -mno-cygwin option with GCC\r
echo. --cflags FLAG pass FLAG to compiler\r
echo. --without-tiff do not use TIFF library even if it is installed\r
echo. --without-xpm do not use XPM library even if it is installed\r
echo. --with-svg use the RSVG library (experimental)\r
+echo. --distfiles path to files for make dist, e.g. libXpm.dll\r
goto end\r
+\r
rem ----------------------------------------------------------------------\r
+\r
:setprefix\r
shift\r
set prefix=%1\r
shift\r
goto again\r
+\r
rem ----------------------------------------------------------------------\r
+\r
:withgcc\r
set COMPILER=gcc\r
shift\r
goto again\r
+\r
rem ----------------------------------------------------------------------\r
+\r
:withmsvc\r
set COMPILER=cl\r
shift\r
goto again\r
+\r
rem ----------------------------------------------------------------------\r
+\r
:nodebug\r
set nodebug=Y\r
shift\r
goto again\r
+\r
rem ----------------------------------------------------------------------\r
+\r
:noopt\r
set noopt=Y\r
shift\r
goto again\r
+\r
+rem ----------------------------------------------------------------------\r
+\r
+:enablechecking\r
+set enablechecking=Y\r
+shift\r
+goto again\r
+\r
rem ----------------------------------------------------------------------\r
+\r
:profile\r
set profile=Y\r
shift\r
goto again\r
+\r
rem ----------------------------------------------------------------------\r
+\r
:nocygwin\r
set nocygwin=Y\r
shift\r
goto again\r
+\r
rem ----------------------------------------------------------------------\r
+\r
:usercflags\r
shift\r
set usercflags=%usercflags%%sep1%%1\r
set sep1= %nothing%\r
shift\r
goto again\r
+\r
rem ----------------------------------------------------------------------\r
+\r
:userldflags\r
shift\r
set userldflags=%userldflags%%sep2%%1\r
set sep2= %nothing%\r
shift\r
goto again\r
+\r
rem ----------------------------------------------------------------------\r
\r
:withoutpng\r
set svgsupport=Y\r
goto again\r
\r
+rem ----------------------------------------------------------------------\r
+\r
+:distfiles\r
+set HAVE_DISTFILES=1\r
+shift\r
+set distfiles=%distfiles%%sep3%%1\r
+set sep3= %nothing%\r
+shift\r
+goto again\r
+\r
rem ----------------------------------------------------------------------\r
rem Check that necessary utilities (cp and rm) are present.\r
+\r
:checkutils\r
echo Checking for 'cp'...\r
cp configure.bat junk.bat\r
rm junk.bat\r
if exist junk.bat goto needrm\r
goto checkcompiler\r
+\r
:needcp\r
echo You need 'cp' (the Unix file copy program) to build Emacs.\r
goto end\r
+\r
:needrm\r
del junk.bat\r
echo You need 'rm' (the Unix file delete program) to build Emacs.\r
\r
rem ----------------------------------------------------------------------\r
rem Auto-detect compiler if not specified, and validate GCC if chosen.\r
+\r
:checkcompiler\r
if (%COMPILER%)==(cl) goto compilercheckdone\r
if (%COMPILER%)==(gcc) goto checkgcc\r
:chkapi\r
echo The failed program was: >>config.log\r
type junk.c >>config.log\r
+\r
:chkapiN\r
rm -f junk.c junk.o\r
rem ----------------------------------------------------------------------\r
if (%nocygwin%) == (Y) goto chkapi1\r
set cf=%usercflags%\r
goto chkapi2\r
+\r
:chkapi1\r
set cf=%usercflags% -mno-cygwin\r
+\r
:chkapi2\r
echo on\r
gcc %cf% -c junk.c\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
+if exist junk.o goto chkuser\r
echo The failed program was: >>config.log\r
type junk.c >>config.log\r
+goto nocompiler\r
+\r
+:chkuser\r
+rm -f junk.o\r
+echo int main (int argc, char *argv[]) {>junk.c\r
+echo char *usercflags = "%usercflags%";>>junk.c\r
+echo }>>junk.c\r
+echo gcc -Werror -c junk.c >>config.log\r
+gcc -Werror -c junk.c >>config.log 2>&1\r
+if exist junk.o goto gccOk\r
+echo.\r
+echo Error in --cflags argument: %usercflags%\r
+echo Backslashes and quotes cannot be used with --cflags. Please use forward\r
+echo slashes for filenames and paths (e.g. when passing directories to -I).\r
+rm -f junk.c\r
+goto end\r
\r
:nocompiler\r
echo.\r
set mf=-mcpu=i686\r
rm -f junk.c junk.o\r
goto gccdebug\r
+\r
:gccMtuneOk\r
echo GCC supports -mtune=pentium4 >>config.log\r
set mf=-mtune=pentium4\r
rm -f junk.c junk.o\r
+\r
:gccdebug\r
rem Check for DWARF-2 debug info support, else default to stabs\r
echo main(){} >junk.c\r
set dbginfo=-gstabs+\r
rm -f junk.c junk.o\r
goto compilercheckdone\r
+\r
:gccdwarf\r
echo GCC supports DWARF-2 >>config.log\r
set dbginfo=-gdwarf-2 -g3\r
:svgDone\r
rm -f junk.c junk.obj junk.err junk.out\r
\r
+rem Any distfiles provided for building distribution? If no, we're done.\r
+if "(%HAVE_DISTFILES%)"=="()" goto :distFilesDone\r
+\r
+rem Any arguments to --distfiles specified? If no, we're done.\r
+if not "%distfiles%"=="" goto :checkDistFiles\r
+set distFilesOk=0\r
+echo No arguments specified for option --distfiles!\r
+goto distfilesDone\r
+\r
+:checkDistFiles\r
+echo Checking for distfiles...\r
+rem Check if all specified distfiles exist\r
+set fileNotFound=\r
+for %%d in (%distfiles%) do if not exist %%d set fileNotFound=%%d\r
+if not "%fileNotFound%"=="" goto distFilesNotFound\r
+\r
+set distFilesOK=1\r
+echo ...all distfiles found.\r
+goto :distFilesDone\r
+\r
+:distFilesNotFound\r
+set distFilesOk=0\r
+echo ...%fileNotFound% not found.\r
+set distfiles=\r
+goto :distfilesDone\r
+\r
+:distFilesDone\r
+set fileNotFound=\r
+\r
rem ----------------------------------------------------------------------\r
+\r
:genmakefiles\r
echo Generating makefiles\r
if %COMPILER% == gcc set MAKECMD=gmake\r
if not "(%dbginfo%)" == "()" echo DEBUG_INFO=%dbginfo%>>config.settings\r
if (%nodebug%) == (Y) echo NODEBUG=1 >>config.settings\r
if (%noopt%) == (Y) echo NOOPT=1 >>config.settings\r
+if (%enablechecking%) == (Y) echo ENABLECHECKS=1 >>config.settings\r
if (%profile%) == (Y) echo PROFILE=1 >>config.settings\r
if (%nocygwin%) == (Y) echo NOCYGWIN=1 >>config.settings\r
if not "(%prefix%)" == "()" echo INSTALL_DIR=%prefix%>>config.settings\r
+if not "(%distfiles%)" == "()" echo DIST_FILES=%distfiles%>>config.settings\r
rem We go thru docflags because usercflags could be "-DFOO=bar" -something\r
rem and the if command cannot cope with this\r
for %%v in (%usercflags%) do if not (%%v)==() set docflags=Y\r
copy config.nt config.tmp\r
echo. >>config.tmp\r
echo /* Start of settings from configure.bat. */ >>config.tmp\r
+rem We write USER_CFLAGS and USER_LDFLAGS starting with a space to simplify\r
+rem processing of compiler options in w32.c:get_emacs_configuration_options\r
if (%docflags%) == (Y) echo #define USER_CFLAGS " %usercflags%">>config.tmp\r
if (%doldflags%) == (Y) echo #define USER_LDFLAGS " %userldflags%">>config.tmp\r
if (%profile%) == (Y) echo #define PROFILING 1 >>config.tmp\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
+if not errorlevel 1 goto dontCopy\r
+\r
:doCopy\r
copy config.tmp ..\src\config.h\r
copy paths.h ..\src\epaths.h\r
if not errorlevel 2 goto doUpdateSubdirs\r
fc /b subdirs.el ..\site-lisp\subdirs.el >nul 2>&1\r
if not errorlevel 1 goto dontUpdateSubdirs\r
+\r
:doUpdateSubdirs\r
if exist ..\site-lisp\subdirs.el del ..\site-lisp\subdirs.el\r
copy subdirs.el ..\site-lisp\subdirs.el\r
echo Install libtiff development files or use --without-tiff\r
\r
:checkgif\r
-if not "(%HAVE_GIF%)" == "()" goto donelibchecks\r
-if (%gifsupport%) == (N) goto donelibchecks\r
+if not "(%HAVE_GIF%)" == "()" goto checkdistfiles\r
+if (%gifsupport%) == (N) goto checkdistfiles\r
set libsOK=0\r
echo GIF support is missing.\r
echo Install giflib or libungif development files or use --without-gif\r
\r
+:checkdistfiles\r
+if "(%HAVE_DISTFILES%)" == "()" goto donelibchecks\r
+if (%distFilesOk%) == (1) goto donelibchecks\r
+echo.\r
+echo Files specified with option --distfiles could not be found.\r
+echo Fix these issues before running make dist\r
+\r
:donelibchecks\r
if (%libsOK%) == (1) goto success\r
echo.\r
echo Your environment size is too small. Please enlarge it and rerun configure.\r
echo For example, type "command.com /e:2048" to have 2048 bytes available.\r
set $foo$=\r
+\r
:end\r
set prefix=\r
set nodebug=\r
set noopt=\r
+set enablechecking=\r
set profile=\r
set nocygwin=\r
set COMPILER=\r
set doldflags=\r
set mingwflag=\r
set mf=\r
+set distfiles=\r
+set HAVE_DISTFILES=\r
+set distFilesOk=\r
set pngsupport=\r
set jpegsupport=\r
set gifsupport=\r