123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 |
- @ECHO OFF
- ::
- :: GetTclKit.bat --
- ::
- :: TclKit Download Tool
- ::
- SETLOCAL
- REM SET __ECHO=ECHO
- REM SET __ECHO2=ECHO
- REM SET __ECHO3=ECHO
- 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 (
- REM Use the existing .NET Framework directory...
- ) 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
- REM
- REM NOTE: By default, use latest available version of the TclKit SDK
- REM for x86. However, the "default" TclKit executable for x86
- REM is still used here because it is the only one "well-known"
- REM to be available for download.
- REM
- 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
- REM
- REM NOTE: By default, use latest available version of the TclKit SDK
- REM for x64. However, the "default" TclKit executable for x86
- REM is still used here because it is the only one "well-known"
- REM to be available for download.
- REM
- 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:"=%
- REM "
- 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:"=%
- REM "
- 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%
|