#
# 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
syntax highlighted by Code2HTML, v. 0.9.1