rem ************************** R E A D M E **********************************
rem
rem The following variables are used in this batch program:
rem
rem     COMPILER_EXE:           Refers to the name (and location) of your compiler.
rem                             [Default: C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\csc.exe]
rem
rem     NANT_CVS_DIR:           Refers to cvs checkout of NAnt that will be built.
rem                             [Default: NONE]
rem
rem     LIB_REPOSITORY_DIR:     A directory containing the libraries that NAnt 
rem                             depends on to build itself and it's tasks.
rem                             [Default: NONE] 
rem
rem                             NOTE: This is currently just a copy of the NAnt
rem                             bin directory and there is an expectation that the
rem                             lib directory matches this directory structure.
rem
rem *************************************************************************



rem ********************** C O M P I L E R **********************************
if not "%COMPILER_EXE%"=="" set _COMPILER_EXE=%COMPILER_EXE% goto gotCompiler else gotoDefaultCompiler

:defaultCompiler
rem **** M I C R O S O F T ****
set _FRAMEWORK_TYPE=net
set _FRAMEWORK_VERSION=1.0
set _COMPILER_EXE=C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\csc.exe


rem **** M O N O ****
rem set _FRAMEWORK_TYPE=mono
rem set _FRAMEWORK_VERSION=1.0
rem set _COMPILER_EXE="C:\Program Files\Mono-1.0.1\bin\mcs.bat"

:gotCompiler
echo Using compiler %_COMPILER_EXE%

rem *************************************************************************



rem ************ E N V I R O N M E N T  V A R I A B L E S *******************
if not "%NANT_CVS_DIR%"=="" goto :gotNantCvsDir
   
echo "ERROR: Set environment variable NANT_CVS_DIR to point at your NAnt checkout.
goto end

:gotNAntCvsDir
set _NANT_CVS_DIR=%NANT_CVS_DIR%


if not "%LIB_REPOSITORY_DIR%"=="" goto :gotLibRepositoryDir

echo "ERROR: Set environment variable LIB_REPOSITORY_DIR to point to the directory containing your dependant libraries.
goto end

:gotLibRepositoryDir
set _LIB_REPOSITORY_DIR=%LIB_REPOSITORY_DIR%

rem *************************************************************************



rem ********************** B O O T S T R A P ********************************
echo ---- S E T U P  B O O T S T R A P ----

echo Removing directory %_NANT_CVS_DIR%\bin
rmdir /S /Q %_NANT_CVS_DIR%\bin
rmdir /S /Q %_NANT_CVS_DIR%\build

mkdir %_NANT_CVS_DIR%\bin
mkdir %_NANT_CVS_DIR%\bin\lib
mkdir %_NANT_CVS_DIR%\bin\lib\mono
mkdir %_NANT_CVS_DIR%\bin\lib\mono\1.0
mkdir %_NANT_CVS_DIR%\bin\lib\mono\2.0
mkdir %_NANT_CVS_DIR%\bin\lib\net
mkdir %_NANT_CVS_DIR%\bin\lib\net\1.0
mkdir %_NANT_CVS_DIR%\bin\lib\net\1.1
mkdir %_NANT_CVS_DIR%\bin\lib\net\2.0

echo ---- D E P E N D E N C I E S ----
copy %_LIB_REPOSITORY_DIR%\bin\log4net.dll %_NANT_CVS_DIR%\bin\log4net.dll
copy %_LIB_REPOSITORY_DIR%\bin\lib\%_FRAMEWORK_TYPE%\%_FRAMEWORK_VERSION%\NDoc.Core.dll %_NANT_CVS_DIR%\bin\lib\%_FRAMEWORK_TYPE%\%_FRAMEWORK_VERSION%\NDoc.Core.dll

echo ---- B U I L D ----
rem     ----  Build NAnt.exe                ----
call %_COMPILER_EXE%     /out:%_NANT_CVS_DIR%\bin\NAnt.exe /nowarn:1591,0618 /target:exe /reference:%_NANT_CVS_DIR%\bin\log4net.dll /recurse:%_NANT_CVS_DIR%\src\NAnt.Console\*.cs

rem     ----  Build NAnt.Core.dll           ----
call %_COMPILER_EXE%     /out:%_NANT_CVS_DIR%\bin\NAnt.Core.dll /nowarn:1591,0618 /target:library /reference:%_NANT_CVS_DIR%\bin\log4net.dll /reference:System.Web.dll /recurse:%_NANT_CVS_DIR%\src\NAnt.Core\*.cs

rem     ----  Build NAnt.Win32Tasks.dll    ----
call %_COMPILER_EXE%     /out:%_NANT_CVS_DIR%\bin\NAnt.Win32Tasks.dll /nowarn:1591,0618 /target:library /reference:%_NANT_CVS_DIR%\bin\NAnt.Core.dll /recurse:%_NANT_CVS_DIR%\src\NAnt.Win32\*.cs

rem     ----  Build NAnt.DotNetTasks.dll    ----
call %_COMPILER_EXE%     /out:%_NANT_CVS_DIR%\bin\NAnt.DotNetTasks.dll /nowarn:1591,0618 /target:library /reference:%_NANT_CVS_DIR%\bin\NAnt.Core.dll /reference:%_NANT_CVS_DIR%\bin\lib\%_FRAMEWORK_TYPE%\%_FRAMEWORK_VERSION%\NDoc.Core.dll /recurse:%_NANT_CVS_DIR%\src\NAnt.DotNet\*.cs
rem *************************************************************************




rem ***************************** M A I N *************************************

echo ---- S E T U P  M A I N ----

copy %_LIB_REPOSITORY_DIR%\bin\NAnt.exe.config %_NANT_CVS_DIR%\bin\NAnt.exe.config

echo ---- D E P E N D E N C I E S ----
copy %_LIB_REPOSITORY_DIR%\bin\lib\ICSharpCode.SharpZipLib.dll %_NANT_CVS_DIR%\bin\lib\ICSharpCode.SharpZipLib.dll

copy %_LIB_REPOSITORY_DIR%\bin\lib\NUnitCore.dll %_NANT_CVS_DIR%\bin\lib\NUnitCore.dll
copy %_LIB_REPOSITORY_DIR%\bin\lib\%_FRAMEWORK_TYPE%\%_FRAMEWORK_VERSION%\nunit.core.dll %_NANT_CVS_DIR%\bin\lib\%_FRAMEWORK_TYPE%\%_FRAMEWORK_VERSION%\nunit.core.dll
copy %_LIB_REPOSITORY_DIR%\bin\lib\%_FRAMEWORK_TYPE%\%_FRAMEWORK_VERSION%\nunit.framework.dll %_NANT_CVS_DIR%\bin\lib\%_FRAMEWORK_TYPE%\%_FRAMEWORK_VERSION%\nunit.framework.dll
copy %_LIB_REPOSITORY_DIR%\bin\lib\%_FRAMEWORK_TYPE%\%_FRAMEWORK_VERSION%\nunit.util.dll %_NANT_CVS_DIR%\bin\lib\%_FRAMEWORK_TYPE%\%_FRAMEWORK_VERSION%\nunit.util.dll

copy %_LIB_REPOSITORY_DIR%\bin\scvs.exe %_NANT_CVS_DIR%\bin\scvs.exe
copy %_LIB_REPOSITORY_DIR%\bin\lib\ICSharpCode.SharpCvsLib.Console.dll %_NANT_CVS_DIR%\bin\lib\ICSharpCode.SharpCvsLib.Console.dll
copy %_LIB_REPOSITORY_DIR%\bin\lib\ICSharpCode.SharpCvsLib.dll %_NANT_CVS_DIR%\bin\lib\ICSharpCode.SharpCvsLib.dll

echo ---- B U I L D ----

%_NANT_CVS_DIR%\bin\NAnt.exe -t:%_FRAMEWORK_TYPE%-%_FRAMEWORK_VERSION% -buildfile:%_NANT_CVS_DIR%\NAnt.build build

rem *************************************************************************

:end

set _NANT_CVS_DIR=""
set _COMPILER_EXE=""
set _LIB_REPOSITORY_DIR=""