Rem @echo off
Rem This script compiles wxWindows and some samples/demos with
Rem a range of compilers.
Rem Note that it currently uses batch scripts local to Julian Smart's machine,
Rem to set up the environment correctly.
Rem This is a 4DOS batch file, though 4DOS dependencies have been kept to
Rem a minimum.
Rem Julian Smart, August 12th, 2000
Rem TODO: making a Unicode distribution by modifying setup.h programmatically.
Rem TODO: check differing setup.h options, again by programmatic modification

set WXDIR=%WXWIN%
set FATWXWIN=%WXDIR%
set FULLWXWIN=%WXDIR%
if not %@INDEX["%WXDIR%","wxWindows"] == "-1" set FATWXWIN=%@PATH[%WXDIR%]wxwind~1
if not %@INDEX["%WXDIR%","wxWindows"] == "-1" set FULLWXWIN=%@PATH[%WXDIR%]wxWindows

Rem The following line is for a specific environment -- edit, or comment out
Rem Not working in 4NT?
Rem if not %@INDEX["%WXDIR%","wx2stable"] == "-1" set FATWXWIN=c:\wx2sta~1\wxwind~1

echo Full wxWindows path is %FULLWXWIN%, FAT path is %FATWXWIN%
set BUILDDEST=%TEMP%\wxWinBuild
Rem Only carry on if we haven't specified a single target
set CARRYON=0

rem goto end

if "%1" == "vc6" goto dovc6
if "%1" == "bc55" goto dobc55
if "%1" == "bc50" goto dobc50
if "%1" == "ming2952" goto doming2952
if "%1" == "cygwin11" goto docygwin11
if "%1" == "vc1" goto dovc1
if "%1" == "bc16" goto dobc16

set CARRYON=1

if not direxist %BUILDDEST% mkdir /S %BUILDDEST%


:dovc6

cd %WXDIR%\samples
erase /S *.exe
cd %WXDIR%\demos
erase /S *.exe
cd %WXDIR%\contrib\samples
erase /S *.exe
cd %WXDIR%\utils\dialoged\src
erase /S *.exe
cd %WXDIR%\utils\tex2rtf\src
erase /S *.exe

echo Starting wxWindows build at %_TIME, %_DATE

Rem First, VC++ 6.

echo === VC++ 6 ===
echo ==============

Rem Set up the environment
call msvc6

echo *** VC++ Debug ***
Rem VC++ Debug
cd %WXDIR%\src\msw
nmake -f makefile.vc cleanall
nmake -f makefile.vc
if not direxist %BUILDDEST%\VC6Debug mkdir /S %BUILDDEST%\VC6Debug
erase /F /Y %BUILDDEST%\VC6Debug
cd %WXDIR%\samples
nmake -f makefile.vc clean

Rem Make one sample, just to make sure Debug mode is OK
cd %WXDIR%\samples\controls
nmake -f makefile.vc
copy controls.exe %BUILDDEST%\VC6Debug
nmake -f makefile.vc clean

cd %WXDIR%\src\msw
nmake -f makefile.vc cleanall

echo *** VC++ Release ***

nmake -f makefile.vc cleanall FINAL=1
nmake -f makefile.vc FINAL=1

if not direxist %BUILDDEST%\VC6Release mkdir /S %BUILDDEST%\VC6Release
erase /F /Y %BUILDDEST%\VC6Release

cd %WXDIR%\samples
nmake -f makefile.vc clean FINAL=1
nmake -f makefile.vc FINAL=1
Rem Copy all executables to VC6Release
Rem Euch, this is the only way I can think of right now
Rem to copy them to the same directory. Daft but...
erase %TEMP%\temp.zip
zip16 -r %TEMP%\temp.zip *.exe
unzip32 -o %TEMP%\temp.zip -d %BUILDDEST%\VC6Release
nmake -f makefile.vc clean FINAL=1

cd %WXDIR%\demos
nmake -f makefile.vc clean FINAL=1
nmake -f makefile.vc FINAL=1
Rem Copy all executables to VC6Release
erase %TEMP%\temp.zip
zip16 -r %TEMP%\temp.zip *.exe
unzip32 -o %TEMP%\temp.zip -d %BUILDDEST%\VC6Release
nmake -f makefile.vc clean FINAL=1

Rem Compile OGL
cd %WXDIR%\contrib\src\ogl
nmake -f makefile.vc clean FINAL=1
nmake -f makefile.vc FINAL=1
cd %WXDIR%\contrib\samples\ogl\ogledit
nmake -f makefile.vc clean FINAL=1
nmake -f makefile.vc FINAL=1
copy *.exe %BUILDDEST%\VC6Release
nmake -f makefile.vc clean FINAL=1
cd %WXDIR%\contrib\samples\ogl\studio
nmake -f makefile.vc clean FINAL=1
nmake -f makefile.vc FINAL=1
copy *.exe %BUILDDEST%\VC6Release
nmake -f makefile.vc clean FINAL=1
cd %WXDIR%\contrib\src\ogl
nmake -f makefile.vc clean FINAL=1

Rem Compile Dialog Editor
cd %WXDIR%\utils\dialoged\src
nmake -f makefile.vc clean FINAL=1
nmake -f makefile.vc FINAL=1
copy *.exe %BUILDDEST%\VC6Release
nmake -f makefile.vc clean FINAL=1

Rem Compile Tex2RTF
cd %WXDIR%\utils\tex2rtf\src
nmake -f makefile.vc clean FINAL=1
nmake -f makefile.vc FINAL=1
copy *.exe %BUILDDEST%\VC6Release
nmake -f makefile.vc clean FINAL=1

Rem Clean up

cd %WXDIR%\src\msw
nmake -f makefile.vc cleanall FINAL=1

echo *** VC++ Debug DLL ***

nmake -f makefile.vc cleanall WXMAKINGDLL=1
nmake -f makefile.vc dll pch

if not direxist %BUILDDEST%\VC6DebugDLL mkdir /S %BUILDDEST%\VC6DebugDLL
erase /F /Y %BUILDDEST%\VC6DebugDLL

copy %WXDIR%\lib\*d.dll %BUILDDEST%\VC6DebugDLL

Rem Make one sample, for a sanity check

cd %WXDIR%\samples\controls
nmake -f makefile.vc WXUSINGDLL=1
copy controls.exe %BUILDDEST%\VC6DebugDLL
nmake -f makefile.vc clean

cd %WXDIR%\src\msw
nmake -f makefile.vc cleanall WXMAKINGDLL=1

echo *** VC++ Release DLL ***

nmake -f makefile.vc cleanall FINAL=1 WXMAKINGDLL=1
nmake -f makefile.vc dll pch FINAL=1

if not direxist %BUILDDEST%\VC6ReleaseDLL mkdir /S %BUILDDEST%\VC6ReleaseDLL
erase /F /Y %BUILDDEST%\VC6ReleaseDLL

copy %WXDIR%\lib\*.dll %BUILDDEST%\VC6ReleaseDLL

Rem Make one sample, for a sanity check

cd %WXDIR%\samples\controls
nmake -f makefile.vc WXUSINGDLL=1 FINAL=1
copy controls.exe %BUILDDEST%\VC6ReleaseDLL
nmake -f makefile.vc clean FINAL=1

cd %WXDIR%\src\msw
nmake -f makefile.vc cleanall WXMAKINGDLL=1 FINAL=1

if "%CARRYON" == "0" goto end

:dobc55

echo === BC++ 5.5 ===
echo ================

call bcb55

echo *** WIN32 BC++ Debug ***

Rem WIN32 BC++ Debug
cd %WXDIR%\src\msw
make -f makefile.b32 cleanall
make -f makefile.b32
if not direxist %BUILDDEST%\BC55Debug mkdir /S %BUILDDEST%\BC55Debug
erase /F /Y %BUILDDEST%\BC55Debug
cd %WXDIR%\samples
make -f makefile.b32 clean

Rem Make one sample, just to make sure Debug mode is OK
cd %WXDIR%\samples\controls
make -f makefile.b32
copy controls.exe %BUILDDEST%\BC55Debug
make -f makefile.b32 clean

Rem Compile OGL
cd %WXDIR%\contrib\src\ogl
make -f makefile.b32 clean
make -f makefile.b32
cd %WXDIR%\contrib\samples\ogl\ogledit
make -f makefile.b32 clean
make -f makefile.b32
copy *.exe %BUILDDEST%\BC55Debug
make -f makefile.b32 clean
cd %WXDIR%\contrib\samples\ogl\studio
make -f makefile.b32 clean
make -f makefile.b32
copy *.exe %BUILDDEST%\BC55Debug
make -f makefile.b32 clean
cd %WXDIR%\contrib\src\ogl
make -f makefile.b32 clean

cd %WXDIR%\src\msw
make -f makefile.b32 cleanall

goto bcdebugdll

echo *** WIN32 BC++ Release ***

make -f makefile.b32 cleanall FINAL=1
make -f makefile.b32 FINAL=1

if not direxist %BUILDDEST%\BC55Release mkdir /S %BUILDDEST%\BC55Release
erase /F /Y %BUILDDEST%\BC55Release

cd %WXDIR%\samples
make -f makefile.b32 clean FINAL=1
make -f makefile.b32 FINAL=1
Rem Copy all executables to BC55Release
erase %TEMP%\temp.zip
zip16 -r %TEMP%\temp.zip *.exe
unzip32 -o %TEMP%\temp.zip -d %BUILDDEST%\BC55Release
make -f makefile.b32 clean FINAL=1

cd %WXDIR%\demos
make -f makefile.b32 clean FINAL=1
make -f makefile.b32 FINAL=1
Rem Copy all executables to BC55Release
erase %TEMP%\temp.zip
zip16 -r %TEMP%\temp.zip *.exe
unzip32 -o %TEMP%\temp.zip -d %BUILDDEST%\BC55Release
make -f makefile.b32 clean FINAL=1

Rem Compile OGL
cd %WXDIR%\contrib\src\ogl
make -f makefile.b32 clean FINAL=1
make -f makefile.b32 FINAL=1
cd %WXDIR%\contrib\samples\ogl\ogledit
make -f makefile.b32 clean FINAL=1
make -f makefile.b32 FINAL=1
copy *.exe %BUILDDEST%\BC55Release
make -f makefile.b32 clean FINAL=1
cd %WXDIR%\contrib\samples\ogl\studio
make -f makefile.b32 clean FINAL=1
make -f makefile.b32 FINAL=1
copy *.exe %BUILDDEST%\BC55Release
make -f makefile.b32 clean FINAL=1
cd %WXDIR%\contrib\src\ogl
make -f makefile.b32 clean FINAL=1

Rem Compile Dialog Editor
cd %WXDIR%\utils\dialoged\src
make -f makefile.b32 clean FINAL=1
make -f makefile.b32 FINAL=1
copy *.exe %BUILDDEST%\BC55Release
make -f makefile.b32 clean FINAL=1

Rem Compile Tex2RTF
cd %WXDIR%\utils\tex2rtf\src
make -f makefile.b32 clean FINAL=1
make -f makefile.b32 FINAL=1
copy *.exe %BUILDDEST%\BC55Release
make -f makefile.b32 clean FINAL=1

Rem Clean up

cd %WXDIR%\src\msw
make -f makefile.b32 cleanall FINAL=1

:bcdebugdll

echo *** WIN32 BC++ Debug DLL ***

make -f makefile.b32 cleanall
make -f makefile.b32 dll

if not direxist %BUILDDEST%\BC55DebugDLL mkdir /S %BUILDDEST%\BC55DebugDLL
erase /F /Y %BUILDDEST%\BC55DebugDLL

copy %WXDIR%\lib\*.dll %BUILDDEST%\BC55DebugDLL

Rem Make one sample, for a sanity check

cd %WXDIR%\samples\controls
make -f makefile.b32 WXUSINGDLL=1
copy controls.exe %BUILDDEST%\BC55DebugDLL
make -f makefile.b32 clean

cd %WXDIR%\src\msw
make -f makefile.b32 cleanall

if "%CARRYON" == "0" goto end

Rem Skip BC++ 5.0, obsolete
goto docygwin11
:dobc50


echo === BC++ 5.0 ===
echo ================

call borland

echo *** WIN32 BC++ Debug ***

Rem WIN32 BC++ Debug
cd %WXDIR%\src\msw
make -f makefile.b32 cleanall
make -f makefile.b32
if not direxist %BUILDDEST%\BC50Debug mkdir /S %BUILDDEST%\BC50Debug
erase /F /Y %BUILDDEST%\BC50Debug
cd %WXDIR%\samples
make -f makefile.b32 clean

Rem Make one sample, just to make sure Debug mode is OK
cd %WXDIR%\samples\controls
make -f makefile.b32
copy controls.exe %BUILDDEST%\BC50Debug
make -f makefile.b32 clean

cd %WXDIR%\src\msw
make -f makefile.b32 cleanall

if "%CARRYON" == "0" goto end

:docygwin11


echo === Cygwin 1.1 ===
echo ==================

call cygwin11

echo *** Cygwin Debug ***

Rem Cygwin Release
cd %WXDIR%\src\msw
make -f makefile.g95 cleanall
make -f makefile.g95 FINAL=1
if not direxist %BUILDDEST%\Cygwin11Release mkdir /S %BUILDDEST%\Cygwin11Release
erase /F /Y %BUILDDEST%\Cygwin11Release
cd %WXDIR%\samples
make -f makefile.g95 clean FINAL=1

if not direxist %BUILDDEST%\Cygwin11Release mkdir /S %BUILDDEST%\Cygwin11Release
erase /F /Y %BUILDDEST%\Cygwin11Release

cd %WXDIR%\samples
make -f makefile.g95 clean FINAL=1
make -f makefile.g95 FINAL=1
Rem Copy all executables to Cygwin11Release
erase %TEMP%\temp.zip
zip16 -r %TEMP%\temp.zip *.exe
unzip32 -o %TEMP%\temp.zip -d %BUILDDEST%\Cygwin11Release
make -f makefile.g95 clean FINAL=1

cd %WXDIR%\demos
make -f makefile.g95 clean FINAL=1
make -f makefile.g95 FINAL=1
Rem Copy all executables to Cygwin11Release
erase %TEMP%\temp.zip
zip16 -r %TEMP%\temp.zip *.exe
unzip32 -o %TEMP%\temp.zip -d %BUILDDEST%\Cygwin11Release
make -f makefile.g95 clean FINAL=1

Rem Compile OGL
cd %WXDIR%\contrib\src\ogl
make -f makefile.g95 clean FINAL=1
make -f makefile.g95 FINAL=1
cd %WXDIR%\contrib\samples\ogl\ogledit
make -f makefile.g95 clean FINAL=1
make -f makefile.g95 FINAL=1
copy *.exe %BUILDDEST%\Cygwin11Release
make -f makefile.g95 clean FINAL=1
cd %WXDIR%\contrib\samples\ogl\studio
make -f makefile.g95 clean FINAL=1
make -f makefile.g95 FINAL=1
copy *.exe %BUILDDEST%\Cygwin11Release
make -f makefile.g95 clean FINAL=1
cd %WXDIR%\contrib\src\ogl
make -f makefile.g95 clean FINAL=1

Rem Compile Dialog Editor
cd %WXDIR%\utils\dialoged\src
make -f makefile.g95 clean FINAL=1
make -f makefile.g95 FINAL=1
copy *.exe %BUILDDEST%\Cygwin11Release
make -f makefile.g95 clean FINAL=1

Rem Compile Tex2RTF
cd %WXDIR%\utils\tex2rtf\src
make -f makefile.g95 clean FINAL=1
make -f makefile.g95 FINAL=1
copy *.exe %BUILDDEST%\Cygwin11Release
make -f makefile.g95 clean FINAL=1

echo Stripping executables...
strip %BUILDDEST%\Cygwin11Release\*.exe

Rem Cleanup

cd %WXDIR%\src\msw
make -f makefile.g95 cleanall

if "%CARRYON" == "0" goto end

:doming2952

echo === Mingw32 2.95.2 ===
echo ======================

call ming2952

echo *** Cygwin Debug ***

Rem Cygwin Release
cd %WXDIR%\src\msw
make -f makefile.g95 cleanall
make -f makefile.g95 FINAL=1
if not direxist %BUILDDEST%\Ming2952Release mkdir /S %BUILDDEST%\Ming2952Release
erase /F /Y %BUILDDEST%\Ming2952Release
cd %WXDIR%\samples
make -f makefile.g95 clean FINAL=1

if not direxist %BUILDDEST%\Ming2952Release mkdir /S %BUILDDEST%\Ming2952Release
erase /F /Y %BUILDDEST%\Ming2952Release

cd %WXDIR%\samples
make -f makefile.g95 clean FINAL=1
make -f makefile.g95 FINAL=1
Rem Copy all executables to Ming2952Release
erase %TEMP%\temp.zip
zip16 -r %TEMP%\temp.zip *.exe
unzip32 -o %TEMP%\temp.zip -d %BUILDDEST%\Ming2952Release
make -f makefile.g95 clean FINAL=1

cd %WXDIR%\demos
make -f makefile.g95 clean FINAL=1
make -f makefile.g95 FINAL=1
Rem Copy all executables to Ming2952Release
erase %TEMP%\temp.zip
zip16 -r %TEMP%\temp.zip *.exe
unzip32 -o %TEMP%\temp.zip -d %BUILDDEST%\Ming2952Release
make -f makefile.g95 clean FINAL=1

Rem Compile OGL
cd %WXDIR%\contrib\src\ogl
make -f makefile.g95 clean FINAL=1
make -f makefile.g95 FINAL=1
cd %WXDIR%\contrib\samples\ogl\ogledit
make -f makefile.g95 clean FINAL=1
make -f makefile.g95 FINAL=1
copy *.exe %BUILDDEST%\Ming2952Release
make -f makefile.g95 clean FINAL=1
cd %WXDIR%\contrib\samples\ogl\studio
make -f makefile.g95 clean FINAL=1
make -f makefile.g95 FINAL=1
copy *.exe %BUILDDEST%\Ming2952Release
make -f makefile.g95 clean FINAL=1
cd %WXDIR%\contrib\src\ogl
make -f makefile.g95 clean FINAL=1

Rem Compile Dialog Editor
cd %WXDIR%\utils\dialoged\src
make -f makefile.g95 clean FINAL=1
make -f makefile.g95 FINAL=1
copy *.exe %BUILDDEST%\Ming2952Release
make -f makefile.g95 clean FINAL=1

Rem Compile Tex2RTF
cd %WXDIR%\utils\tex2rtf\src
make -f makefile.g95 clean FINAL=1
make -f makefile.g95 FINAL=1
copy *.exe %BUILDDEST%\Ming2952Release
make -f makefile.g95 clean FINAL=1

echo Stripping executables...
strip %BUILDDEST%\Ming2952Release\*.exe

Rem Cleanup

cd %WXDIR%\src\msw
make -f makefile.g95 cleanall

if "%CARRYON" == "0" goto end

:dovc1

echo === 16-bit VC++ ===
echo ===================

Rem Set up the environment
call msvc1

Rem Needs full wxWindows path for making libraries
set WXWIN=%FULLWXWIN%

echo *** VC++ Debug ***
Rem VC++ Debug
cd %WXDIR%\src\msw
nmake -f makefile.dos cleanall
nmake -f makefile.dos
if not direxist %BUILDDEST%\VC1Debug mkdir /S %BUILDDEST%\VC1Debug
erase /F /Y %BUILDDEST%\VC1Debug

Rem Make one sample, just to make sure Debug mode is OK
cd %WXDIR%\samples\minimal
nmake -f makefile.dos clean
Rem Needs FAT wxWindows path for making executables
set WXWIN=%FATWXWIN%
nmake -f makefile.dos

copy minimal.exe /S %BUILDDEST%\VC1Debug
nmake -f makefile.dos clean

cd %WXDIR%\src\msw
nmake -f makefile.dos cleanall

Rem Needs full wxWindows path for making libraries
set WXWIN=%FULLWXWIN%

echo *** VC++ Release ***

nmake -f makefile.dos cleanall FINAL=1
nmake -f makefile.dos FINAL=1

if not direxist %BUILDDEST%\VC1Release mkdir /S %BUILDDEST%\VC1Release
erase /F /Y %BUILDDEST%\VC1Release

Rem Make one sample, just to make sure Release mode is OK
cd %WXDIR%\samples\minimal
nmake -f makefile.dos clean
nmake -f makefile.dos FINAL=1
Rem Needs FAT wxWindows path for making executables
set WXWIN=%FATWXWIN%
nmake -f makefile.dos FINAL=1
copy minimal.exe /S %BUILDDEST%\VC1Release
nmake -f makefile.dos clean
set WXWIN=%tmpwxwin%

Rem Clean up

cd %WXDIR%\src\msw
nmake -f makefile.dos cleanall FINAL=1

if "%CARRYON" == "0" goto end

:dobc16

echo === 16-bit BC++ ===
echo ===================

Rem Set up the environment
call borland

echo *** 16-bit BC++ Debug ***
Rem 16-bit BC++ Debug
cd %WXDIR%\src\msw
make -f makefile.bcc cleanall
make -f makefile.bcc
if not direxist %BUILDDEST%\BC16Debug mkdir /S %BUILDDEST%\BC16Debug
erase /F /Y %BUILDDEST%\BC16Debug

Rem Make one sample, just to make sure Debug mode is OK
cd %WXDIR%\samples\minimal
make -f makefile.bcc clean
make -f makefile.bcc
copy minimal.exe /S %BUILDDEST%\BC16Debug
make -f makefile.bcc clean

cd %WXDIR%\src\msw
make -f makefile.bcc cleanall

echo *** 16-bit BC++ Release ***

make -f makefile.bcc cleanall FINAL=1
make -f makefile.bcc FINAL=1

if not direxist %BUILDDEST%\BC16Release mkdir /S %BUILDDEST%\BC16Release
erase /F /Y %BUILDDEST%\BC16Release

Rem Make one sample, just to make sure Release mode is OK
cd %WXDIR%\samples\minimal
make -f makefile.bcc clean
make -f makefile.bcc FINAL=1
copy minimal.exe /S %BUILDDEST%\BC16Release
make -f makefile.bcc clean

Rem Clean up

cd %WXDIR%\src\msw
make -f makefile.bcc cleanall FINAL=1

:end

echo Finished wxWindows build at %_TIME, %_DATE

