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