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%" == "gcc" (
108 echo Error: first argument ^(%VCVER%^) should specify supported version of Visual C++,
110 echo vc9 = VS 2008 ^(SP1^)
111 echo vc10 = VS 2010 ^(SP3^)
112 echo vc11 = VS 2012 ^(SP3^)
113 echo vc12 = VS 2013 ^(SP3^)
119 rem ----- Parsing vcvarsall for qt samples and define PlatformToolset -----
120 if /I "%VCFMT%" == "vc9" (
121 set "VCVARS=%VS90COMNTOOLS%..\..\VC\vcvarsall.bat"
122 set "VCPlatformToolSet=v90"
123 ) else if /I "%VCFMT%" == "vc10" (
124 set "VCVARS=%VS100COMNTOOLS%..\..\VC\vcvarsall.bat"
125 set "VCPlatformToolSet=v100"
126 ) else if /I "%VCFMT%" == "vc11" (
127 set "VCVARS=%VS110COMNTOOLS%..\..\VC\vcvarsall.bat"
128 set "VCPlatformToolSet=v110"
129 ) else if /I "%VCFMT%" == "vc12" (
130 set "VCVARS=%VS120COMNTOOLS%..\..\VC\vcvarsall.bat"
131 set "VCPlatformToolSet=v120"
132 ) else if /I "%VCFMT%" == "vc14" (
133 set "VCVARS=%VS140COMNTOOLS%..\..\VC\vcvarsall.bat"
134 set "VCPlatformToolSet=v140"
135 ) else if /I "%VCFMT%" == "vc141" (
136 for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
137 set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat"
139 set "VCPlatformToolSet=v141"
140 ) else if /I "%VCFMT%" == "gcc" (
143 echo Error: wrong VS identifier
147 set "CSF_OPT_LIB32D=%CSF_OPT_LIB32%"
148 set "CSF_OPT_LIB64D=%CSF_OPT_LIB64%"
149 set "CSF_OPT_BIN32D=%CSF_OPT_BIN32%"
150 set "CSF_OPT_BIN64D=%CSF_OPT_BIN64%"
151 set "CSF_OPT_LIB32I=%CSF_OPT_LIB32%"
152 set "CSF_OPT_LIB64I=%CSF_OPT_LIB64%"
153 set "CSF_OPT_BIN32I=%CSF_OPT_BIN32%"
154 set "CSF_OPT_BIN64I=%CSF_OPT_BIN64%"
156 rem ----- Optional 3rd-parties should be enabled by HAVE macros -----
158 set "PRODUCTS_DEFINES="
159 if ["%HAVE_TBB%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_TBB" & set "CSF_DEFINES=HAVE_TBB;%CSF_DEFINES%"
160 if ["%HAVE_OPENCL%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_OPENCL" & set "CSF_DEFINES=HAVE_OPENCL;%CSF_DEFINES%"
161 if ["%HAVE_FREEIMAGE%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_FREEIMAGE" & set "CSF_DEFINES=HAVE_FREEIMAGE;%CSF_DEFINES%"
162 if ["%HAVE_FFMPEG%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_FFMPEG" & set "CSF_DEFINES=HAVE_FFMPEG;%CSF_DEFINES%"
163 if ["%HAVE_VTK%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_VTK" & set "CSF_DEFINES=HAVE_VTK;%CSF_DEFINES%"
164 if ["%HAVE_GLES2%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_GLES2" & set "CSF_DEFINES=HAVE_GLES2;%CSF_DEFINES%"
165 if ["%HAVE_D3D%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_D3D" & set "CSF_DEFINES=HAVE_D3D;%CSF_DEFINES%"
166 if ["%HAVE_ZLIB%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_ZLIB" & set "CSF_DEFINES=HAVE_ZLIB;%CSF_DEFINES%"
167 if ["%HAVE_LIBLZMA%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_LIBLZMA" & set "CSF_DEFINES=HAVE_LIBLZMA;%CSF_DEFINES%"
168 if ["%HAVE_RAPIDJSON%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_RAPIDJSON" & set "CSF_DEFINES=HAVE_RAPIDJSON;%CSF_DEFINES%"
169 if ["%HAVE_E57%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_E57" & set "CSF_DEFINES=HAVE_E57;%CSF_DEFINES%"
171 rem Eliminate VS warning
172 if ["%CSF_DEFINES%"] == [""] set "CSF_DEFINES=;"
174 rem ----- Optional 3rd-parties should be enabled by HAVE macros -----
175 if not ["%PRODUCTS_DEFINES%"] == [""] set "CSF_OPT_CMPL=%CSF_OPT_CMPL% %PRODUCTS_DEFINES%"
177 rem ----- Colect 3rd-parties additional include paths into compiler options -----
178 for %%a in ("%CSF_OPT_INC:;=";"%") do (
180 if not ["%%~a"] == [""] call :concatCmplInc %%~a
183 rem ----- Colect 3rd-parties additional library paths (32-bit) into linker options -----
185 for %%a in ("%CSF_OPT_LIB32:;=";"%") do (
187 if not ["%%~a"] == [""] call :concatLib32 %%~a
190 rem ----- Colect 3rd-parties additional library paths (64-bit) into linker options -----
192 for %%a in ("%CSF_OPT_LIB64:;=";"%") do (
194 if not ["%%~a"] == [""] call :concatLib64 %%~a
197 set "CSF_OPT_LNK32=%CSF_OPT_LNK32% %OPT_LIB32%"
198 set "CSF_OPT_LNK64=%CSF_OPT_LNK64% %OPT_LIB64%"
199 set "CSF_OPT_LNK32D=%CSF_OPT_LNK32D% %OPT_LIB32%"
200 set "CSF_OPT_LNK64D=%CSF_OPT_LNK64D% %OPT_LIB64%"
201 set "CSF_OPT_LNK32I=%CSF_OPT_LNK32I% %OPT_LIB32%"
202 set "CSF_OPT_LNK64I=%CSF_OPT_LNK64I% %OPT_LIB64%"
204 rem ----- Default paths to sub-folders (can be different in install env) -----
205 if "%CSF_OCCTIncludePath%" == "" set "CSF_OCCTIncludePath=%CASROOT%\inc"
206 if "%CSF_OCCTResourcePath%" == "" set "CSF_OCCTResourcePath=%CASROOT%\src"
207 if "%CSF_OCCTSamplesPath%" == "" set "CSF_OCCTSamplesPath=%CASROOT%\samples"
208 if "%CSF_OCCTDataPath%" == "" set "CSF_OCCTDataPath=%CASROOT%\data"
209 if "%CSF_OCCTTestsPath%" == "" set "CSF_OCCTTestsPath=%CASROOT%\tests"
210 if "%CSF_OCCTBinPath%" == "" set "CSF_OCCTBinPath=%CASROOT%\win%ARCH%\%VCLIB%\bin%CASDEB%"
211 if "%CSF_OCCTLibPath%" == "" set "CSF_OCCTLibPath=%CASROOT%\win%ARCH%\%VCLIB%\lib%CASDEB%"
213 rem ----- Set path to 3rd party and OCCT libraries -----
214 set "PATH=%CSF_OCCTBinPath%;%PATH%"
215 if ["%CASDEB%"] == [""] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32%;%PATH%"
216 if ["%CASDEB%"] == [""] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64%;%PATH%"
217 if ["%CASDEB%"] == ["d"] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32D%;%PATH%"
218 if ["%CASDEB%"] == ["d"] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64D%;%PATH%"
219 if ["%CASDEB%"] == ["i"] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32I%;%PATH%"
220 if ["%CASDEB%"] == ["i"] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64I%;%PATH%"
222 rem ----- Set envoronment variables used by OCCT -----
225 set "CSF_SHMessage=%CSF_OCCTResourcePath%\SHMessage"
226 set "CSF_MDTVTexturesDirectory=%CSF_OCCTResourcePath%\Textures"
227 set "CSF_ShadersDirectory=%CSF_OCCTResourcePath%\Shaders"
228 set "CSF_XSMessage=%CSF_OCCTResourcePath%\XSMessage"
229 set "CSF_TObjMessage=%CSF_OCCTResourcePath%\TObj"
230 set "CSF_StandardDefaults=%CSF_OCCTResourcePath%\StdResource"
231 set "CSF_PluginDefaults=%CSF_OCCTResourcePath%\StdResource"
232 set "CSF_XCAFDefaults=%CSF_OCCTResourcePath%\StdResource"
233 set "CSF_TObjDefaults=%CSF_OCCTResourcePath%\StdResource"
234 set "CSF_StandardLiteDefaults=%CSF_OCCTResourcePath%\StdResource"
235 set "CSF_IGESDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
236 set "CSF_STEPDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
237 set "CSF_XmlOcafResource=%CSF_OCCTResourcePath%\XmlOcafResource"
238 set "CSF_MIGRATION_TYPES=%CSF_OCCTResourcePath%\StdResource\MigrationSheet.txt"
240 rem Draw Harness special stuff
241 if exist "%CSF_OCCTResourcePath%\DrawResources\DrawDefault" (
242 set "DRAWDEFAULT=%CSF_OCCTResourcePath%\DrawResources\DrawDefault"
244 if exist "%CSF_OCCTResourcePath%\DrawResources" (
245 set "DRAWHOME=%CSF_OCCTResourcePath%\DrawResources"
246 set "CSF_DrawPluginDefaults=%DRAWHOME%"
251 set "CSF_OPT_CMPL=%CSF_OPT_CMPL% -I%1"
255 rem Compiler options for Code::Blocks: -L for gcc/mingw and /LIBPATH for msvc
256 rem set "OPT_LIB32=%OPT_LIB32% /LIBPATH:%1"
257 set "OPT_LIB32=%OPT_LIB32% -L%1"
261 rem Compiler options for Code::Blocks: -L for gcc/mingw and /LIBPATH for msvc
262 rem set "OPT_LIB64=%OPT_LIB64% /LIBPATH:%1"
263 set "OPT_LIB64=%OPT_LIB64% -L%1"