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"
22 set "HAVE_GL2PS=false"
24 set "HAVE_GLES2=false"
27 set "HAVE_LIBLZMA=false"
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%" == "vc10" (
86 set "DevEnvDir=%VS100COMNTOOLS%..\IDE"
87 ) else if /I "%VCFMT%" == "vc11" (
88 set "DevEnvDir=%VS110COMNTOOLS%..\IDE"
89 rem Visual Studio Express starting from VS 2012 is called "for Windows Desktop"
90 rem and has a new name for executable - WDExpress
91 set "VisualStudioExpressName=WDExpress"
92 ) else if /I "%VCFMT%" == "vc12" (
93 set "DevEnvDir=%VS120COMNTOOLS%..\IDE"
94 set "VisualStudioExpressName=WDExpress"
95 ) else if /I "%VCFMT%" == "vc14" (
96 set "DevEnvDir=%VS140COMNTOOLS%..\IDE"
97 ) else if /I "%VCFMT%" == "vc141" (
98 for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
99 set "DevEnvDir=%%i\Common7\IDE\"
101 ) else if /I "%VCFMT%" == "gcc" (
104 echo Error: wrong VS identifier
108 rem ----- Parsing vcvarsall for qt samples and define PlatformToolset -----
109 if /I "%VCFMT%" == "vc10" (
110 set "VCVARS=%VS100COMNTOOLS%..\..\VC\vcvarsall.bat"
111 set "VCPlatformToolSet=v100"
112 ) else if /I "%VCFMT%" == "vc11" (
113 set "VCVARS=%VS110COMNTOOLS%..\..\VC\vcvarsall.bat"
114 set "VCPlatformToolSet=v110"
115 ) else if /I "%VCFMT%" == "vc12" (
116 set "VCVARS=%VS120COMNTOOLS%..\..\VC\vcvarsall.bat"
117 set "VCPlatformToolSet=v120"
118 ) else if /I "%VCFMT%" == "vc14" (
119 set "VCVARS=%VS140COMNTOOLS%..\..\VC\vcvarsall.bat"
120 set "VCPlatformToolSet=v140"
121 ) else if /I "%VCFMT%" == "vc141" (
122 for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
123 set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat"
125 set "VCPlatformToolSet=v141"
126 ) else if /I "%VCFMT%" == "gcc" (
129 echo Error: first argument ^(%VCVER%^) should specify supported version of Visual C++,
130 echo one of: vc10 ^(VS 2010 SP3^), vc11 ^(VS 2012 SP3^), vc12 ^(VS 2013^) or vc14 ^(VS 2015^)
134 set "CSF_OPT_LIB32D=%CSF_OPT_LIB32%"
135 set "CSF_OPT_LIB64D=%CSF_OPT_LIB64%"
136 set "CSF_OPT_BIN32D=%CSF_OPT_BIN32%"
137 set "CSF_OPT_BIN64D=%CSF_OPT_BIN64%"
138 set "CSF_OPT_LIB32I=%CSF_OPT_LIB32%"
139 set "CSF_OPT_LIB64I=%CSF_OPT_LIB64%"
140 set "CSF_OPT_BIN32I=%CSF_OPT_BIN32%"
141 set "CSF_OPT_BIN64I=%CSF_OPT_BIN64%"
143 rem ----- Optional 3rd-parties should be enabled by HAVE macros -----
145 set "PRODUCTS_DEFINES="
146 if ["%HAVE_TBB%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_TBB" & set "CSF_DEFINES=HAVE_TBB;%CSF_DEFINES%"
147 if ["%HAVE_OPENCL%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_OPENCL" & set "CSF_DEFINES=HAVE_OPENCL;%CSF_DEFINES%"
148 if ["%HAVE_GL2PS%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_GL2PS" & set "CSF_DEFINES=HAVE_GL2PS;%CSF_DEFINES%"
149 if ["%HAVE_FREEIMAGE%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_FREEIMAGE" & set "CSF_DEFINES=HAVE_FREEIMAGE;%CSF_DEFINES%"
150 if ["%HAVE_FFMPEG%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_FFMPEG" & set "CSF_DEFINES=HAVE_FFMPEG;%CSF_DEFINES%"
151 if ["%HAVE_VTK%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_VTK" & set "CSF_DEFINES=HAVE_VTK;%CSF_DEFINES%"
152 if ["%HAVE_GLES2%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_GLES2" & set "CSF_DEFINES=HAVE_GLES2;%CSF_DEFINES%"
153 if ["%HAVE_D3D%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_D3D" & set "CSF_DEFINES=HAVE_D3D;%CSF_DEFINES%"
154 if ["%HAVE_ZLIB%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_ZLIB" & set "CSF_DEFINES=HAVE_ZLIB;%CSF_DEFINES%"
155 if ["%HAVE_LIBLZMA%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_LIBLZMA" & set "CSF_DEFINES=HAVE_LIBLZMA;%CSF_DEFINES%"
157 rem Eliminate VS warning
158 if ["%CSF_DEFINES%"] == [""] set "CSF_DEFINES=;"
160 rem ----- Optional 3rd-parties should be enabled by HAVE macros -----
161 if not ["%PRODUCTS_DEFINES%"] == [""] set "CSF_OPT_CMPL=%CSF_OPT_CMPL% %PRODUCTS_DEFINES%"
163 rem ----- Colect 3rd-parties additional include paths into compiler options -----
164 for %%a in ("%CSF_OPT_INC:;=";"%") do (
166 if not ["%%~a"] == [""] call :concatCmplInc %%~a
169 rem ----- Colect 3rd-parties additional library paths (32-bit) into linker options -----
171 for %%a in ("%CSF_OPT_LIB32:;=";"%") do (
173 if not ["%%~a"] == [""] call :concatLib32 %%~a
176 rem ----- Colect 3rd-parties additional library paths (64-bit) into linker options -----
178 for %%a in ("%CSF_OPT_LIB64:;=";"%") do (
180 if not ["%%~a"] == [""] call :concatLib64 %%~a
183 set "CSF_OPT_LNK32=%CSF_OPT_LNK32% %OPT_LIB32%"
184 set "CSF_OPT_LNK64=%CSF_OPT_LNK64% %OPT_LIB64%"
185 set "CSF_OPT_LNK32D=%CSF_OPT_LNK32D% %OPT_LIB32%"
186 set "CSF_OPT_LNK64D=%CSF_OPT_LNK64D% %OPT_LIB64%"
187 set "CSF_OPT_LNK32I=%CSF_OPT_LNK32I% %OPT_LIB32%"
188 set "CSF_OPT_LNK64I=%CSF_OPT_LNK64I% %OPT_LIB64%"
190 rem ----- Default paths to sub-folders (can be different in install env) -----
191 if "%CSF_OCCTIncludePath%" == "" set "CSF_OCCTIncludePath=%CASROOT%\inc"
192 if "%CSF_OCCTResourcePath%" == "" set "CSF_OCCTResourcePath=%CASROOT%\src"
193 if "%CSF_OCCTSamplesPath%" == "" set "CSF_OCCTSamplesPath=%CASROOT%\samples"
194 if "%CSF_OCCTDataPath%" == "" set "CSF_OCCTDataPath=%CASROOT%\data"
195 if "%CSF_OCCTTestsPath%" == "" set "CSF_OCCTTestsPath=%CASROOT%\tests"
196 if "%CSF_OCCTBinPath%" == "" set "CSF_OCCTBinPath=%CASROOT%\win%ARCH%\%VCLIB%\bin%CASDEB%"
197 if "%CSF_OCCTLibPath%" == "" set "CSF_OCCTLibPath=%CASROOT%\win%ARCH%\%VCLIB%\lib%CASDEB%"
199 rem ----- Set path to 3rd party and OCCT libraries -----
200 set "PATH=%CSF_OCCTBinPath%;%PATH%"
201 if ["%CASDEB%"] == [""] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32%;%PATH%"
202 if ["%CASDEB%"] == [""] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64%;%PATH%"
203 if ["%CASDEB%"] == ["d"] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32D%;%PATH%"
204 if ["%CASDEB%"] == ["d"] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64D%;%PATH%"
205 if ["%CASDEB%"] == ["i"] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32I%;%PATH%"
206 if ["%CASDEB%"] == ["i"] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64I%;%PATH%"
208 rem ----- Set envoronment variables used by OCCT -----
211 set "CSF_SHMessage=%CSF_OCCTResourcePath%\SHMessage"
212 set "CSF_MDTVTexturesDirectory=%CSF_OCCTResourcePath%\Textures"
213 set "CSF_ShadersDirectory=%CSF_OCCTResourcePath%\Shaders"
214 set "CSF_XSMessage=%CSF_OCCTResourcePath%\XSMessage"
215 set "CSF_TObjMessage=%CSF_OCCTResourcePath%\TObj"
216 set "CSF_StandardDefaults=%CSF_OCCTResourcePath%\StdResource"
217 set "CSF_PluginDefaults=%CSF_OCCTResourcePath%\StdResource"
218 set "CSF_XCAFDefaults=%CSF_OCCTResourcePath%\StdResource"
219 set "CSF_TObjDefaults=%CSF_OCCTResourcePath%\StdResource"
220 set "CSF_StandardLiteDefaults=%CSF_OCCTResourcePath%\StdResource"
221 set "CSF_IGESDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
222 set "CSF_STEPDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
223 set "CSF_XmlOcafResource=%CSF_OCCTResourcePath%\XmlOcafResource"
224 set "CSF_MIGRATION_TYPES=%CSF_OCCTResourcePath%\StdResource\MigrationSheet.txt"
226 rem Draw Harness special stuff
227 if exist "%CSF_OCCTResourcePath%\DrawResources\DrawDefault" (
228 set "DRAWDEFAULT=%CSF_OCCTResourcePath%\DrawResources\DrawDefault"
230 if exist "%CSF_OCCTResourcePath%\DrawResources" (
231 set "DRAWHOME=%CSF_OCCTResourcePath%\DrawResources"
232 set "CSF_DrawPluginDefaults=%DRAWHOME%"
237 set "CSF_OPT_CMPL=%CSF_OPT_CMPL% -I%1"
241 rem Compiler options for Code::Blocks: -L for gcc/mingw and /LIBPATH for msvc
242 rem set "OPT_LIB32=%OPT_LIB32% /LIBPATH:%1"
243 set "OPT_LIB32=%OPT_LIB32% -L%1"
247 rem Compiler options for Code::Blocks: -L for gcc/mingw and /LIBPATH for msvc
248 rem set "OPT_LIB64=%OPT_LIB64% /LIBPATH:%1"
249 set "OPT_LIB64=%OPT_LIB64% -L%1"