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 rem ----- Load local settings -----
35 if exist "%~dp0custom.bat" (
36 call "%~dp0custom.bat" %1 %2 %3 %4 %5
39 if not ["%CASROOT%"] == [""] if exist "%SCRIPTROOT%\%CASROOT%" set "CASROOT=%SCRIPTROOT%\%CASROOT%"
40 if ["%CASROOT%"] == [""] set "CASROOT=%SCRIPTROOT%"
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"
53 call "%~dp0adm\vcver.bat"
55 rem ----- Parsing of Visual Studio platform -----
56 set "VisualStudioExpressName=VCExpress"
58 if not "%DevEnvDir%" == "" (
59 rem If DevEnvDir is already defined (e.g. in custom.bat), use that value
60 ) else if /I "%VCFMT%" == "vc10" (
61 set "DevEnvDir=%VS100COMNTOOLS%..\IDE"
62 ) else if /I "%VCFMT%" == "vc11" (
63 set "DevEnvDir=%VS110COMNTOOLS%..\IDE"
64 rem Visual Studio Express starting from VS 2012 is called "for Windows Desktop"
65 rem and has a new name for executable - WDExpress
66 set "VisualStudioExpressName=WDExpress"
67 ) else if /I "%VCFMT%" == "vc12" (
68 set "DevEnvDir=%VS120COMNTOOLS%..\IDE"
69 set "VisualStudioExpressName=WDExpress"
70 ) else if /I "%VCFMT%" == "vc14" (
71 set "DevEnvDir=%VS140COMNTOOLS%..\IDE"
72 ) else if /I "%VCFMT%" == "vc141" (
73 for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
74 set "DevEnvDir=%%i\Common7\IDE\"
76 ) else if /I "%VCFMT%" == "gcc" (
79 echo Error: wrong VS identifier
83 rem ----- Parsing vcvarsall for qt samples and define PlatformToolset -----
84 if /I "%VCFMT%" == "vc10" (
85 set "VCVARS=%VS100COMNTOOLS%..\..\VC\vcvarsall.bat"
86 set "VCPlatformToolSet=v100"
87 ) else if /I "%VCFMT%" == "vc11" (
88 set "VCVARS=%VS110COMNTOOLS%..\..\VC\vcvarsall.bat"
89 set "VCPlatformToolSet=v110"
90 ) else if /I "%VCFMT%" == "vc12" (
91 set "VCVARS=%VS120COMNTOOLS%..\..\VC\vcvarsall.bat"
92 set "VCPlatformToolSet=v120"
93 ) else if /I "%VCFMT%" == "vc14" (
94 set "VCVARS=%VS140COMNTOOLS%..\..\VC\vcvarsall.bat"
95 set "VCPlatformToolSet=v140"
96 ) else if /I "%VCFMT%" == "vc141" (
97 for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
98 set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat"
100 set "VCPlatformToolSet=v141"
101 ) else if /I "%VCFMT%" == "gcc" (
104 echo Error: first argument ^(%VCVER%^) should specify supported version of Visual C++,
105 echo one of: vc10 ^(VS 2010 SP3^), vc11 ^(VS 2012 SP3^), vc12 ^(VS 2013^) or vc14 ^(VS 2015^)
109 set "CSF_OPT_LIB32D=%CSF_OPT_LIB32%"
110 set "CSF_OPT_LIB64D=%CSF_OPT_LIB64%"
111 set "CSF_OPT_BIN32D=%CSF_OPT_BIN32%"
112 set "CSF_OPT_BIN64D=%CSF_OPT_BIN64%"
113 set "CSF_OPT_LIB32I=%CSF_OPT_LIB32%"
114 set "CSF_OPT_LIB64I=%CSF_OPT_LIB64%"
115 set "CSF_OPT_BIN32I=%CSF_OPT_BIN32%"
116 set "CSF_OPT_BIN64I=%CSF_OPT_BIN64%"
118 rem ----- Optional 3rd-parties should be enabled by HAVE macros -----
120 set "PRODUCTS_DEFINES="
121 if ["%HAVE_TBB%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_TBB" & set "CSF_DEFINES=HAVE_TBB;%CSF_DEFINES%"
122 if ["%HAVE_OPENCL%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_OPENCL" & set "CSF_DEFINES=HAVE_OPENCL;%CSF_DEFINES%"
123 if ["%HAVE_GL2PS%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_GL2PS" & set "CSF_DEFINES=HAVE_GL2PS;%CSF_DEFINES%"
124 if ["%HAVE_FREEIMAGE%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_FREEIMAGE" & set "CSF_DEFINES=HAVE_FREEIMAGE;%CSF_DEFINES%"
125 if ["%HAVE_FFMPEG%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_FFMPEG" & set "CSF_DEFINES=HAVE_FFMPEG;%CSF_DEFINES%"
126 if ["%HAVE_VTK%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_VTK" & set "CSF_DEFINES=HAVE_VTK;%CSF_DEFINES%"
127 if ["%HAVE_GLES2%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_GLES2" & set "CSF_DEFINES=HAVE_GLES2;%CSF_DEFINES%"
128 if ["%HAVE_D3D%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_D3D" & set "CSF_DEFINES=HAVE_D3D;%CSF_DEFINES%"
129 if ["%HAVE_ZLIB%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_ZLIB" & set "CSF_DEFINES=HAVE_ZLIB;%CSF_DEFINES%"
130 if ["%HAVE_LIBLZMA%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_LIBLZMA" & set "CSF_DEFINES=HAVE_LIBLZMA;%CSF_DEFINES%"
132 rem Eliminate VS warning
133 if ["%CSF_DEFINES%"] == [""] set "CSF_DEFINES=;"
135 rem ----- Optional 3rd-parties should be enabled by HAVE macros -----
136 if not ["%PRODUCTS_DEFINES%"] == [""] set "CSF_OPT_CMPL=%CSF_OPT_CMPL% %PRODUCTS_DEFINES%"
138 rem ----- Colect 3rd-parties additional include paths into compiler options -----
139 for %%a in ("%CSF_OPT_INC:;=";"%") do (
141 if not ["%%~a"] == [""] call :concatCmplInc %%~a
144 rem ----- Colect 3rd-parties additional library paths (32-bit) into linker options -----
146 for %%a in ("%CSF_OPT_LIB32:;=";"%") do (
148 if not ["%%~a"] == [""] call :concatLib32 %%~a
151 rem ----- Colect 3rd-parties additional library paths (64-bit) into linker options -----
153 for %%a in ("%CSF_OPT_LIB64:;=";"%") do (
155 if not ["%%~a"] == [""] call :concatLib64 %%~a
158 set "CSF_OPT_LNK32=%CSF_OPT_LNK32% %OPT_LIB32%"
159 set "CSF_OPT_LNK64=%CSF_OPT_LNK64% %OPT_LIB64%"
160 set "CSF_OPT_LNK32D=%CSF_OPT_LNK32D% %OPT_LIB32%"
161 set "CSF_OPT_LNK64D=%CSF_OPT_LNK64D% %OPT_LIB64%"
162 set "CSF_OPT_LNK32I=%CSF_OPT_LNK32I% %OPT_LIB32%"
163 set "CSF_OPT_LNK64I=%CSF_OPT_LNK64I% %OPT_LIB64%"
165 rem ----- Default paths to sub-folders (can be different in install env) -----
166 if "%CSF_OCCTIncludePath%" == "" set "CSF_OCCTIncludePath=%CASROOT%\inc"
167 if "%CSF_OCCTResourcePath%" == "" set "CSF_OCCTResourcePath=%CASROOT%\src"
168 if "%CSF_OCCTSamplesPath%" == "" set "CSF_OCCTSamplesPath=%CASROOT%\samples"
169 if "%CSF_OCCTDataPath%" == "" set "CSF_OCCTDataPath=%CASROOT%\data"
170 if "%CSF_OCCTTestsPath%" == "" set "CSF_OCCTTestsPath=%CASROOT%\tests"
171 if "%CSF_OCCTBinPath%" == "" set "CSF_OCCTBinPath=%CASROOT%\win%ARCH%\%VCLIB%\bin%CASDEB%"
172 if "%CSF_OCCTLibPath%" == "" set "CSF_OCCTLibPath=%CASROOT%\win%ARCH%\%VCLIB%\lib%CASDEB%"
174 rem ----- Set path to 3rd party and OCCT libraries -----
175 set "PATH=%CSF_OCCTBinPath%;%PATH%"
176 if ["%CASDEB%"] == [""] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32%;%PATH%"
177 if ["%CASDEB%"] == [""] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64%;%PATH%"
178 if ["%CASDEB%"] == ["d"] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32D%;%PATH%"
179 if ["%CASDEB%"] == ["d"] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64D%;%PATH%"
180 if ["%CASDEB%"] == ["i"] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32I%;%PATH%"
181 if ["%CASDEB%"] == ["i"] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64I%;%PATH%"
183 rem ----- Set envoronment variables used by OCCT -----
186 set "CSF_SHMessage=%CSF_OCCTResourcePath%\SHMessage"
187 set "CSF_MDTVTexturesDirectory=%CSF_OCCTResourcePath%\Textures"
188 set "CSF_ShadersDirectory=%CSF_OCCTResourcePath%\Shaders"
189 set "CSF_XSMessage=%CSF_OCCTResourcePath%\XSMessage"
190 set "CSF_TObjMessage=%CSF_OCCTResourcePath%\TObj"
191 set "CSF_StandardDefaults=%CSF_OCCTResourcePath%\StdResource"
192 set "CSF_PluginDefaults=%CSF_OCCTResourcePath%\StdResource"
193 set "CSF_XCAFDefaults=%CSF_OCCTResourcePath%\StdResource"
194 set "CSF_TObjDefaults=%CSF_OCCTResourcePath%\StdResource"
195 set "CSF_StandardLiteDefaults=%CSF_OCCTResourcePath%\StdResource"
196 set "CSF_IGESDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
197 set "CSF_STEPDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
198 set "CSF_XmlOcafResource=%CSF_OCCTResourcePath%\XmlOcafResource"
199 set "CSF_MIGRATION_TYPES=%CSF_OCCTResourcePath%\StdResource\MigrationSheet.txt"
201 rem Draw Harness special stuff
202 if exist "%CSF_OCCTResourcePath%\DrawResources\DrawDefault" (
203 set "DRAWDEFAULT=%CSF_OCCTResourcePath%\DrawResources\DrawDefault"
205 if exist "%CSF_OCCTResourcePath%\DrawResources" (
206 set "DRAWHOME=%CSF_OCCTResourcePath%\DrawResources"
207 set "CSF_DrawPluginDefaults=%DRAWHOME%"
212 set "CSF_OPT_CMPL=%CSF_OPT_CMPL% -I%1"
216 rem Compiler options for Code::Blocks: -L for gcc/mingw and /LIBPATH for msvc
217 rem set "OPT_LIB32=%OPT_LIB32% /LIBPATH:%1"
218 set "OPT_LIB32=%OPT_LIB32% -L%1"
222 rem Compiler options for Code::Blocks: -L for gcc/mingw and /LIBPATH for msvc
223 rem set "OPT_LIB64=%OPT_LIB64% /LIBPATH:%1"
224 set "OPT_LIB64=%OPT_LIB64% -L%1"