@@ -31,8 +31,8 @@ def initialize(self, project, archs, configs, includepaths, dependlibs, libpaths
3131 self .linkcmd = '$toolchain$link $libpaths $configlibpaths $linkflags $linkarchflags $linkconfigflags /DEBUG /NOLOGO /SUBSYSTEM:CONSOLE /DYNAMICBASE /NXCOMPAT /MANIFEST /MANIFESTUAC:\" level=\' asInvoker\' uiAccess=\' false\' \" /TLBID:1 /PDB:$pdbpath /OUT:$out $in $libs $archlibs $oslibs'
3232 self .dllcmd = self .linkcmd + ' /DLL'
3333
34- self .cflags = ['/D' , '"' + project .upper () + '_COMPILE=1"' , '/D' , '"_UNICODE"' , '/D' , '"UNICODE"' , '/Zi' , '/Oi' , '/Oy-' , '/GS-' , '/Gy-' , '/Qpar-' , '/fp:fast' , '/fp:except-' , '/Zc:forScope' , '/Zc:wchar_t' , '/GR-' , '/openmp-' ]
35- self .cwarnflags = ['/W4' , '/WX' ]
34+ self .cflags = ['/D' , '"' + project .upper () + '_COMPILE=1"' , '/D' , '"_UNICODE"' , '/D' , '"UNICODE"' , '/std:c17' , '/ Zi' , '/Oi' , '/Oy-' , '/GS-' , '/Gy-' , '/Qpar-' , '/fp:fast' , '/fp:except-' , '/Zc:forScope' , '/Zc:wchar_t' , '/GR-' , '/openmp-' ]
35+ self .cwarnflags = ['/W4' , '/WX' , '/wd4201' ] #Ignore nameless union/struct which is allowed in C11
3636 self .cmoreflags = []
3737 self .arflags = ['/ignore:4221' ] #Ignore empty object file warning]
3838 self .linkflags = ['/DEBUG' ]
@@ -138,10 +138,11 @@ def build_toolchain(self):
138138 tools_list .sort (key = StrictVersion )
139139 self .toolchain = os .path .join (tools_basepath , tools_list [- 1 ])
140140 self .toolchain_version = major_version + ".0"
141+ break
141142
142143 if self .toolchain == '' :
143144 toolchain = ''
144- versions = ['16 .0' , '15 .0' , '14.0' , '13.0' , '12.0' , '11.0' , '10 .0' ]
145+ versions = ['17 .0' , '16 .0' , '15 .0' ]
145146 keys = [
146147 'HKLM\\ SOFTWARE\\ Microsoft\\ VisualStudio\\ SxS\\ VC7' ,
147148 'HKCU\\ SOFTWARE\\ Microsoft\\ VisualStudio\\ SxS\\ VC7' ,
@@ -161,17 +162,18 @@ def build_toolchain(self):
161162 except :
162163 continue
163164 if not toolchain == '' :
164- if version == '15.0' or version == '16.0' :
165- tools_basepath = os .path .join (toolchain , 'VC' , 'Tools' , 'MSVC' )
166- tools_list = [item for item in os .listdir (tools_basepath ) if os .path .isdir (os .path .join (tools_basepath , item ))]
167- from distutils .version import StrictVersion
168- tools_list .sort (key = StrictVersion )
169- toolchain = os .path .join (tools_basepath , tools_list [- 1 ])
165+ tools_basepath = os .path .join (toolchain , 'VC' , 'Tools' , 'MSVC' )
166+ tools_list = [item for item in os .listdir (tools_basepath ) if os .path .isdir (os .path .join (tools_basepath , item ))]
167+ from distutils .version import StrictVersion
168+ tools_list .sort (key = StrictVersion )
169+ toolchain = os .path .join (tools_basepath , tools_list [- 1 ])
170170 self .toolchain = toolchain
171171 self .toolchain_version = version
172172 break
173173 if not self .toolchain == '' :
174174 break
175+ if self .toolchain == '' :
176+ raise Exception ("Unable to locate any installed Visual Studio toolchain" )
175177 self .includepaths += [os .path .join (self .toolchain , 'include' )]
176178 if self .sdkpath == '' :
177179 versions = ['v10.0' , 'v8.1' ]
@@ -237,13 +239,10 @@ def make_libpaths(self, libpaths):
237239 return []
238240
239241 def make_arch_toolchain_path (self , arch ):
240- if self .toolchain_version == '15.0' or self .toolchain_version == '16.0' :
241- if arch == 'x86-64' :
242- return os .path .join (self .toolchain , 'bin' , 'HostX64' , 'x64\\ ' )
243- elif arch == 'x86' :
244- return os .path .join (self .toolchain , 'bin' , 'HostX64' , 'x86\\ ' )
245242 if arch == 'x86-64' :
246- return os .path .join (self .toolchain , 'bin' , 'amd64\\ ' )
243+ return os .path .join (self .toolchain , 'bin' , 'HostX64' , 'x64\\ ' )
244+ elif arch == 'x86' :
245+ return os .path .join (self .toolchain , 'bin' , 'HostX64' , 'x86\\ ' )
247246 return os .path .join (self .toolchain , 'bin\\ ' )
248247
249248 def make_carchflags (self , arch , targettype ):
@@ -321,20 +320,14 @@ def make_configlibpaths(self, config, arch, extralibpaths):
321320 libpaths += [os .path .join (libpath , self .libpath , config , arch ) for libpath in extralibpaths ]
322321 if self .sdkpath != '' :
323322 if arch == 'x86' :
324- if self .toolchain_version == '15.0' or self .toolchain_version == '16.0' :
325- libpaths += [os .path .join (self .toolchain , 'lib' , 'x86' )]
326- else :
327- libpaths += [os .path .join (self .toolchain , 'lib' )]
323+ libpaths += [os .path .join (self .toolchain , 'lib' , 'x86' )]
328324 if self .sdkversion == 'v8.1' :
329325 libpaths += [os .path .join ( self .sdkpath , 'lib' , 'winv6.3' , 'um' , 'x86' )]
330326 if self .sdkversion == 'v10.0' :
331327 libpaths += [os .path .join (self .sdkpath , 'lib' , self .sdkversionpath , 'um' , 'x86' )]
332328 libpaths += [os .path .join (self .sdkpath , 'lib' , self .sdkversionpath , 'ucrt' , 'x86' )]
333329 else :
334- if self .toolchain_version == '15.0' or self .toolchain_version == '16.0' :
335- libpaths += [os .path .join ( self .toolchain , 'lib' , 'x64' )]
336- else :
337- libpaths += [os .path .join ( self .toolchain , 'lib' , 'amd64' )]
330+ libpaths += [os .path .join ( self .toolchain , 'lib' , 'x64' )]
338331 if self .sdkversion == 'v8.1' :
339332 libpaths += [os .path .join ( self .sdkpath , 'lib' , 'winv6.3' , 'um' , 'x64' )]
340333 if self .sdkversion == 'v10.0' :
0 commit comments