@echo off

rem SetLocal EnableDelayedExpansion

if "%1" == "" goto ERR_NOPARM

set curr_dir=%cd%

cd ..\..\msw

rem VS2017 changes the build directory when environment batch files
rem are called, so remember where we are building from.

set "VSCMD_START_DIR=%CD%"

rem ================ wxWidgets Official Build ===============
rem
rem Open a command prompt and run this from the build\tools\msvs folder.
rem Specify the compiler version to use.
rem
rem ========================================================

set compvers="Unknown"

if "%1" == "vc141" (
  @echo Building for vc141 / vs2017
  set comp=141
  set compvers=vc141

  if NOT "%VS150COMNTOOLS%" == "" (
    call "%VS150COMNTOOLS%VsDevCmd.bat"
  )
  if "%VS150COMNTOOLS%" == "" (
    call %curr_dir%\findvs 15.0 16.0

    if errorlevel 1 (
      @echo vswhere.exe must be in your path or a VS2017 developer command prompt must be used.
      goto end
    )
  )
)
if "%1" == "vc140" (
  @echo Building for vc140 / vs2015
  set comp=140
  set compvers=vc140
  call "%VS140COMNTOOLS%VsDevCmd.bat"
)
if "%1" == "vc120" (
  @echo Building for vc120 / vs2013
  set comp=120
  set compvers=vc120
  call "%VS120COMNTOOLS%VsDevCmd.bat"
)
if "%1" == "vc110" (
  @echo Building for vc110 / vs2012
  set comp=110
  set compvers=vc110
  call "%VS110COMNTOOLS%VsDevCmd.bat"
)
if "%1" == "vc100" (
  @echo Building for vc100 / vs2010
  set comp=100
  set compvers=vc100
  if "%WINDOWS71SDK%" == "" set WINDOWS71SDK=C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\
  call "%WINDOWS71SDK%SetEnv.cmd"
)
if "%1" == "vc90" (
  @echo Building for vc90 / vs2008
  set comp=90
  set compvers=vc90
  if "%WINDOWS61SDK%" == "" set WINDOWS61SDK=C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin\
)

if %compvers% == "Unknown" goto ERR_UNKNOWNCOMP

if %compvers% == "vc90" (
@echo ============================================================
@echo This will only succeed if run from a SDK 6.1 command prompt.
@echo ============================================================
)

@echo Removing the existing destination so that a complete rebuild occurs.

rmdir %compvers%_mswuddll /s /q
rmdir %compvers%_mswuddll_x64 /s /q
rmdir %compvers%_mswudll /s /q
rmdir %compvers%_mswudll_x64 /s /q

rmdir ..\..\lib\%compvers%_dll /s /q
rmdir ..\..\lib\%compvers%_x64_dll /s /q

@echo Delete the build output files from the last run.

del %compvers%x86_Debug.txt
del %compvers%x86_Release.txt
del %compvers%x64_Debug.txt
del %compvers%x64_Release.txt

if "%compvers%" == "vc141" call "%VS150COMNTOOLS%..\..\VC\Auxiliary\Build\vcvarsall.bat" x64
if "%compvers%" == "vc140" call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x64
if "%compvers%" == "vc120" call "%VS120COMNTOOLS%..\..\VC\vcvarsall.bat" x86_amd64
if "%compvers%" == "vc110" call "%VS110COMNTOOLS%..\..\VC\vcvarsall.bat" x86_amd64
if "%compvers%" == "vc100" call "%WINDOWS71SDK%SetEnv.Cmd" /X64 /Release
if "%compvers%" == "vc90"  call "%WINDOWS61SDK%SetEnv.Cmd" /X64 /Release

@echo 64 bit release build

nmake -f makefile.vc BUILD=release SHARED=1 COMPILER_VERSION=%comp% OFFICIAL_BUILD=1 TARGET_CPU=AMD64 >> %compvers%x64_Release.txt

if ERRORLEVEL 1 goto ERR_BUILD

set build_dir=%cd%

cd ..\..\utils\wxrc

rmdir %compvers%_mswudll_x64 /s /q
del %compvers%x64_Release.txt
nmake -f makefile.vc BUILD=release SHARED=1 COMPILER_VERSION=%comp% OFFICIAL_BUILD=1 TARGET_CPU=AMD64 >> %compvers%x64_Release.txt

if ERRORLEVEL 1 goto ERR_BUILD

cd %build_dir%

@echo 64 bit debug build

if "%compvers%" == "vc100" call "%WINDOWS71SDK%SetEnv.Cmd" /X64 /Debug
if "%compvers%" == "vc90"  call "%WINDOWS61SDK%SetEnv.Cmd" /X64 /Debug

nmake -f makefile.vc BUILD=debug SHARED=1 COMPILER_VERSION=%comp% OFFICIAL_BUILD=1 TARGET_CPU=AMD64 >> %compvers%x64_Debug.txt

if ERRORLEVEL 1 goto ERR_BUILD

if "%compvers%" == "vc141" call "%VS150COMNTOOLS%..\..\VC\Auxiliary\Build\vcvarsall.bat" x86
if "%compvers%" == "vc140" call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86
if "%compvers%" == "vc120" call "%VS120COMNTOOLS%..\..\VC\vcvarsall.bat" x86
if "%compvers%" == "vc110" call "%VS110COMNTOOLS%..\..\VC\vcvarsall.bat" x86
if "%compvers%" == "vc100" call "%WINDOWS71SDK%SetEnv.Cmd" /X86 /Release
if "%compvers%" == "vc90"  call "%WINDOWS61SDK%SetEnv.Cmd" /X86 /Release

@echo 32 bit release build

nmake -f makefile.vc BUILD=release SHARED=1 COMPILER_VERSION=%comp% OFFICIAL_BUILD=1 CPPFLAGS=/arch:SSE CFLAGS=/arch:SSE >> %compvers%x86_Release.txt

if ERRORLEVEL 1 goto ERR_BUILD

cd ..\..\utils\wxrc

rmdir %compvers%_mswuddll /s /q
del %compvers%x86_Release.txt
nmake -f makefile.vc BUILD=release SHARED=1 COMPILER_VERSION=%comp% OFFICIAL_BUILD=1 CPPFLAGS=/arch:SSE CFLAGS=/arch:SSE >> %compvers%x86_Release.txt

cd %build_dir%

if ERRORLEVEL 1 goto ERR_BUILD

@echo 32 bit debug build

if "%compvers%" == "vc100" call "%WINDOWS71SDK%SetEnv.Cmd" /X86 /Debug
if "%compvers%" == "vc90"  call "%WINDOWS61SDK%SetEnv.Cmd" /X86 /Debug

nmake -f makefile.vc BUILD=debug SHARED=1 COMPILER_VERSION=%comp% OFFICIAL_BUILD=1 CPPFLAGS=/arch:SSE CFLAGS=/arch:SSE >> %compvers%x86_Debug.txt

if ERRORLEVEL 1 goto ERR_BUILD

@echo Building Packages

cd %curr_dir%

call package %compvers%

goto End

:ERR_BUILD

goto End
   @echo.
   @echo BUILD ERROR

:ERR_UNKNOWNCOMP
   @echo.
   @echo UNKNOWN COMPILER VERSION
   goto VERSIONS

goto End

:ERR_NOPARM
   @echo.
   @echo ERROR: NO PARAMETER SUPPLIED
   goto VERSIONS

:VERSIONS
   @echo.
   @echo Compiler Version: One of -
   @echo vc141
   @echo vc140
   @echo vc120
   @echo vc110
   @echo vc100

:End

@echo Finished.

cd %curr_dir%
