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=fname.replace(os.sep, '\\'), depends=dep_names)) targets.sort(key=lambda x: x.name) data = { 'targets': targets, } self.write_with_template('subversion_msvc.dsw', 'msvc_dsw.ezt', data)
def write(self): "Write a Solution (.sln)" # Gather sql targets for inclusion in svn_config project. class _eztdata(object): def __init__(self, **kw): vars(self).update(kw) import sys sql = [] for hdrfile, sqlfile in sorted(self.graph.get_deps(gen_base.DT_SQLHDR), key=lambda t: t[0]): sql.append( _eztdata( header=hdrfile.replace('/', '\\'), source=sqlfile[0].replace('/', '\\'), dependencies=[x.replace('/', '\\') for x in sqlfile[1:]])) # apr doesn't supply vcproj files, the user must convert them # manually before loading the generated solution self.move_proj_file(self.projfilesdir, 'svn_config' + self.vcproj_extension, ( ('svn_python', sys.executable), ('sql', sql), ('project_guid', self.makeguid('__CONFIG__')), )) self.move_proj_file(self.projfilesdir, 'svn_locale' + self.vcproj_extension, (('project_guid', self.makeguid('svn_locale')), )) install_targets = self.get_install_targets() targets = [] guids = {} # Visual Studio uses GUIDs to refer to projects. Get them up front # because we need them already assigned on the dependencies for # each target we work with. for target in install_targets: # If there is a GUID in an external project, then use it # rather than generating our own that won't match and will # cause dependency failures. proj_path = self.get_external_project(target, self.vcproj_extension[1:]) if proj_path is not None: target.project_guid = self.makeguid(target.name) guids[target.name] = target.project_guid self.gen_proj_names(install_targets) for target in install_targets: fname = self.get_external_project(target, self.vcproj_extension[1:]) if fname is None: fname = os.path.join( self.projfilesdir, "%s%s" % (target.proj_name, self.vcproj_extension)) target.fname = fname # Traverse the targets and generate the project files for target in install_targets: name = target.name depends = [] if not isinstance(target, gen_base.TargetI18N): depends = self.adjust_win_depends(target, name) deplist = [] for i in range(len(depends)): if depends[i].fname.startswith(self.projfilesdir): path = depends[i].fname[len(self.projfilesdir) + 1:] else: path = os.path.join( os.path.relpath('.', self.projfilesdir), depends[i].fname) deplist.append( gen_win.ProjectItem( guid=guids[depends[i].name], index=i, path=path, )) fname = self.get_external_project(target, self.vcproj_extension[1:]) if fname is None: fname = target.fname self.write_project(target, fname, deplist) groupname = '' if target.name.startswith('__'): groupname = 'root' elif isinstance(target, gen_base.TargetLib): if isinstance(target, gen_base.TargetSWIGLib) \ or isinstance(target, gen_base.TargetSWIG): groupname = 'swiglib' elif target.msvc_fake: groupname = 'fake' elif target.msvc_export and not self.disable_shared: groupname = 'dll' else: groupname = 'lib' elif isinstance(target, gen_base.TargetSWIGProject): groupname = 'swiglib' elif isinstance(target, gen_base.TargetJava): # Keep the buildbot happy groupname = 'root' # groupname = 'java' elif isinstance(target, gen_base.TargetExe): if target.name.endswith('-test') \ or target.name.endswith('-tests'): groupname = 'test' else: groupname = 'exe' targets.append( gen_win.ProjectItem( name=target.name, path=fname.replace(os.sep, '\\'), guid=guids[target.name], depends=deplist, group=groupname, )) targets.sort(key=lambda x: x.name) configs = [] for i in range(len(self.configs)): ### this is different from write_project configs.append(gen_win.ProjectItem(name=self.configs[i], index=i)) # sort the values for output stability. guidvals = sorted(guids.values()) # Before VS2010 dependencies are managed at the solution level if self.vcproj_extension == '.vcproj': dependency_location = 'solution' else: dependency_location = 'project' data = { 'version': self.sln_version, 'vs_version': self.vs_version, 'dependency_location': dependency_location, 'targets': targets, 'configs': configs, 'platforms': self.platforms, 'guids': guidvals, } if self.vs_version == '2002' or self.vs_version == '2003': self.write_with_template('subversion_vcnet.sln', 'templates/vcnet_vc7_sln.ezt', data) else: self.write_with_template('subversion_vcnet.sln', 'templates/vcnet_sln.ezt', data)
def write(self): "Write a Solution (.sln)" # apr doesn't supply vcproj files, the user must convert them # manually before loading the generated solution self.move_proj_file(os.path.join('build', 'win32'), 'svn_config.vcproj') self.move_proj_file(os.path.join('build', 'win32'), 'svn_locale.vcproj') self.write_zlib_project_file('zlib.vcproj') self.write_neon_project_file('neon.vcproj') self.write_serf_project_file('serf.vcproj') install_targets = self.get_install_targets() targets = [] guids = {} # VC.NET uses GUIDs to refer to projects. Get them up front # because we need them already assigned on the dependencies for # each target we work with. for target in install_targets: # These aren't working yet if isinstance(target, gen_base.TargetProject) and target.cmd: continue # If there is a GUID in an external project, then use it # rather than generating our own that won't match and will # cause dependency failures. guid = None proj_path = self.get_external_project(target, 'vcproj') if proj_path is not None: guid = self.getguid(proj_path) if guid is None: guid = self.makeguid(target.name) guids[target.name] = guid self.gen_proj_names(install_targets) # Traverse the targets and generate the project files for target in install_targets: name = target.name # These aren't working yet if isinstance(target, gen_base.TargetProject) and target.cmd: continue fname = self.get_external_project(target, 'vcproj') if fname is None: fname = os.path.join(self.projfilesdir, "%s_vcnet.vcproj" % 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) deplist = [] for i in range(len(depends)): deplist.append( gen_win.ProjectItem( guid=guids[depends[i].name], index=i, )) targets.append( gen_win.ProjectItem( name=target.name, path=string.replace(fname, os.sep, '\\'), guid=guids[target.name], depends=deplist, )) # the path name in the .sln template is already enclosed with "" # therefore, remove them from the path itself for target in targets: target.path = string.rstrip(target.path, '"') target.path = string.lstrip(target.path, '"') targets.sort(lambda x, y: cmp(x.name, y.name)) configs = [] for i in range(len(self.configs)): ### this is different from write_project configs.append(gen_win.ProjectItem(name=self.configs[i], index=i)) # sort the values for output stability. guidvals = guids.values() guidvals.sort() data = { 'version': self.vsnet_version, 'targets': targets, 'configs': configs, 'platforms': self.platforms, 'guids': guidvals, } if self.vsnet_version == '9.00': self.write_with_template('subversion_vcnet.sln', 'vc2005_sln.ezt', data) else: self.write_with_template('subversion_vcnet.sln', 'vcnet_sln.ezt', data)
def write(self): "Write a Workspace (.dsw)" # Gather sql targets for inclusion in svn_config project. class _eztdata(object): def __init__(self, **kw): vars(self).update(kw) import sys sql = [] for hdrfile, sqlfile in sorted(self.graph.get_deps(gen_base.DT_SQLHDR), key=lambda t: t[0]): sql.append( _eztdata(header=hdrfile.replace('/', '\\'), source=sqlfile[0].replace('/', '\\'), svn_python=sys.executable)) self.move_proj_file(self.projfilesdir, 'svn_config.dsp', ( ('sql', sql), ('project_guid', self.makeguid('__CONFIG__')), )) self.move_proj_file(self.projfilesdir, 'svn_locale.dsp', (('project_guid', self.makeguid('svn_locale')), )) 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=fname.replace(os.sep, '\\'), depends=dep_names)) targets.sort(key=lambda x: x.name) data = { 'targets': targets, } self.write_with_template('subversion_msvc.dsw', 'templates/msvc_dsw.ezt', data)