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:
10 set "SCRIPTROOT=%~dp0"
11 set "SCRIPTROOT=%SCRIPTROOT:~0,-1%"
13 rem ----- Reset values to defaults -----
19 set "HAVE_OPENCL=false"
20 set "HAVE_FREEIMAGE=false"
21 set "HAVE_FFMPEG=false"
23 set "HAVE_GLES2=false"
26 set "HAVE_LIBLZMA=false"
27 set "HAVE_RAPIDJSON=false"
34 set "CSF_DEFINES=%CSF_DEFINES_EXTRA%"
36 if not ["%CASROOT%"] == [""] if exist "%SCRIPTROOT%\%CASROOT%" set "CASROOT=%SCRIPTROOT%\%CASROOT%"
37 if ["%CASROOT%"] == [""] set "CASROOT=%SCRIPTROOT%"
39 rem ----- Load local settings -----
40 if exist "%CASROOT%\custom.bat" (
41 call "%CASROOT%\custom.bat" %1 %2 %3 %4 %5
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"
54 rem Decode VCVER variable and define related ones:
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)
62 rem Note that for VS before 2015 (vc14) always
63 rem VCFMT=VCLIB=VCVER and VCPROP=NativeDesktop
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"
70 rem for vc10-12, interpretation is trivial
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%
80 rem echo VCVER=%VCVER% VCFMT=%VCFMT% VCLIB=%VCLIB% VCPROP=%VCPROP%
82 rem ----- Parsing of Visual Studio platform -----
83 set "VisualStudioExpressName=VCExpress"
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\"
105 ) else if /I "%VCFMT%" == "vc142" (
106 for /f "usebackq delims=" %%i in (`vswhere.exe -version "[16.0,16.99]" -latest -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
107 set "DevEnvDir=%%i\Common7\IDE\"
109 ) else if /I "%VCFMT%" == "gcc" (
112 echo Error: first argument ^(%VCVER%^) should specify supported version of Visual C++,
114 echo vc9 = VS 2008 ^(SP1^)
115 echo vc10 = VS 2010 ^(SP3^)
116 echo vc11 = VS 2012 ^(SP3^)
117 echo vc12 = VS 2013 ^(SP3^)
124 rem ----- Parsing vcvarsall for qt samples and define PlatformToolset -----
125 if /I "%VCFMT%" == "vc9" (
126 set "VCVARS=%VS90COMNTOOLS%..\..\VC\vcvarsall.bat"
127 set "VCPlatformToolSet=v90"
128 ) else if /I "%VCFMT%" == "vc10" (
129 set "VCVARS=%VS100COMNTOOLS%..\..\VC\vcvarsall.bat"
130 set "VCPlatformToolSet=v100"
131 ) else if /I "%VCFMT%" == "vc11" (
132 set "VCVARS=%VS110COMNTOOLS%..\..\VC\vcvarsall.bat"
133 set "VCPlatformToolSet=v110"
134 ) else if /I "%VCFMT%" == "vc12" (
135 set "VCVARS=%VS120COMNTOOLS%..\..\VC\vcvarsall.bat"
136 set "VCPlatformToolSet=v120"
137 ) else if /I "%VCFMT%" == "vc14" (
138 set "VCVARS=%VS140COMNTOOLS%..\..\VC\vcvarsall.bat"
139 set "VCPlatformToolSet=v140"
140 ) else if /I "%VCFMT%" == "vc141" (
141 for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
142 set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat"
144 set "VCPlatformToolSet=v141"
145 ) else if /I "%VCFMT%" == "vc142" (
146 for /f "usebackq delims=" %%i in (`vswhere.exe -version "[16.0,16.99]" -latest -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
147 set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat"
149 set "VCPlatformToolSet=v142"
150 ) else if /I "%VCFMT%" == "gcc" (
153 echo Error: wrong VS identifier
157 set "CSF_OPT_LIB32D=%CSF_OPT_LIB32%"
158 set "CSF_OPT_LIB64D=%CSF_OPT_LIB64%"
159 set "CSF_OPT_BIN32D=%CSF_OPT_BIN32%"
160 set "CSF_OPT_BIN64D=%CSF_OPT_BIN64%"
161 set "CSF_OPT_LIB32I=%CSF_OPT_LIB32%"
162 set "CSF_OPT_LIB64I=%CSF_OPT_LIB64%"
163 set "CSF_OPT_BIN32I=%CSF_OPT_BIN32%"
164 set "CSF_OPT_BIN64I=%CSF_OPT_BIN64%"
166 rem ----- Optional 3rd-parties should be enabled by HAVE macros -----
168 set "PRODUCTS_DEFINES="
169 if ["%HAVE_TBB%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_TBB" & set "CSF_DEFINES=HAVE_TBB;%CSF_DEFINES%"
170 if ["%HAVE_OPENCL%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_OPENCL" & set "CSF_DEFINES=HAVE_OPENCL;%CSF_DEFINES%"
171 if ["%HAVE_FREEIMAGE%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_FREEIMAGE" & set "CSF_DEFINES=HAVE_FREEIMAGE;%CSF_DEFINES%"
172 if ["%HAVE_FFMPEG%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_FFMPEG" & set "CSF_DEFINES=HAVE_FFMPEG;%CSF_DEFINES%"
173 if ["%HAVE_VTK%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_VTK" & set "CSF_DEFINES=HAVE_VTK;%CSF_DEFINES%"
174 if ["%HAVE_GLES2%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_GLES2" & set "CSF_DEFINES=HAVE_GLES2;%CSF_DEFINES%"
175 if ["%HAVE_D3D%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_D3D" & set "CSF_DEFINES=HAVE_D3D;%CSF_DEFINES%"
176 if ["%HAVE_ZLIB%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_ZLIB" & set "CSF_DEFINES=HAVE_ZLIB;%CSF_DEFINES%"
177 if ["%HAVE_LIBLZMA%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_LIBLZMA" & set "CSF_DEFINES=HAVE_LIBLZMA;%CSF_DEFINES%"
178 if ["%HAVE_RAPIDJSON%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_RAPIDJSON" & set "CSF_DEFINES=HAVE_RAPIDJSON;%CSF_DEFINES%"
179 if ["%HAVE_E57%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_E57" & set "CSF_DEFINES=HAVE_E57;%CSF_DEFINES%"
181 rem Eliminate VS warning
182 if ["%CSF_DEFINES%"] == [""] set "CSF_DEFINES=;"
184 rem ----- Optional 3rd-parties should be enabled by HAVE macros -----
185 if not ["%PRODUCTS_DEFINES%"] == [""] set "CSF_OPT_CMPL=%CSF_OPT_CMPL% %PRODUCTS_DEFINES%"
187 rem ----- Colect 3rd-parties additional include paths into compiler options -----
188 for %%a in ("%CSF_OPT_INC:;=";"%") do (
190 if not ["%%~a"] == [""] call :concatCmplInc %%~a
193 rem ----- Colect 3rd-parties additional library paths (32-bit) into linker options -----
195 for %%a in ("%CSF_OPT_LIB32:;=";"%") do (
197 if not ["%%~a"] == [""] call :concatLib32 %%~a
200 rem ----- Colect 3rd-parties additional library paths (64-bit) into linker options -----
202 for %%a in ("%CSF_OPT_LIB64:;=";"%") do (
204 if not ["%%~a"] == [""] call :concatLib64 %%~a
207 set "CSF_OPT_LNK32=%CSF_OPT_LNK32% %OPT_LIB32%"
208 set "CSF_OPT_LNK64=%CSF_OPT_LNK64% %OPT_LIB64%"
209 set "CSF_OPT_LNK32D=%CSF_OPT_LNK32D% %OPT_LIB32%"
210 set "CSF_OPT_LNK64D=%CSF_OPT_LNK64D% %OPT_LIB64%"
211 set "CSF_OPT_LNK32I=%CSF_OPT_LNK32I% %OPT_LIB32%"
212 set "CSF_OPT_LNK64I=%CSF_OPT_LNK64I% %OPT_LIB64%"
214 rem ----- Default paths to sub-folders (can be different in install env) -----
215 if "%CSF_OCCTIncludePath%" == "" set "CSF_OCCTIncludePath=%CASROOT%\inc"
216 if "%CSF_OCCTResourcePath%" == "" set "CSF_OCCTResourcePath=%CASROOT%\src"
217 if "%CSF_OCCTSamplesPath%" == "" set "CSF_OCCTSamplesPath=%CASROOT%\samples"
218 if "%CSF_OCCTDataPath%" == "" set "CSF_OCCTDataPath=%CASROOT%\data"
219 if "%CSF_OCCTTestsPath%" == "" set "CSF_OCCTTestsPath=%CASROOT%\tests"
220 if "%CSF_OCCTBinPath%" == "" set "CSF_OCCTBinPath=%CASROOT%\win%ARCH%\%VCLIB%\bin%CASDEB%"
221 if "%CSF_OCCTLibPath%" == "" set "CSF_OCCTLibPath=%CASROOT%\win%ARCH%\%VCLIB%\lib%CASDEB%"
223 rem ----- Set path to 3rd party and OCCT libraries -----
224 set "PATH=%CSF_OCCTBinPath%;%PATH%"
225 if ["%CASDEB%"] == [""] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32%;%PATH%"
226 if ["%CASDEB%"] == [""] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64%;%PATH%"
227 if ["%CASDEB%"] == ["d"] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32D%;%PATH%"
228 if ["%CASDEB%"] == ["d"] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64D%;%PATH%"
229 if ["%CASDEB%"] == ["i"] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32I%;%PATH%"
230 if ["%CASDEB%"] == ["i"] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64I%;%PATH%"
232 rem ----- Set envoronment variables used by OCCT -----
235 set "CSF_SHMessage=%CSF_OCCTResourcePath%\SHMessage"
236 set "CSF_MDTVTexturesDirectory=%CSF_OCCTResourcePath%\Textures"
237 set "CSF_ShadersDirectory=%CSF_OCCTResourcePath%\Shaders"
238 set "CSF_XSMessage=%CSF_OCCTResourcePath%\XSMessage"
239 set "CSF_TObjMessage=%CSF_OCCTResourcePath%\TObj"
240 set "CSF_StandardDefaults=%CSF_OCCTResourcePath%\StdResource"
241 set "CSF_PluginDefaults=%CSF_OCCTResourcePath%\StdResource"
242 set "CSF_XCAFDefaults=%CSF_OCCTResourcePath%\StdResource"
243 set "CSF_TObjDefaults=%CSF_OCCTResourcePath%\StdResource"
244 set "CSF_StandardLiteDefaults=%CSF_OCCTResourcePath%\StdResource"
245 set "CSF_IGESDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
246 set "CSF_STEPDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
247 set "CSF_XmlOcafResource=%CSF_OCCTResourcePath%\XmlOcafResource"
248 set "CSF_MIGRATION_TYPES=%CSF_OCCTResourcePath%\StdResource\MigrationSheet.txt"
250 rem Draw Harness special stuff
251 if exist "%CSF_OCCTResourcePath%\DrawResources\DrawDefault" (
252 set "DRAWDEFAULT=%CSF_OCCTResourcePath%\DrawResources\DrawDefault"
254 if exist "%CSF_OCCTResourcePath%\DrawResources" (
255 set "DRAWHOME=%CSF_OCCTResourcePath%\DrawResources"
256 set "CSF_DrawPluginDefaults=%DRAWHOME%"
261 set "CSF_OPT_CMPL=%CSF_OPT_CMPL% -I%1"
265 rem Compiler options for Code::Blocks: -L for gcc/mingw and /LIBPATH for msvc
266 rem set "OPT_LIB32=%OPT_LIB32% /LIBPATH:%1"
267 set "OPT_LIB32=%OPT_LIB32% -L%1"
271 rem Compiler options for Code::Blocks: -L for gcc/mingw and /LIBPATH for msvc
272 rem set "OPT_LIB64=%OPT_LIB64% /LIBPATH:%1"
273 set "OPT_LIB64=%OPT_LIB64% -L%1"