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