Blame tool/GetTclKit.bat

Packit 87b942
@ECHO OFF
Packit 87b942

Packit 87b942
::
Packit 87b942
:: GetTclKit.bat --
Packit 87b942
::
Packit 87b942
:: TclKit Download Tool
Packit 87b942
::
Packit 87b942

Packit 87b942
SETLOCAL
Packit 87b942

Packit 87b942
REM SET __ECHO=ECHO
Packit 87b942
REM SET __ECHO2=ECHO
Packit 87b942
REM SET __ECHO3=ECHO
Packit 87b942
IF NOT DEFINED _AECHO (SET _AECHO=REM)
Packit 87b942
IF NOT DEFINED _CECHO (SET _CECHO=REM)
Packit 87b942
IF NOT DEFINED _VECHO (SET _VECHO=REM)
Packit 87b942

Packit 87b942
SET OVERWRITE=^>
Packit 87b942
IF DEFINED __ECHO SET OVERWRITE=^^^>
Packit 87b942

Packit 87b942
SET APPEND=^>^>
Packit 87b942
IF DEFINED __ECHO SET APPEND=^^^>^^^>
Packit 87b942

Packit 87b942
SET PROCESSOR=%1
Packit 87b942

Packit 87b942
IF DEFINED PROCESSOR (
Packit 87b942
  CALL :fn_UnquoteVariable PROCESSOR
Packit 87b942
) ELSE (
Packit 87b942
  GOTO usage
Packit 87b942
)
Packit 87b942

Packit 87b942
SET PROCESSOR=%PROCESSOR:AMD64=x64%
Packit 87b942

Packit 87b942
%_VECHO% Processor = '%PROCESSOR%'
Packit 87b942

Packit 87b942
SET DUMMY2=%2
Packit 87b942

Packit 87b942
IF DEFINED DUMMY2 (
Packit 87b942
  GOTO usage
Packit 87b942
)
Packit 87b942

Packit 87b942
SET ROOT=%~dp0\..
Packit 87b942
SET ROOT=%ROOT:\\=\%
Packit 87b942

Packit 87b942
%_VECHO% Root = '%ROOT%'
Packit 87b942

Packit 87b942
SET TOOLS=%~dp0
Packit 87b942
SET TOOLS=%TOOLS:~0,-1%
Packit 87b942

Packit 87b942
%_VECHO% Tools = '%TOOLS%'
Packit 87b942

Packit 87b942
IF NOT DEFINED windir (
Packit 87b942
  ECHO The windir environment variable must be set first.
Packit 87b942
  GOTO errors
Packit 87b942
)
Packit 87b942

Packit 87b942
%_VECHO% WinDir = '%windir%'
Packit 87b942

Packit 87b942
IF NOT DEFINED TEMP (
Packit 87b942
  ECHO The TEMP environment variable must be set first.
Packit 87b942
  GOTO errors
Packit 87b942
)
Packit 87b942

Packit 87b942
%_VECHO% Temp = '%TEMP%'
Packit 87b942

Packit 87b942
IF NOT DEFINED TCLKIT_URI (
Packit 87b942
  SET TCLKIT_URI=https://tclsh.com/
Packit 87b942
)
Packit 87b942

Packit 87b942
%_VECHO% TclKitUri = '%TCLKIT_URI%'
Packit 87b942

Packit 87b942
IF /I "%PROCESSOR%" == "x86" (
Packit 87b942
  CALL :fn_TclKitX86Variables
Packit 87b942
) ELSE IF /I "%PROCESSOR%" == "x64" (
Packit 87b942
  CALL :fn_TclKitX64Variables
Packit 87b942
) ELSE (
Packit 87b942
  GOTO usage
Packit 87b942
)
Packit 87b942

Packit 87b942
%_VECHO% TclKitVersion = '%TCLKIT_VERSION%'
Packit 87b942
%_VECHO% TclKitPatchLevel = '%TCLKIT_PATCHLEVEL%'
Packit 87b942
%_VECHO% TclKitNoEnv = '%TCLKIT_NOENV%'
Packit 87b942
%_VECHO% TclKitNoSdk = '%TCLKIT_NOSDK%'
Packit 87b942
%_VECHO% TclKitExe = '%TCLKIT_EXE%'
Packit 87b942
%_VECHO% TclKitLib = '%TCLKIT_LIB%'
Packit 87b942
%_VECHO% TclKitLibStub = '%TCLKIT_LIB_STUB%'
Packit 87b942
%_VECHO% TclKitSdk = '%TCLKIT_SDK%'
Packit 87b942
%_VECHO% TclKitSdkZip = '%TCLKIT_SDK_ZIP%'
Packit 87b942
%_VECHO% TclKitFiles = '%TCLKIT_FILES%'
Packit 87b942

Packit 87b942
CALL :fn_ResetErrorLevel
Packit 87b942

Packit 87b942
FOR %%T IN (csc.exe) DO (
Packit 87b942
  SET %%T_PATH=%%~dp$PATH:T
Packit 87b942
)
Packit 87b942

Packit 87b942
%_VECHO% Csc.exe_PATH = '%csc.exe_PATH%'
Packit 87b942

Packit 87b942
IF DEFINED csc.exe_PATH (
Packit 87b942
  GOTO skip_addToPath
Packit 87b942
)
Packit 87b942

Packit 87b942
IF DEFINED FRAMEWORKDIR (
Packit 87b942
  REM Use the existing .NET Framework directory...
Packit 87b942
) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v2.0.50727" (
Packit 87b942
  SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v2.0.50727
Packit 87b942
) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v3.5" (
Packit 87b942
  SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v3.5
Packit 87b942
) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v4.0.30319" (
Packit 87b942
  SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v4.0.30319
Packit 87b942
) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v2.0.50727" (
Packit 87b942
  SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v2.0.50727
Packit 87b942
) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v3.5" (
Packit 87b942
  SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v3.5
Packit 87b942
) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v4.0.30319" (
Packit 87b942
  SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v4.0.30319
Packit 87b942
) ELSE (
Packit 87b942
  ECHO No suitable version of the .NET Framework appears to be installed.
Packit 87b942
  GOTO errors
Packit 87b942
)
Packit 87b942

Packit 87b942
%_VECHO% FrameworkDir = '%FRAMEWORKDIR%'
Packit 87b942

Packit 87b942
IF NOT EXIST "%FRAMEWORKDIR%\csc.exe" (
Packit 87b942
  ECHO The file "%FRAMEWORKDIR%\csc.exe" is missing.
Packit 87b942
  GOTO errors
Packit 87b942
)
Packit 87b942

Packit 87b942
CALL :fn_PrependToPath FRAMEWORKDIR
Packit 87b942

Packit 87b942
:skip_addToPath
Packit 87b942

Packit 87b942
IF NOT EXIST "%TEMP%\GetFile.exe" (
Packit 87b942
  %__ECHO% csc.exe "/out:%TEMP%\GetFile.exe" /target:exe "%TOOLS%\GetFile.cs"
Packit 87b942

Packit 87b942
  IF ERRORLEVEL 1 (
Packit 87b942
    ECHO Compilation of "%TOOLS%\GetFile.cs" failed.
Packit 87b942
    GOTO errors
Packit 87b942
  )
Packit 87b942
)
Packit 87b942

Packit 87b942
FOR %%F IN (%TCLKIT_FILES%) DO (
Packit 87b942
  IF NOT EXIST "%TEMP%\%%F" (
Packit 87b942
    %__ECHO% "%TEMP%\GetFile.exe" "%TCLKIT_URI%%%F"
Packit 87b942

Packit 87b942
    IF ERRORLEVEL 1 (
Packit 87b942
      ECHO Download of "%%F" from "%TCLKIT_URI%" failed.
Packit 87b942
      GOTO errors
Packit 87b942
    )
Packit 87b942
  )
Packit 87b942
)
Packit 87b942

Packit 87b942
IF DEFINED TCLKIT_NOENV GOTO skip_sdkUnZip
Packit 87b942
IF DEFINED TCLKIT_NOSDK GOTO skip_sdkUnZip
Packit 87b942

Packit 87b942
IF NOT EXIST "%TEMP%\%TCLKIT_SDK%" (
Packit 87b942
  %__ECHO% MKDIR "%TEMP%\%TCLKIT_SDK%"
Packit 87b942

Packit 87b942
  IF ERRORLEVEL 1 (
Packit 87b942
    ECHO Could not create directory "%TEMP%\%TCLKIT_SDK%".
Packit 87b942
    GOTO errors
Packit 87b942
  )
Packit 87b942
)
Packit 87b942

Packit 87b942
%__ECHO% "%TEMP%\unzip.exe" -n "%TEMP%\%TCLKIT_SDK_ZIP%" -d "%TEMP%\%TCLKIT_SDK%"
Packit 87b942

Packit 87b942
IF ERRORLEVEL 1 (
Packit 87b942
  ECHO Could not unzip "%TEMP%\%TCLKIT_SDK_ZIP%" to "%TEMP%\%TCLKIT_SDK%".
Packit 87b942
  GOTO errors
Packit 87b942
)
Packit 87b942

Packit 87b942
:skip_sdkUnZip
Packit 87b942

Packit 87b942
IF DEFINED TCLKIT_NOENV GOTO skip_sdkEnvironment
Packit 87b942

Packit 87b942
%__ECHO% ECHO SET TCLSH_CMD=%TEMP%\%TCLKIT_EXE%%OVERWRITE%"%ROOT%\SetTclKitEnv.bat"
Packit 87b942

Packit 87b942
IF DEFINED TCLKIT_NOSDK GOTO skip_sdkVariables
Packit 87b942

Packit 87b942
%__ECHO% ECHO SET TCLINCDIR=%TEMP%\%TCLKIT_SDK%\include%APPEND%"%ROOT%\SetTclKitEnv.bat"
Packit 87b942
%__ECHO% ECHO SET TCLLIBDIR=%TEMP%\%TCLKIT_SDK%\lib%APPEND%"%ROOT%\SetTclKitEnv.bat"
Packit 87b942
%__ECHO% ECHO SET LIBTCLPATH=%TEMP%\%TCLKIT_SDK%\lib%APPEND%"%ROOT%\SetTclKitEnv.bat"
Packit 87b942
%__ECHO% ECHO SET LIBTCL=%TCLKIT_LIB%%APPEND%"%ROOT%\SetTclKitEnv.bat"
Packit 87b942
%__ECHO% ECHO SET LIBTCLSTUB=%TCLKIT_LIB_STUB%%APPEND%"%ROOT%\SetTclKitEnv.bat"
Packit 87b942

Packit 87b942
:skip_sdkVariables
Packit 87b942

Packit 87b942
ECHO.
Packit 87b942
ECHO Wrote "%ROOT%\SetTclKitEnv.bat".
Packit 87b942
ECHO Please run it to set the necessary Tcl environment variables.
Packit 87b942
ECHO.
Packit 87b942

Packit 87b942
:skip_sdkEnvironment
Packit 87b942

Packit 87b942
GOTO no_errors
Packit 87b942

Packit 87b942
:fn_TclKitX86Variables
Packit 87b942
  REM
Packit 87b942
  REM NOTE: By default, use latest available version of the TclKit SDK
Packit 87b942
  REM       for x86.  However, the "default" TclKit executable for x86
Packit 87b942
  REM       is still used here because it is the only one "well-known"
Packit 87b942
  REM       to be available for download.
Packit 87b942
  REM
Packit 87b942
  IF NOT DEFINED TCLKIT_PATCHLEVEL (
Packit 87b942
    SET TCLKIT_PATCHLEVEL=8.6.6
Packit 87b942
  )
Packit 87b942
  SET TCLKIT_VERSION=%TCLKIT_PATCHLEVEL:.=%
Packit 87b942
  SET TCLKIT_VERSION=%TCLKIT_VERSION:~0,2%
Packit 87b942
  REM SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe
Packit 87b942
  SET TCLKIT_EXE=tclkit-8.6.4.exe
Packit 87b942
  SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib
Packit 87b942
  SET TCLKIT_LIB_STUB=libtclstub%TCLKIT_VERSION:.=%.a
Packit 87b942
  SET TCLKIT_SDK=libtclkit-sdk-x86-%TCLKIT_PATCHLEVEL%
Packit 87b942
  SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip
Packit 87b942
  SET TCLKIT_FILES=%TCLKIT_EXE%
Packit 87b942
  IF NOT DEFINED TCLKIT_NOENV IF NOT DEFINED TCLKIT_NOSDK (
Packit 87b942
    SET TCLKIT_FILES=%TCLKIT_FILES% unzip.exe %TCLKIT_SDK_ZIP%
Packit 87b942
  )
Packit 87b942
  GOTO :EOF
Packit 87b942

Packit 87b942
:fn_TclKitX64Variables
Packit 87b942
  REM
Packit 87b942
  REM NOTE: By default, use latest available version of the TclKit SDK
Packit 87b942
  REM       for x64.  However, the "default" TclKit executable for x86
Packit 87b942
  REM       is still used here because it is the only one "well-known"
Packit 87b942
  REM       to be available for download.
Packit 87b942
  REM
Packit 87b942
  IF NOT DEFINED TCLKIT_PATCHLEVEL (
Packit 87b942
    SET TCLKIT_PATCHLEVEL=8.6.6
Packit 87b942
  )
Packit 87b942
  SET TCLKIT_VERSION=%TCLKIT_PATCHLEVEL:.=%
Packit 87b942
  SET TCLKIT_VERSION=%TCLKIT_VERSION:~0,2%
Packit 87b942
  REM SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe
Packit 87b942
  SET TCLKIT_EXE=tclkit-8.6.4.exe
Packit 87b942
  SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib
Packit 87b942
  SET TCLKIT_LIB_STUB=libtclstub%TCLKIT_VERSION:.=%.a
Packit 87b942
  SET TCLKIT_SDK=libtclkit-sdk-x64-%TCLKIT_PATCHLEVEL%
Packit 87b942
  SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip
Packit 87b942
  SET TCLKIT_FILES=%TCLKIT_EXE%
Packit 87b942
  IF NOT DEFINED TCLKIT_NOENV IF NOT DEFINED TCLKIT_NOSDK (
Packit 87b942
    SET TCLKIT_FILES=%TCLKIT_FILES% unzip.exe %TCLKIT_SDK_ZIP%
Packit 87b942
  )
Packit 87b942
  GOTO :EOF
Packit 87b942

Packit 87b942
:fn_UnquoteVariable
Packit 87b942
  IF NOT DEFINED %1 GOTO :EOF
Packit 87b942
  SETLOCAL
Packit 87b942
  SET __ECHO_CMD=ECHO %%%1%%
Packit 87b942
  FOR /F "delims=" %%V IN ('%__ECHO_CMD%') DO (
Packit 87b942
    SET VALUE=%%V
Packit 87b942
  )
Packit 87b942
  SET VALUE=%VALUE:"=%
Packit 87b942
  REM "
Packit 87b942
  ENDLOCAL && SET %1=%VALUE%
Packit 87b942
  GOTO :EOF
Packit 87b942

Packit 87b942
:fn_PrependToPath
Packit 87b942
  IF NOT DEFINED %1 GOTO :EOF
Packit 87b942
  SETLOCAL
Packit 87b942
  SET __ECHO_CMD=ECHO %%%1%%
Packit 87b942
  FOR /F "delims=" %%V IN ('%__ECHO_CMD%') DO (
Packit 87b942
    SET VALUE=%%V
Packit 87b942
  )
Packit 87b942
  SET VALUE=%VALUE:"=%
Packit 87b942
  REM "
Packit 87b942
  ENDLOCAL && SET PATH=%VALUE%;%PATH%
Packit 87b942
  GOTO :EOF
Packit 87b942

Packit 87b942
:fn_ResetErrorLevel
Packit 87b942
  VERIFY > NUL
Packit 87b942
  GOTO :EOF
Packit 87b942

Packit 87b942
:fn_SetErrorLevel
Packit 87b942
  VERIFY MAYBE 2> NUL
Packit 87b942
  GOTO :EOF
Packit 87b942

Packit 87b942
:usage
Packit 87b942
  ECHO.
Packit 87b942
  ECHO Usage: %~nx0 ^<processor^>
Packit 87b942
  ECHO.
Packit 87b942
  ECHO The only supported values for processor are "x86" and "x64".
Packit 87b942
  GOTO errors
Packit 87b942

Packit 87b942
:errors
Packit 87b942
  CALL :fn_SetErrorLevel
Packit 87b942
  ENDLOCAL
Packit 87b942
  ECHO.
Packit 87b942
  ECHO Failure, errors were encountered.
Packit 87b942
  GOTO end_of_file
Packit 87b942

Packit 87b942
:no_errors
Packit 87b942
  CALL :fn_ResetErrorLevel
Packit 87b942
  ENDLOCAL
Packit 87b942
  ECHO.
Packit 87b942
  ECHO Success, no errors were encountered.
Packit 87b942
  GOTO end_of_file
Packit 87b942

Packit 87b942
:end_of_file
Packit 87b942
%__ECHO% EXIT /B %ERRORLEVEL%