| | @ECHO OFF
|
| |
|
| | ::
|
| | :: GetTclKit.bat --
|
| | ::
|
| | :: TclKit Download Tool
|
| | ::
|
| |
|
| | SETLOCAL
|
| | |
| |
|
| |
|
| |
|
| | IF NOT DEFINED _AECHO (SET _AECHO=REM)
|
| | IF NOT DEFINED _CECHO (SET _CECHO=REM)
|
| | IF NOT DEFINED _CECHO2 (SET _CECHO2=REM)
|
| | IF NOT DEFINED _CECHO3 (SET _CECHO3=REM)
|
| | IF NOT DEFINED _VECHO (SET _VECHO=REM)
|
| |
|
| | SET OVERWRITE=^>
|
| | IF DEFINED __ECHO SET OVERWRITE=^^^>
|
| |
|
| | SET APPEND=^>^>
|
| | IF DEFINED __ECHO SET APPEND=^^^>^^^>
|
| |
|
| | SET PROCESSOR=%1
|
| |
|
| | IF DEFINED PROCESSOR (
|
| | CALL :fn_UnquoteVariable PROCESSOR
|
| | ) ELSE (
|
| | GOTO usage
|
| | )
|
| |
|
| | SET PROCESSOR=%PROCESSOR:AMD64=x64%
|
| |
|
| | %_VECHO% Processor = '%PROCESSOR%'
|
| |
|
| | SET DUMMY2=%2
|
| |
|
| | IF DEFINED DUMMY2 (
|
| | GOTO usage
|
| | )
|
| |
|
| | IF NOT DEFINED ENVDIR (
|
| | SET ENVDIR=%CD%
|
| | )
|
| |
|
| | %_VECHO% EnvDir = '%ENVDIR%'
|
| |
|
| | SET TOOLS=%~dp0
|
| | SET TOOLS=%TOOLS:~0,-1%
|
| |
|
| | %_VECHO% Tools = '%TOOLS%'
|
| |
|
| | IF NOT DEFINED windir (
|
| | ECHO The windir environment variable must be set first.
|
| | GOTO errors
|
| | )
|
| |
|
| | %_VECHO% WinDir = '%windir%'
|
| |
|
| | IF NOT DEFINED TEMP (
|
| | ECHO The TEMP environment variable must be set first.
|
| | GOTO errors
|
| | )
|
| |
|
| | %_VECHO% Temp = '%TEMP%'
|
| |
|
| | IF NOT DEFINED TCLKIT_URI (
|
| | SET TCLKIT_URI=https://urn.to/r/tclsh/
|
| | )
|
| |
|
| | %_VECHO% TclKitUri = '%TCLKIT_URI%'
|
| |
|
| | IF NOT DEFINED TCLKIT_PATCHLEVEL (
|
| | SET TCLKIT_PATCHLEVEL=8.6.6
|
| | )
|
| |
|
| | %_VECHO% TclKitPatchLevel = '%TCLKIT_PATCHLEVEL%'
|
| |
|
| | IF NOT DEFINED TCLKIT_EXE_PATCHLEVEL (
|
| | SET TCLKIT_EXE_PATCHLEVEL=8.6.4
|
| | )
|
| |
|
| | %_VECHO% TclKitExePatchLevel = '%TCLKIT_EXE_PATCHLEVEL%'
|
| |
|
| | IF /I "%PROCESSOR%" == "x86" (
|
| | CALL :fn_TclKitX86Variables
|
| |
|
| | IF ERRORLEVEL 1 (
|
| | GOTO errors
|
| | )
|
| | ) ELSE IF /I "%PROCESSOR%" == "x64" (
|
| | CALL :fn_TclKitX64Variables
|
| |
|
| | IF ERRORLEVEL 1 (
|
| | GOTO errors
|
| | )
|
| | ) ELSE (
|
| | GOTO usage
|
| | )
|
| |
|
| | %_VECHO% TclKitVersion = '%TCLKIT_VERSION%'
|
| | %_VECHO% TclKitPatchLevel = '%TCLKIT_PATCHLEVEL%'
|
| | %_VECHO% TclKitExePatchLevel = '%TCLKIT_EXE_PATCHLEVEL%'
|
| | %_VECHO% TclKitNoEnv = '%TCLKIT_NOENV%'
|
| | %_VECHO% TclKitNoSdk = '%TCLKIT_NOSDK%'
|
| | %_VECHO% TclKitExe = '%TCLKIT_EXE%'
|
| | %_VECHO% TclKitLib = '%TCLKIT_LIB%'
|
| | %_VECHO% TclKitLibStub = '%TCLKIT_LIB_STUB%'
|
| | %_VECHO% TclKitSdk = '%TCLKIT_SDK%'
|
| | %_VECHO% TclKitSdkZip = '%TCLKIT_SDK_ZIP%'
|
| | %_VECHO% TclKitFiles = '%TCLKIT_FILES%'
|
| |
|
| | CALL :fn_ResetErrorLevel
|
| |
|
| | FOR %%T IN (csc.exe) DO (
|
| | SET %%T_PATH=%%~dp$PATH:T
|
| | )
|
| |
|
| | %_VECHO% Csc.exe_PATH = '%csc.exe_PATH%'
|
| |
|
| | IF DEFINED csc.exe_PATH (
|
| | GOTO skip_addToPath
|
| | )
|
| |
|
| | IF DEFINED FRAMEWORKDIR (
|
| |
|
| | ) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v2.0.50727" (
|
| | SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v2.0.50727
|
| | ) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v3.5" (
|
| | SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v3.5
|
| | ) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v4.0.30319" (
|
| | SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v4.0.30319
|
| | ) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v2.0.50727" (
|
| | SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v2.0.50727
|
| | ) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v3.5" (
|
| | SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v3.5
|
| | ) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v4.0.30319" (
|
| | SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v4.0.30319
|
| | ) ELSE (
|
| | ECHO No suitable version of the .NET Framework appears to be installed.
|
| | GOTO errors
|
| | )
|
| |
|
| | %_VECHO% FrameworkDir = '%FRAMEWORKDIR%'
|
| |
|
| | IF NOT EXIST "%FRAMEWORKDIR%\csc.exe" (
|
| | ECHO The file "%FRAMEWORKDIR%\csc.exe" is missing.
|
| | GOTO errors
|
| | )
|
| |
|
| | CALL :fn_PrependToPath FRAMEWORKDIR
|
| |
|
| | :skip_addToPath
|
| |
|
| | IF NOT EXIST "%TEMP%\GetFile.exe" (
|
| | %__ECHO% csc.exe "/out:%TEMP%\GetFile.exe" /target:exe "%TOOLS%\GetFile.cs"
|
| |
|
| | IF ERRORLEVEL 1 (
|
| | ECHO Compilation of "%TOOLS%\GetFile.cs" failed.
|
| | GOTO errors
|
| | )
|
| | )
|
| |
|
| | FOR %%F IN (%TCLKIT_FILES%) DO (
|
| | IF NOT EXIST "%TEMP%\%%F" (
|
| | %__ECHO% "%TEMP%\GetFile.exe" "%TCLKIT_URI%%%F"
|
| |
|
| | IF ERRORLEVEL 1 (
|
| | ECHO Download of "%%F" from "%TCLKIT_URI%" failed.
|
| | GOTO errors
|
| | )
|
| | )
|
| | )
|
| |
|
| | IF DEFINED TCLKIT_NOENV GOTO skip_sdkUnZip
|
| | IF DEFINED TCLKIT_NOSDK GOTO skip_sdkUnZip
|
| |
|
| | IF NOT EXIST "%TEMP%\%TCLKIT_SDK%" (
|
| | %__ECHO% MKDIR "%TEMP%\%TCLKIT_SDK%"
|
| |
|
| | IF ERRORLEVEL 1 (
|
| | ECHO Could not create directory "%TEMP%\%TCLKIT_SDK%".
|
| | GOTO errors
|
| | )
|
| | )
|
| |
|
| | %__ECHO% "%TEMP%\unzip.exe" -n "%TEMP%\%TCLKIT_SDK_ZIP%" -d "%TEMP%\%TCLKIT_SDK%"
|
| |
|
| | IF ERRORLEVEL 1 (
|
| | ECHO Could not unzip "%TEMP%\%TCLKIT_SDK_ZIP%" to "%TEMP%\%TCLKIT_SDK%".
|
| | GOTO errors
|
| | )
|
| |
|
| | :skip_sdkUnZip
|
| |
|
| | IF DEFINED TCLKIT_NOENV GOTO skip_sdkEnvironment
|
| |
|
| | %__ECHO% ECHO SET TCLSH_CMD=%TEMP%\%TCLKIT_EXE%%OVERWRITE%"%ENVDIR%\SetTclKitEnv.bat"
|
| |
|
| | IF DEFINED TCLKIT_NOSDK GOTO skip_sdkVariables
|
| |
|
| | %__ECHO% ECHO SET TCLINCDIR=%TEMP%\%TCLKIT_SDK%\include%APPEND%"%ENVDIR%\SetTclKitEnv.bat"
|
| | %__ECHO% ECHO SET TCLLIBDIR=%TEMP%\%TCLKIT_SDK%\lib%APPEND%"%ENVDIR%\SetTclKitEnv.bat"
|
| | %__ECHO% ECHO SET LIBTCLPATH=%TEMP%\%TCLKIT_SDK%\lib%APPEND%"%ENVDIR%\SetTclKitEnv.bat"
|
| | %__ECHO% ECHO SET LIBTCL=%TCLKIT_LIB%%APPEND%"%ENVDIR%\SetTclKitEnv.bat"
|
| | %__ECHO% ECHO SET LIBTCLSTUB=%TCLKIT_LIB_STUB%%APPEND%"%ENVDIR%\SetTclKitEnv.bat"
|
| |
|
| | :skip_sdkVariables
|
| |
|
| | ECHO.
|
| | ECHO Wrote "%ENVDIR%\SetTclKitEnv.bat".
|
| | ECHO Please run it to set the necessary Tcl environment variables.
|
| | ECHO.
|
| |
|
| | :skip_sdkEnvironment
|
| |
|
| | GOTO no_errors
|
| |
|
| | :fn_TclKitX86Variables
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| | IF NOT DEFINED TCLKIT_PATCHLEVEL (
|
| | ECHO The TCLKIT_PATCHLEVEL environment variable must be set first.
|
| | CALL :fn_SetErrorLevel
|
| | GOTO :EOF
|
| | )
|
| | SET TCLKIT_VERSION=%TCLKIT_PATCHLEVEL:.=%
|
| | SET TCLKIT_VERSION=%TCLKIT_VERSION:~0,2%
|
| | IF DEFINED TCLKIT_EXE_PATCHLEVEL (
|
| | SET TCLKIT_EXE=tclkit-%TCLKIT_EXE_PATCHLEVEL%.exe
|
| | ) ELSE (
|
| | SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe
|
| | )
|
| | SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib
|
| | SET TCLKIT_LIB_STUB=libtclstub%TCLKIT_VERSION:.=%.a
|
| | SET TCLKIT_SDK=libtclkit-sdk-x86-%TCLKIT_PATCHLEVEL%
|
| | SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip
|
| | SET TCLKIT_FILES=%TCLKIT_EXE%
|
| | IF NOT DEFINED TCLKIT_NOENV IF NOT DEFINED TCLKIT_NOSDK (
|
| | SET TCLKIT_FILES=%TCLKIT_FILES% unzip.exe %TCLKIT_SDK_ZIP%
|
| | )
|
| | GOTO :EOF
|
| |
|
| | :fn_TclKitX64Variables
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| | IF NOT DEFINED TCLKIT_PATCHLEVEL (
|
| | ECHO The TCLKIT_PATCHLEVEL environment variable must be set first.
|
| | CALL :fn_SetErrorLevel
|
| | GOTO :EOF
|
| | )
|
| | SET TCLKIT_VERSION=%TCLKIT_PATCHLEVEL:.=%
|
| | SET TCLKIT_VERSION=%TCLKIT_VERSION:~0,2%
|
| | IF DEFINED TCLKIT_EXE_PATCHLEVEL (
|
| | SET TCLKIT_EXE=tclkit-%TCLKIT_EXE_PATCHLEVEL%.exe
|
| | ) ELSE (
|
| | SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe
|
| | )
|
| | SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib
|
| | SET TCLKIT_LIB_STUB=libtclstub%TCLKIT_VERSION:.=%.a
|
| | SET TCLKIT_SDK=libtclkit-sdk-x64-%TCLKIT_PATCHLEVEL%
|
| | SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip
|
| | SET TCLKIT_FILES=%TCLKIT_EXE%
|
| | IF NOT DEFINED TCLKIT_NOENV IF NOT DEFINED TCLKIT_NOSDK (
|
| | SET TCLKIT_FILES=%TCLKIT_FILES% unzip.exe %TCLKIT_SDK_ZIP%
|
| | )
|
| | GOTO :EOF
|
| |
|
| | :fn_UnquoteVariable
|
| | IF NOT DEFINED %1 GOTO :EOF
|
| | SETLOCAL
|
| | SET __ECHO_CMD=ECHO %%%1%%
|
| | FOR /F "delims=" %%V IN ('%__ECHO_CMD%') DO (
|
| | SET VALUE=%%V
|
| | )
|
| | SET VALUE=%VALUE:"=%
|
| |
|
| | ENDLOCAL && SET %1=%VALUE%
|
| | GOTO :EOF
|
| |
|
| | :fn_PrependToPath
|
| | IF NOT DEFINED %1 GOTO :EOF
|
| | SETLOCAL
|
| | SET __ECHO_CMD=ECHO %%%1%%
|
| | FOR /F "delims=" %%V IN ('%__ECHO_CMD%') DO (
|
| | SET VALUE=%%V
|
| | )
|
| | SET VALUE=%VALUE:"=%
|
| |
|
| | ENDLOCAL && SET PATH=%VALUE%;%PATH%
|
| | GOTO :EOF
|
| |
|
| | :fn_ResetErrorLevel
|
| | VERIFY > NUL
|
| | GOTO :EOF
|
| |
|
| | :fn_SetErrorLevel
|
| | VERIFY MAYBE 2> NUL
|
| | GOTO :EOF
|
| |
|
| | :usage
|
| | ECHO.
|
| | ECHO Usage: %~nx0 ^<processor^>
|
| | ECHO.
|
| | ECHO The only supported values for processor are "x86" and "x64".
|
| | GOTO errors
|
| |
|
| | :errors
|
| | CALL :fn_SetErrorLevel
|
| | ENDLOCAL
|
| | ECHO.
|
| | ECHO Failure, errors were encountered.
|
| | GOTO end_of_file
|
| |
|
| | :no_errors
|
| | CALL :fn_ResetErrorLevel
|
| | ENDLOCAL
|
| | ECHO.
|
| | ECHO Success, no errors were encountered.
|
| | GOTO end_of_file
|
| |
|
| | :end_of_file
|
| | %__ECHO% EXIT /B %ERRORLEVEL%
|
| |
|