def __init__(self, cc=None): Platform.__init__(self, "cl.exe") if msvc_compiler_environ: self.c_environ = os.environ.copy() self.c_environ.update(msvc_compiler_environ) # XXX passing an environment to subprocess is not enough. Why? os.environ.update(msvc_compiler_environ) # detect version of current compiler returncode, stdout, stderr = _run_subprocess(self.cc, "", env=self.c_environ) r = re.match(r"Microsoft.+C/C\+\+.+\s([0-9]+)\.([0-9]+).*", stderr) if r is not None: self.version = int("".join(r.groups())) / 10 - 60 else: # Probably not a msvc compiler... self.version = 0 # Try to find a masm assembler returncode, stdout, stderr = _run_subprocess("ml.exe", "", env=self.c_environ) r = re.search("Macro Assembler", stderr) if r is None and os.path.exists("c:/masm32/bin/ml.exe"): self.masm = "c:/masm32/bin/ml.exe" else: self.masm = "ml.exe" # Install debug options only when interpreter is in debug mode if sys.executable.lower().endswith("_d.exe"): self.cflags = ["/MDd", "/Z7", "/Od"] self.link_flags = ["/debug"] # Increase stack size, for the linker and the stack check code. stack_size = 8 << 20 # 8 Mb self.link_flags.append("/STACK:%d" % stack_size) # The following symbol is used in c/src/stack.h self.cflags.append("/DMAX_STACK_SIZE=%d" % (stack_size - 1024))
def __init__(self, cc=None, x64=False): self.x64 = x64 if x64: msvc_compiler_environ = msvc_compiler_environ64 else: msvc_compiler_environ = msvc_compiler_environ32 Platform.__init__(self, 'cl.exe') if msvc_compiler_environ: self.c_environ = os.environ.copy() self.c_environ.update(msvc_compiler_environ) # XXX passing an environment to subprocess is not enough. Why? os.environ.update(msvc_compiler_environ) # detect version of current compiler returncode, stdout, stderr = _run_subprocess(self.cc, '', env=self.c_environ) r = re.match(r'Microsoft.+C/C\+\+.+\s([0-9]+)\.([0-9]+).*', stderr) if r is not None: self.version = int(''.join(r.groups())) / 10 - 60 else: # Probably not a msvc compiler... self.version = 0 # Try to find a masm assembler returncode, stdout, stderr = _run_subprocess('ml.exe', '', env=self.c_environ) r = re.search('Macro Assembler', stderr) if r is None and os.path.exists('c:/masm32/bin/ml.exe'): masm32 = 'c:/masm32/bin/ml.exe' masm64 = 'c:/masm64/bin/ml64.exe' else: masm32 = 'ml.exe' masm64 = 'ml64.exe' if x64: self.masm = masm64 else: self.masm = masm32 # Install debug options only when interpreter is in debug mode if sys.executable.lower().endswith('_d.exe'): self.cflags = ['/MDd', '/Z7', '/Od'] self.link_flags = ['/debug'] # Increase stack size, for the linker and the stack check code. stack_size = 8 << 20 # 8 Mb self.link_flags.append('/STACK:%d' % stack_size) # The following symbol is used in c/src/stack.h self.cflags.append('/DMAX_STACK_SIZE=%d' % (stack_size - 1024))
def __init__(self, cc=None, x64=False): self.x64 = x64 msvc_compiler_environ = find_msvc_env(x64) Platform.__init__(self, 'cl.exe') if msvc_compiler_environ: self.c_environ = os.environ.copy() self.c_environ.update(msvc_compiler_environ) # XXX passing an environment to subprocess is not enough. Why? os.environ.update(msvc_compiler_environ) # detect version of current compiler returncode, stdout, stderr = _run_subprocess(self.cc, '', env=self.c_environ) r = re.match(r'Microsoft.+C/C\+\+.+\s([0-9]+)\.([0-9]+).*', stderr) if r is not None: self.version = int(''.join(r.groups())) / 10 - 60 else: # Probably not a msvc compiler... self.version = 0 # Try to find a masm assembler returncode, stdout, stderr = _run_subprocess('ml.exe', '', env=self.c_environ) r = re.search('Macro Assembler', stderr) if r is None and os.path.exists('c:/masm32/bin/ml.exe'): masm32 = 'c:/masm32/bin/ml.exe' masm64 = 'c:/masm64/bin/ml64.exe' else: masm32 = 'ml.exe' masm64 = 'ml64.exe' if x64: self.masm = masm64 else: self.masm = masm32 # Install debug options only when interpreter is in debug mode if sys.executable.lower().endswith('_d.exe'): self.cflags = ['/MDd', '/Z7', '/Od'] self.link_flags = ['/debug'] # Increase stack size, for the linker and the stack check code. stack_size = 8 << 20 # 8 Mb self.link_flags.append('/STACK:%d' % stack_size) # The following symbol is used in c/src/stack.h self.cflags.append('/DMAX_STACK_SIZE=%d' % (stack_size - 1024))
def __init__(self, cc=None): Platform.__init__(self, 'cl.exe') if msvc_compiler_environ: self.c_environ = os.environ.copy() self.c_environ.update(msvc_compiler_environ) # XXX passing an environment to subprocess is not enough. Why? os.environ.update(msvc_compiler_environ) # detect version of current compiler returncode, stdout, stderr = _run_subprocess(self.cc, '', env=self.c_environ) r = re.search('[Vv]ersion\W([0-9]+)\.([0-9]+)', stderr) if r is not None: self.version = int(''.join(r.groups())) / 10 - 60 else: # Probably not a msvc compiler... self.version = 0 # Install debug options only when interpreter is in debug mode if sys.executable.lower().endswith('_d.exe'): self.cflags = ['/MDd', '/Z7', '/Od'] self.link_flags = ['/debug'] # Increase stack size, for the linker and the stack check code. stack_size = 8 << 20 # 8 Mb self.link_flags.append('/STACK:%d' % stack_size) # The following symbol is used in c/src/stack.h self.cflags.append('/DMAX_STACK_SIZE=%d' % (stack_size - 1024)) if hasattr(sys, 'exec_prefix'): self.add_cpython_dirs = True else: # We are certainly running pypy-c self.add_cpython_dirs = False
def execute_makefile(self, path_to_makefile): if isinstance(path_to_makefile, GnuMakefile): path = path_to_makefile.makefile_dir else: path = path_to_makefile log.execute("make in %s" % (path,)) returncode, stdout, stderr = _run_subprocess(self.make_cmd, ["-C", str(path)]) self._handle_error(returncode, stdout, stderr, path.join("make"))
def execute_makefile(self, path_to_makefile): if isinstance(path_to_makefile, GnuMakefile): path = path_to_makefile.makefile_dir else: path = path_to_makefile log.execute('make in %s' % (path,)) returncode, stdout, stderr = _run_subprocess('make', ['-C', str(path)]) self._handle_error(returncode, stdout, stderr, path.join('make'))
def _pkg_config(self, lib, opt, default): try: ret, out, err = _run_subprocess("pkg-config", [lib, opt]) except OSError: ret = 1 if ret: return default # strip compiler flags return [entry[2:] for entry in out.split()]
def execute_makefile(self, path_to_makefile, extra_opts=[]): if isinstance(path_to_makefile, GnuMakefile): path = path_to_makefile.makefile_dir else: path = path_to_makefile log.execute('make %s in %s' % (" ".join(extra_opts), path)) returncode, stdout, stderr = _run_subprocess( self.make_cmd, ['-C', str(path)] + extra_opts) self._handle_error(returncode, stdout, stderr, path.join('make'))
def execute_makefile(self, path_to_makefile): if isinstance(path_to_makefile, NMakefile): path = path_to_makefile.makefile_dir else: path = path_to_makefile log.execute('make in %s' % (path, )) oldcwd = path.chdir() try: returncode, stdout, stderr = _run_subprocess( 'nmake', ['/f', str(path.join('Makefile'))]) finally: oldcwd.chdir() self._handle_error(returncode, stdout, stderr, path.join('make'))
def execute_makefile(self, path_to_makefile, extra_opts=[]): if isinstance(path_to_makefile, NMakefile): path = path_to_makefile.makefile_dir else: path = path_to_makefile log.execute('make %s in %s' % (" ".join(extra_opts), path)) oldcwd = path.chdir() try: returncode, stdout, stderr = _run_subprocess( 'nmake', ['/nologo', '/f', str(path.join('Makefile'))] + extra_opts) finally: oldcwd.chdir() self._handle_error(returncode, stdout, stderr, path.join('make'))
def execute_makefile(self, path_to_makefile, extra_opts=[]): if isinstance(path_to_makefile, NMakefile): path = path_to_makefile.makefile_dir else: path = path_to_makefile log.execute("make %s in %s" % (" ".join(extra_opts), path)) oldcwd = path.chdir() try: returncode, stdout, stderr = _run_subprocess( "nmake", ["/nologo", "/f", str(path.join("Makefile"))] + extra_opts ) finally: oldcwd.chdir() self._handle_error(returncode, stdout, stderr, path.join("make"))