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