# # gen_dsp.py -- generate Microsoft Visual C++ 6 projects # import os import sys import string import gen_base import gen_win import ezt class Generator(gen_win.WinGeneratorBase): "Generate a Microsoft Visual C++ 6 project" def __init__(self, fname, verfname, options): gen_win.WinGeneratorBase.__init__(self, fname, verfname, options, 'msvc-dsp') def quote(self, str): return '"%s"' % str def write_project(self, target, fname): "Write a Project (.dsp)" if isinstance(target, gen_base.TargetExe): targtype = "Win32 (x86) Console Application" targval = "0x0103" elif isinstance(target, gen_base.TargetJava): targtype = "Win32 (x86) Generic Project" targval = "0x010a" elif isinstance(target, gen_base.TargetLib): if target.msvc_static: targtype = "Win32 (x86) Static Library" targval = "0x0104" else: targtype = "Win32 (x86) Dynamic-Link Library" targval = "0x0102" elif isinstance(target, gen_base.TargetProject): if target.cmd: targtype = "Win32 (x86) External Target" targval = "0x0106" else: targtype = "Win32 (x86) Generic Project" targval = "0x010a" else: raise gen_base.GenError("Cannot create project for %s" % target.name) target.output_name = self.get_output_name(target) target.output_dir = self.get_output_dir(target) target.intermediate_dir = self.get_intermediate_dir(target) target.output_pdb = self.get_output_pdb(target) configs = self.get_configs(target) sources = self.get_proj_sources(True, target) data = { 'target' : target, 'target_type' : targtype, 'target_number' : targval, 'rootpath' : self.rootpath, 'platforms' : self.platforms, 'configs' : configs, 'includes' : self.get_win_includes(target), 'sources' : sources, 'default_platform' : self.platforms[0], 'default_config' : configs[0].name, 'is_exe' : ezt.boolean(isinstance(target, gen_base.TargetExe)), 'is_external' : ezt.boolean((isinstance(target, gen_base.TargetProject) or isinstance(target, gen_base.TargetI18N)) and target.cmd), 'is_utility' : ezt.boolean(isinstance(target, gen_base.TargetProject)), 'is_dll' : ezt.boolean(isinstance(target, gen_base.TargetLib) and not target.msvc_static), 'instrument_apr_pools' : self.instrument_apr_pools, 'instrument_purify_quantify' : self.instrument_purify_quantify, } self.write_with_template(fname, 'msvc_dsp.ezt', data) def write(self): "Write a Workspace (.dsw)" self.write_zlib_project_file('zlib.dsp') self.write_neon_project_file('neon.dsp') self.write_serf_project_file('serf.dsp') install_targets = self.get_install_targets() targets = [ ] self.gen_proj_names(install_targets) # Traverse the targets and generate the project files for target in install_targets: name = target.name fname = self.get_external_project(target, 'dsp') if fname is None: fname = os.path.join(self.projfilesdir, "%s_msvc.dsp" % target.proj_name) self.write_project(target, fname) if '-' in fname: fname = '"%s"' % fname depends = [ ] if not isinstance(target, gen_base.TargetI18N): depends = self.adjust_win_depends(target, name) #print name #for dep in depends: # print " ",dep.name dep_names = [ ] for dep in depends: dep_names.append(dep.proj_name) targets.append( gen_win.ProjectItem(name=target.proj_name, dsp=string.replace(fname, os.sep, '\\'), depends=dep_names)) targets.sort(lambda x, y: cmp(x.name, y.name)) data = { 'targets' : targets, } self.write_with_template('subversion_msvc.dsw', 'msvc_dsw.ezt', data) # compatibility with older Pythons: try: True except NameError: True = 1 False = 0