--- b.msvc9compiler.py 2009-12-19 17:20:50.000000000 +0100 +++ c.msvc9compiler.py 2009-12-19 17:21:13.000000000 +0100 @@ -315,11 +315,13 @@ _cpp_extensions = ['.cc', '.cpp', '.cxx'] _rc_extensions = ['.rc'] _mc_extensions = ['.mc'] + _asm_extensions = ['.asm'] # Needed for the filename generation methods provided by the # base class, CCompiler. src_extensions = (_c_extensions + _cpp_extensions + - _rc_extensions + _mc_extensions) + _rc_extensions + _mc_extensions + + _asm_extensions) res_extension = '.res' obj_extension = '.obj' static_lib_extension = '.lib' @@ -349,6 +351,10 @@ raise DistutilsPlatformError("--plat-name must be one of %s" % (ok_plats,)) + ml_name = 'ml.exe' + if plat_name != 'win32': + ml_name = 'ml64.exe' + if "DISTUTILS_USE_SDK" in os.environ and "MSSdk" in os.environ and self.find_exe("cl.exe"): # Assume that the SDK set up everything alright; don't try to be # smarter @@ -357,6 +363,7 @@ self.lib = "lib.exe" self.rc = "rc.exe" self.mc = "mc.exe" + self.ml = ml_name else: # On x86, 'vcvars32.bat amd64' creates an env that doesn't work; # to cross compile, you use 'x86_amd64'. @@ -388,6 +395,7 @@ self.lib = self.find_exe("lib.exe") self.rc = self.find_exe("rc.exe") # resource compiler self.mc = self.find_exe("mc.exe") # message compiler + self.ml = self.find_exe(ml_name) #self.set_path_env_var('lib') #self.set_path_env_var('include') @@ -524,6 +532,13 @@ except DistutilsExecError as msg: raise CompileError(msg) continue + elif ext in self._asm_extensions: + try: + output_obj = '/Fo' + obj + self.spawn([self.ml] + ['/c', '/Cx', output_obj] + [src]) + except DistutilsExecError as msg: + raise CompileError(msg) + continue else: # how to handle this file? raise CompileError("Don't know how to compile %s to %s"