Exemplo n.º 1
0
    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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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)