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"
32 set "CSF_DEFINES=%CSF_DEFINES_EXTRA%"
34 if not ["%CASROOT%"] == [""] if exist "%SCRIPTROOT%\%CASROOT%" set "CASROOT=%SCRIPTROOT%\%CASROOT%"
35 if ["%CASROOT%"] == [""] set "CASROOT=%SCRIPTROOT%"
37 rem ----- Load local settings -----
38 if exist "%CASROOT%\custom.bat" (
39 call "%CASROOT%\custom.bat" %1 %2 %3 %4 %5
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"
52 rem Decode VCVER variable and define related ones:
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)
60 rem Note that for VS before 2015 (vc14) always
61 rem VCFMT=VCLIB=VCVER and VCPROP=NativeDesktop
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"
68 rem for vc10-12, interpretation is trivial
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%
78 rem echo VCVER=%VCVER% VCFMT=%VCFMT% VCLIB=%VCLIB% VCPROP=%VCPROP%
80 rem ----- Parsing of Visual Studio platform -----
81 set "VisualStudioExpressName=VCExpress"
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\"
103 ) else if /I "%VCFMT%" == "gcc" (
106 echo Error: first argument ^(%VCVER%^) should specify supported version of Visual C++,
108 echo vc9 = VS 2008 ^(SP1^)
109 echo vc10 = VS 2010 ^(SP3^)
110 echo vc11 = VS 2012 ^(SP3^)
111 echo vc12 = VS 2013 ^(SP3^)
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"
137 set "VCPlatformToolSet=v141"
138 ) else if /I "%VCFMT%" == "gcc" (
141 echo Error: wrong VS identifier
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%"
154 rem ----- Optional 3rd-parties should be enabled by HAVE macros -----
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%"
167 rem Eliminate VS warning
168 if ["%CSF_DEFINES%"] == [""] set "CSF_DEFINES=;"
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%"
173 rem ----- Colect 3rd-parties additional include paths into compiler options -----
174 for %%a in ("%CSF_OPT_INC:;=";"%") do (
176 if not ["%%~a"] == [""] call :concatCmplInc %%~a
179 rem ----- Colect 3rd-parties additional library paths (32-bit) into linker options -----
181 for %%a in ("%CSF_OPT_LIB32:;=";"%") do (
183 if not ["%%~a"] == [""] call :concatLib32 %%~a
186 rem ----- Colect 3rd-parties additional library paths (64-bit) into linker options -----
188 for %%a in ("%CSF_OPT_LIB64:;=";"%") do (
190 if not ["%%~a"] == [""] call :concatLib64 %%~a
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%"
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%"
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%"
218 rem ----- Set envoronment variables used by OCCT -----
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"
236 rem Draw Harness special stuff
237 if exist "%CSF_OCCTResourcePath%\DrawResources\DrawDefault" (
238 set "DRAWDEFAULT=%CSF_OCCTResourcePath%\DrawResources\DrawDefault"
240 if exist "%CSF_OCCTResourcePath%\DrawResources" (
241 set "DRAWHOME=%CSF_OCCTResourcePath%\DrawResources"
242 set "CSF_DrawPluginDefaults=%DRAWHOME%"
247 set "CSF_OPT_CMPL=%CSF_OPT_CMPL% -I%1"
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"
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"