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