Update of environment files
[occt.git] / adm / templates / env.bat
1 @echo off
2
3 rem Use:
4 rem - first argument specifies version of Visual Studio (vc8, vc9, or vc10),
5 rem - second argument specifies architecture (win32 or win64),
6 rem - third argument specifies build mode (Debug or Release)
7 rem Default options are:
8 rem   vc8 win32 Release
9
10 set "SCRIPTROOT=%~dp0"
11 set "SCRIPTROOT=%SCRIPTROOT:~0,-1%"
12
13 rem ----- Reset values to defaults -----
14 set "CASDEB="
15 set "VCVER=vc10"
16 set "ARCH=64"
17 set "VCVARS="
18 set "HAVE_TBB=false"
19 set "HAVE_OPENCL=false"
20 set "HAVE_FREEIMAGE=false"
21 set "HAVE_FFMPEG=false"
22 set "HAVE_VTK=false"
23 set "HAVE_GLES2=false"
24 set "HAVE_D3D=false"
25 set "HAVE_ZLIB=false"
26 set "HAVE_LIBLZMA=false"
27 set "HAVE_RAPIDJSON=false"
28 set "HAVE_E57=false"
29 set "CSF_OPT_INC="
30 set "CSF_OPT_LIB32="
31 set "CSF_OPT_LIB64="
32 set "CSF_OPT_BIN32="
33 set "CSF_OPT_BIN64="
34 set "CSF_DEFINES=%CSF_DEFINES_EXTRA%"
35
36 if not ["%CASROOT%"] == [""] if exist "%SCRIPTROOT%\%CASROOT%" set "CASROOT=%SCRIPTROOT%\%CASROOT%"
37 if     ["%CASROOT%"] == [""] set "CASROOT=%SCRIPTROOT%"
38
39 rem ----- Load local settings -----
40 if exist "%CASROOT%\custom.bat" (
41   call "%CASROOT%\custom.bat" %1 %2 %3 %4 %5
42 )
43
44 rem ----- Read script arguments (override local settings) -----
45 if not ["%1"]    == [""]      set "VCVER=%1"
46 if not ["%2"]    == [""]      set "ARCH=%2"
47 if /I ["%ARCH%"] == ["win32"] set "ARCH=32"
48 if /I ["%ARCH%"] == ["win64"] set "ARCH=64"
49 if /I ["%3"]     == ["debug"] set "CASDEB=d"
50 if /I ["%3"]     == ["d"]     set "CASDEB=d"
51 if /I ["%3"]     == ["i"]     set "CASDEB=i"
52 if /I ["%3"]     == ["relwithdeb"] set "CASDEB=i"
53
54 rem Decode VCVER variable and define related ones:
55 rem
56 rem VCFMT - "vc" followed by full version number of Visual Studio toolset
57 rem         (same as VCVER without optional suffix "-uwp")
58 rem VCLIB - name of folder contining binaries
59 rem         (same as VCVER except without third version in number)
60 rem VCPROP - name of required Visual Studion Workload (starting with VS 2017)
61 rem
62 rem Note that for VS before 2015 (vc14) always
63 rem VCFMT=VCLIB=VCVER and VCPROP=NativeDesktop
64
65 rem Since VS 2017, environment variables like VS100COMNTOOLS are not defined 
66 rem any more, we can only use vswhere.exe tool to find Visual Studio.
67 rem Add path to vswhere.exe
68 set "PATH=%PATH%;%ProgramFiles(x86)%\Microsoft Visual Studio\Installer"
69
70 rem for vc10-12, interpretation is trivial
71 set VCFMT=%VCVER%
72 set VCLIB=%VCVER:~0,4%
73 set VCPROP=NativeDesktop
74 rem vc14 and later can have optional suffix "-uwp"
75 if "%VCVER:~-4%" == "-uwp" (
76   set VCFMT=%VCVER:~0,-4%
77   set VCLIB=%VCLIB%-uwp
78   set VCPROP=Universal
79 )
80 rem echo VCVER=%VCVER% VCFMT=%VCFMT% VCLIB=%VCLIB% VCPROP=%VCPROP%
81
82 rem ----- Parsing of Visual Studio platform -----
83 set "VisualStudioExpressName=VCExpress"
84
85 if not "%DevEnvDir%" == "" (
86   rem If DevEnvDir is already defined (e.g. in custom.bat), use that value
87 ) else if /I "%VCFMT%" == "vc9" (
88   set "DevEnvDir=%VS90COMNTOOLS%..\IDE"
89 ) else if /I "%VCFMT%" == "vc10" (
90   set "DevEnvDir=%VS100COMNTOOLS%..\IDE"
91 ) else if /I "%VCFMT%" == "vc11" (
92   set "DevEnvDir=%VS110COMNTOOLS%..\IDE"
93   rem Visual Studio Express starting from VS 2012 is called "for Windows Desktop"
94   rem and has a new name for executable - WDExpress
95   set "VisualStudioExpressName=WDExpress"
96 ) else if /I "%VCFMT%" == "vc12" (
97   set "DevEnvDir=%VS120COMNTOOLS%..\IDE"
98   set "VisualStudioExpressName=WDExpress"
99 ) else if /I "%VCFMT%" == "vc14" (
100   set "DevEnvDir=%VS140COMNTOOLS%..\IDE"
101 ) else if /I "%VCFMT%" == "vc141" (
102   for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
103     set "DevEnvDir=%%i\Common7\IDE\"
104   )
105 ) else if /I "%VCFMT%" == "vc142" (
106   for /f "usebackq delims=" %%i in (`vswhere.exe -version "[16.0,16.99]" -latest -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
107     set "DevEnvDir=%%i\Common7\IDE\"
108   )
109 ) else if /I "%VCFMT%" == "gcc" (
110   rem MinGW
111 ) else (
112   echo Error: first argument ^(%VCVER%^) should specify supported version of Visual C++, 
113   echo one of: 
114   echo vc9   = VS 2008 ^(SP1^)
115   echo vc10  = VS 2010 ^(SP3^)
116   echo vc11  = VS 2012 ^(SP3^)
117   echo vc12  = VS 2013 ^(SP3^)
118   echo vc14  = VS 2015
119   echo vc141 = VS 2017
120   echo vc142 = VS 2019
121   exit /B
122 )
123
124 rem ----- Parsing vcvarsall for qt samples and define PlatformToolset -----
125 if /I "%VCFMT%" == "vc9" (
126   set "VCVARS=%VS90COMNTOOLS%..\..\VC\vcvarsall.bat"
127   set "VCPlatformToolSet=v90"
128 ) else if /I "%VCFMT%" == "vc10" (
129   set "VCVARS=%VS100COMNTOOLS%..\..\VC\vcvarsall.bat"
130   set "VCPlatformToolSet=v100"
131 ) else if /I "%VCFMT%" == "vc11" (
132   set "VCVARS=%VS110COMNTOOLS%..\..\VC\vcvarsall.bat"
133   set "VCPlatformToolSet=v110"
134 ) else if /I "%VCFMT%" == "vc12" (
135   set "VCVARS=%VS120COMNTOOLS%..\..\VC\vcvarsall.bat"
136   set "VCPlatformToolSet=v120"
137 ) else if /I "%VCFMT%" == "vc14" (
138   set "VCVARS=%VS140COMNTOOLS%..\..\VC\vcvarsall.bat"
139   set "VCPlatformToolSet=v140"
140 ) else if /I "%VCFMT%" == "vc141" (
141   for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
142     set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat"
143   )
144   set "VCPlatformToolSet=v141"
145 ) else if /I "%VCFMT%" == "vc142" (
146   for /f "usebackq delims=" %%i in (`vswhere.exe -version "[16.0,16.99]" -latest -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
147     set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat"
148   ) 
149   set "VCPlatformToolSet=v142"
150 ) else if /I "%VCFMT%" == "gcc" (
151   rem MinGW
152 ) else (
153   echo Error: wrong VS identifier
154   exit /B
155 )
156
157 set "CSF_OPT_LIB32D=%CSF_OPT_LIB32%"
158 set "CSF_OPT_LIB64D=%CSF_OPT_LIB64%"
159 set "CSF_OPT_BIN32D=%CSF_OPT_BIN32%"
160 set "CSF_OPT_BIN64D=%CSF_OPT_BIN64%"
161 set "CSF_OPT_LIB32I=%CSF_OPT_LIB32%"
162 set "CSF_OPT_LIB64I=%CSF_OPT_LIB64%"
163 set "CSF_OPT_BIN32I=%CSF_OPT_BIN32%"
164 set "CSF_OPT_BIN64I=%CSF_OPT_BIN64%"
165
166 rem ----- Optional 3rd-parties should be enabled by HAVE macros -----
167 set "CSF_OPT_CMPL="
168 set "PRODUCTS_DEFINES="
169 if ["%HAVE_TBB%"]       == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_TBB"       & set "CSF_DEFINES=HAVE_TBB;%CSF_DEFINES%"
170 if ["%HAVE_OPENCL%"]    == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_OPENCL"    & set "CSF_DEFINES=HAVE_OPENCL;%CSF_DEFINES%"
171 if ["%HAVE_FREEIMAGE%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_FREEIMAGE" & set "CSF_DEFINES=HAVE_FREEIMAGE;%CSF_DEFINES%"
172 if ["%HAVE_FFMPEG%"]    == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_FFMPEG"    & set "CSF_DEFINES=HAVE_FFMPEG;%CSF_DEFINES%"
173 if ["%HAVE_VTK%"]       == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_VTK"       & set "CSF_DEFINES=HAVE_VTK;%CSF_DEFINES%"
174 if ["%HAVE_GLES2%"]     == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_GLES2"     & set "CSF_DEFINES=HAVE_GLES2;%CSF_DEFINES%"
175 if ["%HAVE_D3D%"]       == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_D3D"       & set "CSF_DEFINES=HAVE_D3D;%CSF_DEFINES%"
176 if ["%HAVE_ZLIB%"]      == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_ZLIB"      & set "CSF_DEFINES=HAVE_ZLIB;%CSF_DEFINES%"
177 if ["%HAVE_LIBLZMA%"]   == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_LIBLZMA"   & set "CSF_DEFINES=HAVE_LIBLZMA;%CSF_DEFINES%"
178 if ["%HAVE_RAPIDJSON%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_RAPIDJSON" & set "CSF_DEFINES=HAVE_RAPIDJSON;%CSF_DEFINES%"
179 if ["%HAVE_E57%"]       == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_E57"       & set "CSF_DEFINES=HAVE_E57;%CSF_DEFINES%"
180
181 rem Eliminate VS warning
182 if ["%CSF_DEFINES%"]  == [""] set "CSF_DEFINES=;"
183
184 rem ----- Optional 3rd-parties should be enabled by HAVE macros -----
185 if not ["%PRODUCTS_DEFINES%"] == [""] set "CSF_OPT_CMPL=%CSF_OPT_CMPL% %PRODUCTS_DEFINES%"
186
187 rem ----- Colect 3rd-parties additional include paths into compiler options -----
188 for %%a in ("%CSF_OPT_INC:;=";"%") do (
189   set "anItem=%%~a"
190   if not ["%%~a"] == [""] call :concatCmplInc %%~a
191 )
192
193 rem ----- Colect 3rd-parties additional library paths (32-bit) into linker options -----
194 set "OPT_LIB32="
195 for %%a in ("%CSF_OPT_LIB32:;=";"%") do (
196   set "anItem=%%~a"
197   if not ["%%~a"] == [""] call :concatLib32 %%~a
198 )
199
200 rem ----- Colect 3rd-parties additional library paths (64-bit) into linker options -----
201 set "OPT_LIB64="
202 for %%a in ("%CSF_OPT_LIB64:;=";"%") do (
203   set "anItem=%%~a"
204   if not ["%%~a"] == [""] call :concatLib64 %%~a
205 )
206
207 set "CSF_OPT_LNK32=%CSF_OPT_LNK32% %OPT_LIB32%"
208 set "CSF_OPT_LNK64=%CSF_OPT_LNK64% %OPT_LIB64%"
209 set "CSF_OPT_LNK32D=%CSF_OPT_LNK32D% %OPT_LIB32%"
210 set "CSF_OPT_LNK64D=%CSF_OPT_LNK64D% %OPT_LIB64%"
211 set "CSF_OPT_LNK32I=%CSF_OPT_LNK32I% %OPT_LIB32%"
212 set "CSF_OPT_LNK64I=%CSF_OPT_LNK64I% %OPT_LIB64%"
213
214 rem ----- Default paths to sub-folders (can be different in install env) -----
215 if "%CSF_OCCTIncludePath%" == "" set "CSF_OCCTIncludePath=%CASROOT%\inc"
216 if "%CSF_OCCTResourcePath%" == "" set "CSF_OCCTResourcePath=%CASROOT%\src"
217 if "%CSF_OCCTSamplesPath%" == "" set "CSF_OCCTSamplesPath=%CASROOT%\samples"
218 if "%CSF_OCCTDataPath%" == "" set "CSF_OCCTDataPath=%CASROOT%\data"
219 if "%CSF_OCCTTestsPath%" == "" set "CSF_OCCTTestsPath=%CASROOT%\tests"
220 if "%CSF_OCCTBinPath%" == "" set "CSF_OCCTBinPath=%CASROOT%\win%ARCH%\%VCLIB%\bin%CASDEB%"
221 if "%CSF_OCCTLibPath%" == "" set "CSF_OCCTLibPath=%CASROOT%\win%ARCH%\%VCLIB%\lib%CASDEB%"
222
223 rem ----- Set path to 3rd party and OCCT libraries -----
224 set "PATH=%CSF_OCCTBinPath%;%PATH%"
225 if ["%CASDEB%"] == [""] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32%;%PATH%"
226 if ["%CASDEB%"] == [""] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64%;%PATH%"
227 if ["%CASDEB%"] == ["d"] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32D%;%PATH%"
228 if ["%CASDEB%"] == ["d"] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64D%;%PATH%"
229 if ["%CASDEB%"] == ["i"] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32I%;%PATH%"
230 if ["%CASDEB%"] == ["i"] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64I%;%PATH%"
231
232 rem ----- Set envoronment variables used by OCCT -----
233 set CSF_LANGUAGE=us
234 set MMGT_CLEAR=1
235 set "CSF_SHMessage=%CSF_OCCTResourcePath%\SHMessage"
236 set "CSF_MDTVTexturesDirectory=%CSF_OCCTResourcePath%\Textures"
237 set "CSF_ShadersDirectory=%CSF_OCCTResourcePath%\Shaders"
238 set "CSF_XSMessage=%CSF_OCCTResourcePath%\XSMessage"
239 set "CSF_TObjMessage=%CSF_OCCTResourcePath%\TObj"
240 set "CSF_StandardDefaults=%CSF_OCCTResourcePath%\StdResource"
241 set "CSF_PluginDefaults=%CSF_OCCTResourcePath%\StdResource"
242 set "CSF_XCAFDefaults=%CSF_OCCTResourcePath%\StdResource"
243 set "CSF_TObjDefaults=%CSF_OCCTResourcePath%\StdResource"
244 set "CSF_StandardLiteDefaults=%CSF_OCCTResourcePath%\StdResource"
245 set "CSF_IGESDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
246 set "CSF_STEPDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
247 set "CSF_XmlOcafResource=%CSF_OCCTResourcePath%\XmlOcafResource"
248 set "CSF_MIGRATION_TYPES=%CSF_OCCTResourcePath%\StdResource\MigrationSheet.txt"
249
250 rem Draw Harness special stuff
251 if exist "%CSF_OCCTResourcePath%\DrawResources\DrawDefault" (
252   set "DRAWDEFAULT=%CSF_OCCTResourcePath%\DrawResources\DrawDefault"
253 )
254 if exist "%CSF_OCCTResourcePath%\DrawResources" (
255   set "DRAWHOME=%CSF_OCCTResourcePath%\DrawResources"
256   set "CSF_DrawPluginDefaults=%DRAWHOME%"
257 )
258 goto :eof
259
260 :concatCmplInc
261 set "CSF_OPT_CMPL=%CSF_OPT_CMPL% -I%1"
262 goto :eof
263
264 :concatLib32
265 rem Compiler options for Code::Blocks: -L for gcc/mingw and /LIBPATH for msvc
266 rem set "OPT_LIB32=%OPT_LIB32% /LIBPATH:%1"
267 set "OPT_LIB32=%OPT_LIB32% -L%1"
268 goto :eof
269
270 :concatLib64
271 rem Compiler options for Code::Blocks: -L for gcc/mingw and /LIBPATH for msvc
272 rem set "OPT_LIB64=%OPT_LIB64% /LIBPATH:%1"
273 set "OPT_LIB64=%OPT_LIB64% -L%1"
274 goto :eof