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