Advertisement
Guest User

Untitled

a guest
Feb 7th, 2018
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 8.75 KB | None | 0 0
  1.  
  2.  
  3. @if not "%VSCMD_DEBUG%" GEQ "3" echo off
  4.  
  5. @REM -------------------------------------------------------------------------
  6. :parse_args
  7. set __VCVARSALL_STORE=
  8. set __VCVARSALL_WINSDK=
  9. set __VCVARSALL_PARSE_ERROR=
  10. set __VCVARSALL_TARGET_ARCH=
  11. set __VCVARSALL_HOST_ARCH=
  12. set __VCVARSALL_VER=
  13.  
  14. @REM Parse command line arguments.  This implementation does not care about
  15. @REM argument order.
  16.  
  17. if "%VSCMD_DEBUG%" GEQ "1" (
  18.     @echo [DEBUG:%~nx0] init with arguments '%*'
  19. )
  20.  
  21. set __VCVARSALL_PARSE_ERROR=0
  22. set "__VCVARSALL_ARGS_LIST=%*"
  23. call :parse_loop
  24. set __VCVARSALL_ARGS_LIST=
  25.  
  26. if "%VSCMD_DEBUG%" GEQ "1" (
  27.     @echo [DEBUG:%~nx0] Command line parse completed with values:
  28.     @echo [DEBUG:%~nx0] __VCVARSALL_TARGET_ARCH='%__VCVARSALL_TARGET_ARCH%'
  29.     @echo [DEBUG:%~nx0] __VCVARSALL_HOST_ARCH='%__VCVARSALL_HOST_ARCH%'
  30.     @echo [DEBUG:%~nx0] __VCVARSALL_WINSDK='%__VCVARSALL_WINSDK%'
  31.     @echo [DEBUG:%~nx0] __VCVARSALL_STORE='%__VCVARSALL_STORE%'
  32.     @echo [DEBUG:%~nx0] __VCVARSALL_HELP='%__VCVARSALL_HELP%'
  33.     @echo [DEBUG:%~nx0] __VCVARSALL_PARSE_ERROR='%__VCVARSALL_PARSE_ERROR%'
  34. )
  35.  
  36. if "%__VCVARSALL_CLEAN_ENV%" NEQ "" goto :call_vsdevcmd
  37. if "%__VCVARSALL_PARSE_ERROR%" NEQ "0" goto :usage_error
  38. if "%__VCVARSALL_HELP%" NEQ "" goto :usage
  39.  
  40. @REM -------------------------------------------------------------------------
  41. :check_platform
  42. @REM This script is installed to ...\VC\Auxiliary\Build.
  43. @REM vsdevcmd is installed to    ...\Common7\Tools.
  44. if not exist "%~dp0..\..\..\Common7\Tools\vsdevcmd.bat" goto missing
  45.  
  46. @REM Assemble the arguments to pass to vsdevcmd.bat
  47. if "%__VCVARSALL_TARGET_ARCH%" == "" goto :usage_error
  48. if "%__VCVARSALL_HOST_ARCH%" == "" goto :usage_error
  49.  
  50. set "__VCVARSALL_VSDEVCMD_ARGS=-arch=%__VCVARSALL_TARGET_ARCH% -host_arch=%__VCVARSALL_HOST_ARCH%"
  51. if "%__VCVARSALL_WINSDK%" NEQ "" (
  52.     set "__VCVARSALL_VSDEVCMD_ARGS=%__VCVARSALL_VSDEVCMD_ARGS% -winsdk=%__VCVARSALL_WINSDK%"
  53. )
  54. if "%__VCVARSALL_STORE%" NEQ "" (
  55.     set "__VCVARSALL_VSDEVCMD_ARGS=%__VCVARSALL_VSDEVCMD_ARGS% -app_platform=UWP"
  56. )
  57. if "%__VCVARSALL_VER%"=="14.0" (
  58.     set "__VCVARSALL_VSDEVCMD_ARGS=%__VCVARSALL_VSDEVCMD_ARGS% -vcvars_ver=14.0"
  59. )
  60.  
  61. goto :call_vsdevcmd
  62.  
  63. @REM -------------------------------------------------------------------------
  64. @REM Call vsdevcmd.bat to setup the command prompt environment
  65.  
  66. :call_vsdevcmd
  67.  
  68. @REM This temporary environment variable is used to control setting of VC++
  69. @REM command prompt-specific environment variables that should not be set
  70. @REM by the VS Developer Command prompt (specifically vsdevcmd\ext\vcvars.bat).
  71. @REM The known case this effects is the Platform environment variable, which
  72. @REM will override platform target for .NET builds.
  73. set VSCMD_VCVARSALL_INIT=1
  74.  
  75. @REM Special handling for the /clean_env argument
  76. if "%__VCVARSALL_CLEAN_ENV%" NEQ "" (
  77.     call "%~dp0..\..\..\Common7\Tools\vsdevcmd.bat" /clean_env
  78.     goto :end
  79. )
  80.  
  81. call "%~dp0..\..\..\Common7\Tools\vsdevcmd.bat" %__VCVARSALL_VSDEVCMD_ARGS%
  82.  
  83. if "%ERRORLEVEL%"=="0" (
  84.    @REM Print the target command prompt architecture...
  85.     if "%__VCVARSALL_HOST_ARCH%" NEQ "%__VCVARSALL_TARGET_ARCH%" (
  86.         echo [%~nx0] Environment initialized for: '%__VCVARSALL_HOST_ARCH%_%__VCVARSALL_TARGET_ARCH%'
  87.     ) else (
  88.         echo [%~nx0] Environment initialized for: '%__VCVARSALL_TARGET_ARCH%'
  89.     )
  90. )
  91. goto :end
  92.  
  93. :parse_loop
  94. for /F "tokens=1,* delims= " %%a in ("%__VCVARSALL_ARGS_LIST%") do (
  95.     if "%VSCMD_DEBUG%" GEQ "2" (
  96.         @echo [DEBUG:%~nx0] inner argument {%%a}
  97.     )
  98.     call :parse_argument %%a
  99.     set "__VCVARSALL_ARGS_LIST=%%b"
  100.     goto :parse_loop
  101. )
  102.  
  103. exit /B 0
  104.  
  105. :parse_argument
  106.  
  107. @REM called by :parse_loop and expects the arguments to either be:
  108. @REM 1. a single argument in %1
  109. @REM 2. an argument pair from the command line specified as '%1=%2'
  110.  
  111. set __local_ARG_FOUND=
  112. @REM Architecture
  113. if /I "%1"=="x86" (
  114.     set __VCVARSALL_TARGET_ARCH=x86
  115.     set __VCVARSALL_HOST_ARCH=x86
  116.     set __local_ARG_FOUND=1
  117. )
  118. if /I "%1"=="x86_amd64" (
  119.     set __VCVARSALL_TARGET_ARCH=x64
  120.     set __VCVARSALL_HOST_ARCH=x86
  121.     set __local_ARG_FOUND=1
  122. )
  123. if /I "%1"=="x86_x64" (
  124.     set __VCVARSALL_TARGET_ARCH=x64
  125.     set __VCVARSALL_HOST_ARCH=x86
  126.     set __local_ARG_FOUND=1
  127. )
  128. if /I "%1"=="x86_arm" (
  129.     set __VCVARSALL_TARGET_ARCH=arm
  130.     set __VCVARSALL_HOST_ARCH=x86
  131.     set __local_ARG_FOUND=1
  132. )
  133. if /I "%1"=="x86_arm64" (
  134.     set __VCVARSALL_TARGET_ARCH=arm64
  135.     set __VCVARSALL_HOST_ARCH=x86
  136.     set __local_ARG_FOUND=1
  137. )
  138. if /I "%1"=="amd64" (
  139.     set __VCVARSALL_TARGET_ARCH=x64
  140.     set __VCVARSALL_HOST_ARCH=x64
  141.     set __local_ARG_FOUND=1
  142. )
  143. if /I "%1"=="x64" (
  144.     set __VCVARSALL_TARGET_ARCH=x64
  145.     set __VCVARSALL_HOST_ARCH=x64
  146.     set __local_ARG_FOUND=1
  147. )
  148. if /I "%1"=="amd64_x86" (
  149.     set __VCVARSALL_TARGET_ARCH=x86
  150.     set __VCVARSALL_HOST_ARCH=x64
  151.     set __local_ARG_FOUND=1
  152. )
  153. if /I "%1"=="x64_x86" (
  154.     set __VCVARSALL_TARGET_ARCH=x86
  155.     set __VCVARSALL_HOST_ARCH=x64
  156.     set __local_ARG_FOUND=1
  157. )
  158. if /I "%1"=="amd64_arm" (
  159.     set __VCVARSALL_TARGET_ARCH=arm
  160.     set __VCVARSALL_HOST_ARCH=x64
  161.     set __local_ARG_FOUND=1
  162. )
  163. if /I "%1"=="x64_arm" (
  164.     set __VCVARSALL_TARGET_ARCH=arm
  165.     set __VCVARSALL_HOST_ARCH=x64
  166.     set __local_ARG_FOUND=1
  167. )
  168. if /I "%1"=="amd64_arm64" (
  169.     set __VCVARSALL_TARGET_ARCH=arm64
  170.     set __VCVARSALL_HOST_ARCH=x64
  171.     set __local_ARG_FOUND=1
  172. )
  173. if /I "%1"=="x64_arm64" (
  174.     set __VCVARSALL_TARGET_ARCH=arm64
  175.     set __VCVARSALL_HOST_ARCH=x64
  176.     set __local_ARG_FOUND=1
  177. )
  178. if /I "%1"=="-vcvars_ver" (
  179.     set "__VCVARSALL_VER=%2"
  180.     set __local_ARG_FOUND=1
  181. )
  182. if /I "%1"=="/vcvars_ver" (
  183.     set "__VCVARSALL_VER=%2"
  184.     set __local_ARG_FOUND=1
  185. )
  186. if /I "%1"=="--vcvars_ver" (
  187.     set "__vcvarsall_ver=%2"
  188.     set __local_ARG_FOUND=1
  189. )
  190. if /I "%1"=="help" (
  191.     set __VCVARSALL_HELP=1
  192.     set __local_ARG_FOUND=1
  193. )
  194. if /I "%1"=="/help" (
  195.     set __VCVARSALL_HELP=1
  196.     set __local_ARG_FOUND=1
  197. )
  198. if /I "%1"=="-help" (
  199.     set __VCVARSALL_HELP=1
  200.     set __local_ARG_FOUND=1
  201. )
  202. if /I "%1"=="/?" (
  203.     set __VCVARSALL_HELP=1
  204.     set __local_ARG_FOUND=1
  205. )
  206. if /I "%1"=="-?" (
  207.     set __VCVARSALL_HELP=1
  208.     set __local_ARG_FOUND=1
  209. )
  210.  
  211. @REM -- /clean_env --
  212. @REM Mostly used for internal testing to restore the state of
  213. @REM the command line environment to its state prior to vcvarsall.bat
  214. @REM being executed.
  215. if /I "%1"=="/clean_env" (
  216.     set __VCVARSALL_CLEAN_ENV=/clean_env
  217.     set __local_ARG_FOUND=1
  218. )
  219. if /I "%1"=="-clean_env" (
  220.     set __VCVARSALL_CLEAN_ENV=/clean_env
  221.     set __local_ARG_FOUND=1
  222. )
  223.  
  224. @REM Windows SDK Version
  225. if /I "%1"=="8.1" (
  226.     set "__VCVARSALL_WINSDK=8.1"
  227.     set __local_ARG_FOUND=1
  228. )
  229.  
  230. set __temp1=%1
  231. if /I "%__temp1:~0,3%"=="10." (
  232.     set "__VCVARSALL_WINSDK=%1"
  233.     set __local_ARG_FOUND=1
  234. )
  235. set __temp1=
  236.  
  237. @REM Store/UWP
  238. if /I "%1"=="store" (
  239.     set "__VCVARSALL_STORE=-app_platform=UWP"
  240.     set __local_ARG_FOUND=1
  241. )
  242. if /I "%1"=="uwp" (
  243.     set "__VCVARSALL_STORE=-app_platform=UWP"
  244.     set __local_ARG_FOUND=1
  245. )
  246.  
  247. if "%__local_ARG_FOUND%" NEQ "1" (
  248.     set /A __VCVARSALL_PARSE_ERROR=__VCVARSALL_PARSE_ERROR+1
  249.     if "%2"=="" (
  250.         @echo [ERROR:%~nx0] Invalid argument found : %1
  251.     ) else (
  252.         @echo [ERROR:%~nx0] Invalid argument found : %1=%2
  253.     )
  254. )
  255. set __local_ARG_FOUND=
  256. exit /B 0
  257.  
  258. :usage_error
  259. echo [ERROR:%~nx0] Error in script usage. The correct usage is:
  260. goto :usage
  261.  
  262. :usage
  263. echo Syntax:
  264. echo     %~nx0 [arch] [platform_type] [winsdk_version] [-vcvars_ver=vc_version]
  265. echo where :
  266. echo     [arch]: x86 ^| amd64 ^| x86_amd64 ^| x86_arm ^| x86_arm64 ^| amd64_x86 ^| amd64_arm ^| amd64_arm64
  267. echo     [platform_type]: {empty} ^| store ^| uwp
  268. echo     [winsdk_version] : full Windows 10 SDK number (e.g. 10.0.10240.0) or "8.1" to use the Windows 8.1 SDK.  
  269. echo     [vc_version] : "14.0" for VC++ 2015 Compiler Toolset ^| {empty} for default VS 2017 VC++ compiler toolset
  270. echo:
  271. echo The store parameter sets environment variables to support Universal Windows Platform application
  272. echo development and is an alias for 'uwp'.
  273. echo:
  274. echo For example:
  275. echo     %~nx0 x86_amd64
  276. echo     %~nx0 x86_amd64 10.0.10240.0
  277. echo     %~nx0 x86_arm uwp 10.0.10240.0
  278. echo     %~nx0 x86_arm onecore 10.0.10240.0 -vcvars_ver=14.0
  279. echo     %~nx0 x64 8.1
  280. echo     %~nx0 x64 store 8.1
  281. echo:
  282. echo Please make sure either Visual Studio or C++ Build SKU is installed.
  283. goto :end
  284.  
  285. :missing
  286. echo The specified configuration type is missing.  The tools for the
  287. echo configuration might not be installed.
  288. goto :end
  289.  
  290. :end
  291. set __VCVARSALL_TARGET_ARCH=
  292. set __VCVARSALL_HOST_ARCH=
  293. set __VCVARSALL_STORE=
  294. set __VCVARSALL_WINSDK=
  295. set __VCVARSALL_PARSE_ERROR=
  296. set __VCVARSALL_CLEAN_ENV=
  297. set VSCMD_VCVARSALL_INIT=
  298. set __VCVARSALL_VSDEVCMD_ARGS=
  299. set __VCVARSALL_HELP=
  300. set __VCVARSALL_VER=
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement