0030966: Configuration, genproj.tcl - look for an optional libraries e57 and xerces
[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%" == "gcc" (
106   rem MinGW
107 ) else (
108   echo Error: first argument ^(%VCVER%^) should specify supported version of Visual C++, 
109   echo one of: 
110   echo vc9   = VS 2008 ^(SP1^)
111   echo vc10  = VS 2010 ^(SP3^)
112   echo vc11  = VS 2012 ^(SP3^)
113   echo vc12  = VS 2013 ^(SP3^)
114   echo vc14  = VS 2015
115   echo vc141 = VS 2017
116   exit /B
117 )
118
119 rem ----- Parsing vcvarsall for qt samples and define PlatformToolset -----
120 if /I "%VCFMT%" == "vc9" (
121   set "VCVARS=%VS90COMNTOOLS%..\..\VC\vcvarsall.bat"
122   set "VCPlatformToolSet=v90"
123 ) else if /I "%VCFMT%" == "vc10" (
124   set "VCVARS=%VS100COMNTOOLS%..\..\VC\vcvarsall.bat"
125   set "VCPlatformToolSet=v100"
126 ) else if /I "%VCFMT%" == "vc11" (
127   set "VCVARS=%VS110COMNTOOLS%..\..\VC\vcvarsall.bat"
128   set "VCPlatformToolSet=v110"
129 ) else if /I "%VCFMT%" == "vc12" (
130   set "VCVARS=%VS120COMNTOOLS%..\..\VC\vcvarsall.bat"
131   set "VCPlatformToolSet=v120"
132 ) else if /I "%VCFMT%" == "vc14" (
133   set "VCVARS=%VS140COMNTOOLS%..\..\VC\vcvarsall.bat"
134   set "VCPlatformToolSet=v140"
135 ) else if /I "%VCFMT%" == "vc141" (
136   for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
137     set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat"
138   )
139   set "VCPlatformToolSet=v141"
140 ) else if /I "%VCFMT%" == "gcc" (
141   rem MinGW
142 ) else (
143   echo Error: wrong VS identifier
144   exit /B
145 )
146
147 set "CSF_OPT_LIB32D=%CSF_OPT_LIB32%"
148 set "CSF_OPT_LIB64D=%CSF_OPT_LIB64%"
149 set "CSF_OPT_BIN32D=%CSF_OPT_BIN32%"
150 set "CSF_OPT_BIN64D=%CSF_OPT_BIN64%"
151 set "CSF_OPT_LIB32I=%CSF_OPT_LIB32%"
152 set "CSF_OPT_LIB64I=%CSF_OPT_LIB64%"
153 set "CSF_OPT_BIN32I=%CSF_OPT_BIN32%"
154 set "CSF_OPT_BIN64I=%CSF_OPT_BIN64%"
155
156 rem ----- Optional 3rd-parties should be enabled by HAVE macros -----
157 set "CSF_OPT_CMPL="
158 set "PRODUCTS_DEFINES="
159 if ["%HAVE_TBB%"]       == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_TBB"       & set "CSF_DEFINES=HAVE_TBB;%CSF_DEFINES%"
160 if ["%HAVE_OPENCL%"]    == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_OPENCL"    & set "CSF_DEFINES=HAVE_OPENCL;%CSF_DEFINES%"
161 if ["%HAVE_FREEIMAGE%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_FREEIMAGE" & set "CSF_DEFINES=HAVE_FREEIMAGE;%CSF_DEFINES%"
162 if ["%HAVE_FFMPEG%"]    == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_FFMPEG"    & set "CSF_DEFINES=HAVE_FFMPEG;%CSF_DEFINES%"
163 if ["%HAVE_VTK%"]       == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_VTK"       & set "CSF_DEFINES=HAVE_VTK;%CSF_DEFINES%"
164 if ["%HAVE_GLES2%"]     == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_GLES2"     & set "CSF_DEFINES=HAVE_GLES2;%CSF_DEFINES%"
165 if ["%HAVE_D3D%"]       == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_D3D"       & set "CSF_DEFINES=HAVE_D3D;%CSF_DEFINES%"
166 if ["%HAVE_ZLIB%"]      == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_ZLIB"      & set "CSF_DEFINES=HAVE_ZLIB;%CSF_DEFINES%"
167 if ["%HAVE_LIBLZMA%"]   == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_LIBLZMA"   & set "CSF_DEFINES=HAVE_LIBLZMA;%CSF_DEFINES%"
168 if ["%HAVE_RAPIDJSON%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_RAPIDJSON" & set "CSF_DEFINES=HAVE_RAPIDJSON;%CSF_DEFINES%"
169 if ["%HAVE_E57%"]       == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_E57"       & set "CSF_DEFINES=HAVE_E57;%CSF_DEFINES%"
170
171 rem Eliminate VS warning
172 if ["%CSF_DEFINES%"]  == [""] set "CSF_DEFINES=;"
173
174 rem ----- Optional 3rd-parties should be enabled by HAVE macros -----
175 if not ["%PRODUCTS_DEFINES%"] == [""] set "CSF_OPT_CMPL=%CSF_OPT_CMPL% %PRODUCTS_DEFINES%"
176
177 rem ----- Colect 3rd-parties additional include paths into compiler options -----
178 for %%a in ("%CSF_OPT_INC:;=";"%") do (
179   set "anItem=%%~a"
180   if not ["%%~a"] == [""] call :concatCmplInc %%~a
181 )
182
183 rem ----- Colect 3rd-parties additional library paths (32-bit) into linker options -----
184 set "OPT_LIB32="
185 for %%a in ("%CSF_OPT_LIB32:;=";"%") do (
186   set "anItem=%%~a"
187   if not ["%%~a"] == [""] call :concatLib32 %%~a
188 )
189
190 rem ----- Colect 3rd-parties additional library paths (64-bit) into linker options -----
191 set "OPT_LIB64="
192 for %%a in ("%CSF_OPT_LIB64:;=";"%") do (
193   set "anItem=%%~a"
194   if not ["%%~a"] == [""] call :concatLib64 %%~a
195 )
196
197 set "CSF_OPT_LNK32=%CSF_OPT_LNK32% %OPT_LIB32%"
198 set "CSF_OPT_LNK64=%CSF_OPT_LNK64% %OPT_LIB64%"
199 set "CSF_OPT_LNK32D=%CSF_OPT_LNK32D% %OPT_LIB32%"
200 set "CSF_OPT_LNK64D=%CSF_OPT_LNK64D% %OPT_LIB64%"
201 set "CSF_OPT_LNK32I=%CSF_OPT_LNK32I% %OPT_LIB32%"
202 set "CSF_OPT_LNK64I=%CSF_OPT_LNK64I% %OPT_LIB64%"
203
204 rem ----- Default paths to sub-folders (can be different in install env) -----
205 if "%CSF_OCCTIncludePath%" == "" set "CSF_OCCTIncludePath=%CASROOT%\inc"
206 if "%CSF_OCCTResourcePath%" == "" set "CSF_OCCTResourcePath=%CASROOT%\src"
207 if "%CSF_OCCTSamplesPath%" == "" set "CSF_OCCTSamplesPath=%CASROOT%\samples"
208 if "%CSF_OCCTDataPath%" == "" set "CSF_OCCTDataPath=%CASROOT%\data"
209 if "%CSF_OCCTTestsPath%" == "" set "CSF_OCCTTestsPath=%CASROOT%\tests"
210 if "%CSF_OCCTBinPath%" == "" set "CSF_OCCTBinPath=%CASROOT%\win%ARCH%\%VCLIB%\bin%CASDEB%"
211 if "%CSF_OCCTLibPath%" == "" set "CSF_OCCTLibPath=%CASROOT%\win%ARCH%\%VCLIB%\lib%CASDEB%"
212
213 rem ----- Set path to 3rd party and OCCT libraries -----
214 set "PATH=%CSF_OCCTBinPath%;%PATH%"
215 if ["%CASDEB%"] == [""] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32%;%PATH%"
216 if ["%CASDEB%"] == [""] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64%;%PATH%"
217 if ["%CASDEB%"] == ["d"] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32D%;%PATH%"
218 if ["%CASDEB%"] == ["d"] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64D%;%PATH%"
219 if ["%CASDEB%"] == ["i"] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32I%;%PATH%"
220 if ["%CASDEB%"] == ["i"] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64I%;%PATH%"
221
222 rem ----- Set envoronment variables used by OCCT -----
223 set CSF_LANGUAGE=us
224 set MMGT_CLEAR=1
225 set "CSF_SHMessage=%CSF_OCCTResourcePath%\SHMessage"
226 set "CSF_MDTVTexturesDirectory=%CSF_OCCTResourcePath%\Textures"
227 set "CSF_ShadersDirectory=%CSF_OCCTResourcePath%\Shaders"
228 set "CSF_XSMessage=%CSF_OCCTResourcePath%\XSMessage"
229 set "CSF_TObjMessage=%CSF_OCCTResourcePath%\TObj"
230 set "CSF_StandardDefaults=%CSF_OCCTResourcePath%\StdResource"
231 set "CSF_PluginDefaults=%CSF_OCCTResourcePath%\StdResource"
232 set "CSF_XCAFDefaults=%CSF_OCCTResourcePath%\StdResource"
233 set "CSF_TObjDefaults=%CSF_OCCTResourcePath%\StdResource"
234 set "CSF_StandardLiteDefaults=%CSF_OCCTResourcePath%\StdResource"
235 set "CSF_IGESDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
236 set "CSF_STEPDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
237 set "CSF_XmlOcafResource=%CSF_OCCTResourcePath%\XmlOcafResource"
238 set "CSF_MIGRATION_TYPES=%CSF_OCCTResourcePath%\StdResource\MigrationSheet.txt"
239
240 rem Draw Harness special stuff
241 if exist "%CSF_OCCTResourcePath%\DrawResources\DrawDefault" (
242   set "DRAWDEFAULT=%CSF_OCCTResourcePath%\DrawResources\DrawDefault"
243 )
244 if exist "%CSF_OCCTResourcePath%\DrawResources" (
245   set "DRAWHOME=%CSF_OCCTResourcePath%\DrawResources"
246   set "CSF_DrawPluginDefaults=%DRAWHOME%"
247 )
248 goto :eof
249
250 :concatCmplInc
251 set "CSF_OPT_CMPL=%CSF_OPT_CMPL% -I%1"
252 goto :eof
253
254 :concatLib32
255 rem Compiler options for Code::Blocks: -L for gcc/mingw and /LIBPATH for msvc
256 rem set "OPT_LIB32=%OPT_LIB32% /LIBPATH:%1"
257 set "OPT_LIB32=%OPT_LIB32% -L%1"
258 goto :eof
259
260 :concatLib64
261 rem Compiler options for Code::Blocks: -L for gcc/mingw and /LIBPATH for msvc
262 rem set "OPT_LIB64=%OPT_LIB64% /LIBPATH:%1"
263 set "OPT_LIB64=%OPT_LIB64% -L%1"
264 goto :eof