910970ab |
1 | @echo off |
2 | |
3 | rem Use: |
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: |
8 | rem vc8 win32 Release |
9 | |
10 | set "SCRIPTROOT=%~dp0" |
11 | set "SCRIPTROOT=%SCRIPTROOT:~0,-1%" |
910970ab |
12 | |
13 | rem ----- Reset values to defaults ----- |
14 | set "CASDEB=" |
72c37458 |
15 | set "VCVER=vc10" |
16 | set "ARCH=64" |
910970ab |
17 | set "VCVARS=" |
18 | set "HAVE_TBB=false" |
19 | set "HAVE_OPENCL=false" |
20 | set "HAVE_FREEIMAGE=false" |
e22105a9 |
21 | set "HAVE_FFMPEG=false" |
910970ab |
22 | set "HAVE_GL2PS=false" |
910970ab |
23 | set "HAVE_VTK=false" |
1ce0716b |
24 | set "HAVE_GLES2=false" |
f60111dc |
25 | set "HAVE_D3D=false" |
e22105a9 |
26 | set "HAVE_ZLIB=false" |
27 | set "HAVE_LIBLZMA=false" |
910970ab |
28 | set "CSF_OPT_INC=" |
29 | set "CSF_OPT_LIB32=" |
30 | set "CSF_OPT_LIB64=" |
31 | set "CSF_OPT_BIN32=" |
32 | set "CSF_OPT_BIN64=" |
33 | |
e31a8e52 |
34 | if not ["%CASROOT%"] == [""] if exist "%SCRIPTROOT%\%CASROOT%" set "CASROOT=%SCRIPTROOT%\%CASROOT%" |
35 | if ["%CASROOT%"] == [""] set "CASROOT=%SCRIPTROOT%" |
36 | |
249dd6ed |
37 | rem ----- Load local settings ----- |
38 | if exist "%CASROOT%\custom.bat" ( |
39 | call "%CASROOT%\custom.bat" %1 %2 %3 %4 %5 |
40 | ) |
41 | |
910970ab |
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" |
316d77d9 |
49 | if /I ["%3"] == ["i"] set "CASDEB=i" |
50 | if /I ["%3"] == ["relwithdeb"] set "CASDEB=i" |
910970ab |
51 | |
249dd6ed |
52 | rem Decode VCVER variable and define related ones: |
53 | rem |
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) |
59 | rem |
60 | rem Note that for VS before 2015 (vc14) always |
61 | rem VCFMT=VCLIB=VCVER and VCPROP=NativeDesktop |
62 | |
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" |
67 | |
68 | rem for vc10-12, interpretation is trivial |
69 | set VCFMT=%VCVER% |
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% |
75 | set VCLIB=%VCLIB%-uwp |
76 | set VCPROP=Universal |
77 | ) |
78 | rem echo VCVER=%VCVER% VCFMT=%VCFMT% VCLIB=%VCLIB% VCPROP=%VCPROP% |
d6cda17a |
79 | |
48691eaa |
80 | rem ----- Parsing of Visual Studio platform ----- |
81 | set "VisualStudioExpressName=VCExpress" |
82 | |
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\" |
100 | ) |
c0f08310 |
101 | ) else if /I "%VCFMT%" == "gcc" ( |
102 | rem MinGW |
48691eaa |
103 | ) else ( |
104 | echo Error: wrong VS identifier |
105 | exit /B |
106 | ) |
107 | |
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" |
124 | ) |
125 | set "VCPlatformToolSet=v141" |
c0f08310 |
126 | ) else if /I "%VCFMT%" == "gcc" ( |
127 | rem MinGW |
48691eaa |
128 | ) else ( |
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^) |
131 | exit |
132 | ) |
133 | |
72c37458 |
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%" |
910970ab |
142 | |
143 | rem ----- Optional 3rd-parties should be enabled by HAVE macros ----- |
144 | set "CSF_OPT_CMPL=" |
145 | set "PRODUCTS_DEFINES=" |
e22105a9 |
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%" |
910970ab |
156 | |
157 | rem Eliminate VS warning |
158 | if ["%CSF_DEFINES%"] == [""] set "CSF_DEFINES=;" |
159 | |
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%" |
162 | |
163 | rem ----- Colect 3rd-parties additional include paths into compiler options ----- |
164 | for %%a in ("%CSF_OPT_INC:;=";"%") do ( |
165 | set "anItem=%%~a" |
166 | if not ["%%~a"] == [""] call :concatCmplInc %%~a |
167 | ) |
168 | |
169 | rem ----- Colect 3rd-parties additional library paths (32-bit) into linker options ----- |
170 | set "OPT_LIB32=" |
171 | for %%a in ("%CSF_OPT_LIB32:;=";"%") do ( |
172 | set "anItem=%%~a" |
173 | if not ["%%~a"] == [""] call :concatLib32 %%~a |
174 | ) |
175 | |
176 | rem ----- Colect 3rd-parties additional library paths (64-bit) into linker options ----- |
177 | set "OPT_LIB64=" |
178 | for %%a in ("%CSF_OPT_LIB64:;=";"%") do ( |
179 | set "anItem=%%~a" |
180 | if not ["%%~a"] == [""] call :concatLib64 %%~a |
181 | ) |
182 | |
910970ab |
183 | set "CSF_OPT_LNK32=%CSF_OPT_LNK32% %OPT_LIB32%" |
910970ab |
184 | set "CSF_OPT_LNK64=%CSF_OPT_LNK64% %OPT_LIB64%" |
316d77d9 |
185 | set "CSF_OPT_LNK32D=%CSF_OPT_LNK32D% %OPT_LIB32%" |
910970ab |
186 | set "CSF_OPT_LNK64D=%CSF_OPT_LNK64D% %OPT_LIB64%" |
316d77d9 |
187 | set "CSF_OPT_LNK32I=%CSF_OPT_LNK32I% %OPT_LIB32%" |
188 | set "CSF_OPT_LNK64I=%CSF_OPT_LNK64I% %OPT_LIB64%" |
910970ab |
189 | |
4b3541c6 |
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" |
d6cda17a |
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%" |
910970ab |
198 | |
199 | rem ----- Set path to 3rd party and OCCT libraries ----- |
4b3541c6 |
200 | set "PATH=%CSF_OCCTBinPath%;%PATH%" |
316d77d9 |
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%" |
316d77d9 |
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%" |
910970ab |
207 | |
208 | rem ----- Set envoronment variables used by OCCT ----- |
209 | set CSF_LANGUAGE=us |
210 | set MMGT_CLEAR=1 |
4b3541c6 |
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" |
4b3541c6 |
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" |
910970ab |
225 | |
226 | rem Draw Harness special stuff |
4b3541c6 |
227 | if exist "%CSF_OCCTResourcePath%\DrawResources\DrawDefault" ( |
228 | set "DRAWDEFAULT=%CSF_OCCTResourcePath%\DrawResources\DrawDefault" |
229 | ) |
230 | if exist "%CSF_OCCTResourcePath%\DrawResources" ( |
231 | set "DRAWHOME=%CSF_OCCTResourcePath%\DrawResources" |
910970ab |
232 | set "CSF_DrawPluginDefaults=%DRAWHOME%" |
233 | ) |
910970ab |
234 | goto :eof |
235 | |
236 | :concatCmplInc |
237 | set "CSF_OPT_CMPL=%CSF_OPT_CMPL% -I%1" |
238 | goto :eof |
239 | |
240 | :concatLib32 |
7c65581d |
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" |
910970ab |
244 | goto :eof |
245 | |
246 | :concatLib64 |
7c65581d |
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" |
910970ab |
250 | goto :eof |