[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [PATCH] Windows vcproj generator

From: D.J. Heap <dj_at_shadyvale.net>
Date: 2003-06-21 01:44:33 CEST

This should apply against r6313 cleanly -- but I thought I had tested
the last one, also, so if it doesn't work please let me know where the
conflicts are. This builds all the normal subversion projects and the
swig-python projects for me -- I didn't try java. I believe it is
building the swig-python stuff correctly (it looks the same as when I
use converted dsps), but I get an error running the quick test:

D:\Temp>python -c "from svn import client"
Traceback (most recent call last):
   File "<string>", line 1, in ?
   File "C:\Python22\Lib\site-packages\svn\client.py", line 17, in ?
     from libsvn.client import *
ImportError: No module named libsvn.client

Have I just got a path setup wrong or is it not building the dll's
correctly? The dll is in the 'C:\Python22\Lib\site-packages\svn'
directory, but obviously I've got something wrong...

Log:

Update the vcproj generator to get it working and refactor a bit of code
into the Windows generator base class.

* build/generator/msvc_dsp.ezt
     Changed dsp_name to proj_name as part of refactoring.

* build/generator/gen_vcnet_vcproj.py
     Mostly rewritten, using gen_msvc_dsp.py as a basis.

* build/generator/vcnet_vcproj.ezt
     Updated template with new generator parameters.

* build/generator/gen_win.py
     (adjust_win_depends): added this new method to base generator
     to refactor code from vcproj and dsp generators -- it handles
     some special dependency cases.
     (gen_proj_names): added this as part of refactoring also -- it
     handles generator project names.

* build/generator/gen_msvc_dsp.py
     Renamed dsp_name to proj_name as part of code refactoring throughout
     the file.
     (write): Removed code that was refactored into the
     adjust_win_depends method of the base class.

Index: build/generator/msvc_dsp.ezt
===================================================================
--- build/generator/msvc_dsp.ezt (revision 6313)
+++ build/generator/msvc_dsp.ezt (working copy)
@@ -1,23 +1,23 @@
-# Microsoft Developer Studio Project File - Name="[target.dsp_name]" - Package Owner=<4>
+# Microsoft Developer Studio Project File - Name="[target.proj_name]" - Package Owner=<4>
 # Microsoft Developer Studio Generated Build File, Format Version 6.00
 # ** DO NOT EDIT **
 
 # TARGTYPE "[target_type]" [target_number]
 
-CFG=[target.dsp_name] - [default_platform] [default_config]
+CFG=[target.proj_name] - [default_platform] [default_config]
 !MESSAGE This is not a valid makefile. To build this project using NMAKE,
 !MESSAGE use the Export Makefile command and run
 !MESSAGE
-!MESSAGE NMAKE /f "[target.dsp_name]_msvc.mak".
+!MESSAGE NMAKE /f "[target.proj_name]_msvc.mak".
 !MESSAGE
 !MESSAGE You can specify a configuration when running NMAKE
 !MESSAGE by defining the macro CFG on the command line. For example:
 !MESSAGE
-!MESSAGE NMAKE /f "[target.dsp_name]_msvc.mak" CFG="[target.dsp_name] - [default_platform] [default_config]"
+!MESSAGE NMAKE /f "[target.proj_name]_msvc.mak" CFG="[target.proj_name] - [default_platform] [default_config]"
 !MESSAGE
 !MESSAGE Possible choices for configuration are:
 !MESSAGE
-[for platforms][for configs]!MESSAGE "[target.dsp_name] - [platforms] [configs.name]" (based on "[target_type]")
+[for platforms][for configs]!MESSAGE "[target.proj_name] - [platforms] [configs.name]" (based on "[target_type]")
 [end][end]!MESSAGE
 
 # Begin Project
@@ -27,7 +27,7 @@
 CPP=cl.exe
 RSC=rc.exe
 [for platforms][for configs]
-![if-index platforms first][if-index configs first][else]ELSE[end][else]ELSE[end]IF "$(CFG)" == "[target.dsp_name] - [platforms] [configs.name]"
+![if-index platforms first][if-index configs first][else]ELSE[end][else]ELSE[end]IF "$(CFG)" == "[target.proj_name] - [platforms] [configs.name]"
 
 # PROP Use_MFC 0
 # PROP Use_Debug_Libraries [is configs.name "Debug"]1[else]0[end]
@@ -52,12 +52,12 @@
 
 # Begin Target
 
-[for platforms][for configs]# Name "[target.dsp_name] - [platforms] [configs.name]"
+[for platforms][for configs]# Name "[target.proj_name] - [platforms] [configs.name]"
 [end][end][for sources]# Begin Source File
 
 SOURCE=[sources.path][if-any sources.reldir]
 [for platforms][for configs]
-![if-index platforms first][if-index configs first][else]ELSE[end][else]ELSE[end]IF "$(CFG)" == "[target.dsp_name] - [platforms] [configs.name]"
+![if-index platforms first][if-index configs first][else]ELSE[end][else]ELSE[end]IF "$(CFG)" == "[target.proj_name] - [platforms] [configs.name]"
 
 # PROP Intermediate_Dir "[rootpath]\[configs.name]\[target.path]\[sources.reldir]"
 [end][end]
Index: build/generator/gen_vcnet_vcproj.py
===================================================================
--- build/generator/gen_vcnet_vcproj.py (revision 6313)
+++ build/generator/gen_vcnet_vcproj.py (working copy)
@@ -27,22 +27,30 @@
     if isinstance(target, gen_base.TargetExe):
       #EXE
       config_type=1
+ target.output_name = target.name + '.exe'
     elif isinstance(target, gen_base.TargetLib):
- if self.shared:
+ if target.is_apache_mod:
         #DLL
+ target.output_name = target.name + '.so'
         config_type=2
       else:
         #LIB
         config_type=4
+ target.output_name = '%s-%d.lib' % (target.name, self.cfg.version)
     elif isinstance(target, gen_base.TargetExternal):
       return
+ elif isinstance(target, gen_base.TargetUtility):
+ config_type=1
+ target.output_name = target.name + '.exe'
+ elif isinstance(target, gen_base.SWIGLibrary):
+ config_type=2
+ target.output_name = os.path.basename(target.fname)
+ target.is_apache_mod = 0
     else:
- print `target`
- assert 0
+ raise gen_base.GenError("Cannot create project for %s" % target.name)
 
     configs = [ ]
     for cfg in self.configs:
- # this is the same as msvc_dsp
       configs.append(_item(name=cfg,
                            lower=string.lower(cfg),
                            defines=self.get_win_defines(target, cfg),
@@ -50,15 +58,32 @@
                            libs=self.get_win_libs(target, cfg),
                            ))
 
+
     sources = [ ]
- for src, reldir in self.get_win_sources(target):
- rsrc = string.replace(string.replace(src, target.path + os.sep, ''),
- os.sep, '\\')
- sources.append(rsrc)
+
+ if not isinstance(target, gen_base.TargetUtility):
+ for src, reldir in self.get_win_sources(target):
+ rsrc = string.replace(os.path.join(rootpath, src), os.sep, '\\')
+ sources.append(_item(path=rsrc, reldir=reldir, swig_language=None,
+ swig_output=None))
 
- # sort for output stability, to watch for regressions
- sources.sort()
+ if isinstance(target, gen_base.SWIGLibrary):
+ for obj in self.graph.get_sources(gen_base.DT_LINK, target):
+ if isinstance(obj, gen_base.SWIGObject):
+ for cobj in self.graph.get_sources(gen_base.DT_OBJECT, obj):
+ if isinstance(cobj, gen_base.SWIGObject):
+ csrc = rootpath + '\\' + string.replace(cobj.fname, '/', '\\')
+ sources.append(_item(path=csrc, reldir=None, swig_language=None,
+ swig_output=None))
 
+ for ifile in self.graph.get_sources(gen_base.DT_SWIG_C, cobj):
+ isrc = rootpath + '\\' + string.replace(ifile, '/', '\\')
+ sources.append(_item(path=isrc, reldir=None,
+ swig_language=target.lang,
+ swig_output=csrc))
+
+ sources.sort(lambda x, y: cmp(x.path, y.path))
+
     data = {
       'target' : target,
       'target_type' : config_type,
@@ -68,14 +93,16 @@
       'configs' : configs,
       'includes' : self.get_win_includes(target, rootpath),
       'sources' : sources,
-# 'default_platform' : self.platforms[0],
-# 'default_config' : configs[0].name,
+ '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.TargetExternal)),
-# 'is_utility' : ezt.boolean(isinstance(target,
-# gen_base.TargetUtility)),
-# 'is_apache_mod' : ezt.boolean(target.is_apache_mod),
+ 'is_external' : ezt.boolean(isinstance(target,
+ gen_base.TargetExternal)),
+ 'is_utility' : ezt.boolean(isinstance(target,
+ gen_base.TargetUtility)),
+ 'is_apache_mod' : ezt.boolean(target.is_apache_mod),
+ 'instrument_apr_pools' : self.instrument_apr_pools,
+ 'instrument_purify_quantify' : self.instrument_purify_quantify,
       }
 
     self.write_with_template(fname, 'vcnet_vcproj.ezt', data)
@@ -99,73 +126,92 @@
                                               myhash[20:32]))
     return guid
 
+ def move_proj_file(self, path, name):
+ dest_file = os.path.join(path, name)
+ source_file = os.path.join('build', 'win32', name + '.in')
+ self.write_file_if_changed(dest_file, open(source_file, 'rb').read())
+
   def write(self, oname):
     "Write a Solution (.sln)"
 
- install_targets = self.graph.get_all_sources(gen_base.DT_INSTALL)
+ # apr doesn't supply vcproj files, so move our pre-defined ones
+ # over if they don't match
+ self.move_proj_file('apr', 'apr.vcproj')
+ self.move_proj_file('apr-iconv', 'apriconv.vcproj')
+ self.move_proj_file(os.path.join('apr-iconv','ccs'), 'apriconv_ccs_modules.vcproj')
+ self.move_proj_file(os.path.join('apr-iconv','ces'), 'apriconv_ces_modules.vcproj')
+ self.move_proj_file('apr-util', 'aprutil.vcproj')
+ self.move_proj_file(os.path.join('apr-util','uri'), 'gen_uri_delims.vcproj')
+ self.move_proj_file(os.path.join('apr-util','xml', 'expat', 'lib'), 'xml.vcproj')
 
+ # Generate a fake depaprutil project
+ self.targets['depsubr'] = gen_base.TargetUtility('depsubr', None,
+ 'build/win32',
+ None, None, self.cfg,
+ None)
+ self.targets['depdelta'] = gen_base.TargetUtility('depdelta', None,
+ 'build/win32',
+ None, None, self.cfg,
+ None)
+
+ targets = [ ]
+
+ install_targets = self.targets.values() \
+ + self.graph.get_all_sources(gen_base.DT_INSTALL)
+ install_targets = gen_base.unique(install_targets)
+
     # sort these for output stability, to watch out for regressions.
     install_targets.sort()
 
- targets = [ ]
-
     guids = { }
 
     # VC.NET uses GUIDs to refer to projects. generate them up front
     # because we need them already assigned on the dependencies for
     # each target we work with.
     for target in install_targets:
- ### don't create guids for these (yet)
- if isinstance(target, gen_base.TargetScript):
- continue
- if isinstance(target, gen_base.TargetSWIG):
- continue
- if isinstance(target, gen_base.SWIGLibrary):
- continue
       guids[target.name] = self.makeguid(target.name)
 
- ### GJS: these aren't in the DT_INSTALL graph, so they didn't get GUIDs
- guids['apr'] = self.makeguid('apr')
- guids['aprutil'] = self.makeguid('aprutil')
- guids['apriconv'] = self.makeguid('apriconv')
- guids['neon'] = self.makeguid('neon')
+ self.gen_proj_names(install_targets)
 
+ # Traverse the targets and generate the project files
     for target in install_targets:
-
- ### nothing to do for these yet
- if isinstance(target, gen_base.TargetScript):
+ name = target.name
+ # These aren't working yet
+ if isinstance(target, gen_base.TargetScript) \
+ or isinstance(target, gen_base.TargetSWIG):
         continue
- if isinstance(target, gen_base.TargetSWIG):
- continue
- if isinstance(target, gen_base.SWIGLibrary):
- continue
 
- fname = os.path.join(self.projfilesdir,
- "%s_vcnet.vcproj" % (string.replace(target.name,
- '-',
- '_')))
- depth = string.count(target.path, os.sep) + 1
- self.write_project(target, fname,
- string.join(['..'] * depth, '\\'))
-
- if isinstance(target, gen_base.TargetExternal):
- fname = target._sources[0]
+ if isinstance(target, gen_base.TargetProject):
+ # Figure out where the external .vcproj is located.
+ if hasattr(target, 'project_name'):
+ project_path = os.path.join(target.path, target.project_name)
+ else:
+ project_path = os.path.join(target.path, name)
+ fname = project_path + '.vcproj'
+ else:
+ fname = os.path.join(self.projfilesdir,
+ "%s_vcnet.vcproj" % target.proj_name)
+ depth = string.count(self.projfilesdir, os.sep) + 1
+ self.write_project(target, fname, string.join(['..']*depth, '\\'))
 
- ### GJS: or should this be get_unique_win_depends?
- deplist = self.get_win_depends(target)
+ if '-' in fname:
+ fname = '"%s"' % fname
 
- depends = [ ]
- for i in range(len(deplist)):
- depends.append(_item(guid=guids[deplist[i].name],
+ depends = self.adjust_win_depends(target, name)
+
+ deplist = [ ]
+ for i in range(len(depends)):
+ deplist.append(_item(guid=guids[depends[i].name],
                              index=i,
                              ))
-
       targets.append(_item(name=target.name,
                            path=string.replace(fname, os.sep, '\\'),
                            guid=guids[target.name],
- depends=depends,
+ depends=deplist,
                            ))
 
+ targets.sort()
+
     configs = [ ]
     for i in range(len(self.configs)):
 
@@ -185,7 +231,6 @@
 
     self.write_with_template(oname, 'vcnet_sln.ezt', data)
 
-
 class _item:
   def __init__(self, **kw):
     vars(self).update(kw)
Index: build/generator/vcnet_vcproj.ezt
===================================================================
--- build/generator/vcnet_vcproj.ezt (revision 6313)
+++ build/generator/vcnet_vcproj.ezt (working copy)
@@ -2,7 +2,7 @@
 <VisualStudioProject
         ProjectType="Visual C++"
         Version="7.00"
- Name="[target.name]">
+ Name="[target.proj_name]">
         <Platforms>
 [for platforms] <Platform
                         Name="[platforms]"/>
@@ -10,10 +10,10 @@
         <Configurations>
 [for platforms][for configs] <Configuration
                         Name="[configs.name]|[platforms]"
- OutputDirectory="$(SolutionDir)\[configs.name]"
- IntermediateDirectory="[configs.name]"
+ OutputDirectory="..\..\..\[configs.name]\[target.path]"
+ IntermediateDirectory="..\..\..\[configs.name]\[target.path][if-any target.shared_dir]\[target.name][end]"
                         ConfigurationType="[target_type]"[is configs.name "Release"]
- WholeProgramOptimization="TRUE"[end]>
+ WholeProgramOptimization="FALSE"[end]>
                         <Tool
                                 Name="VCCLCompilerTool"
 [is configs.name "Debug"] Optimization="0"
@@ -25,7 +25,7 @@
                                 FavorSizeOrSpeed="1"
                                 OmitFramePointers="TRUE"
 [end] AdditionalIncludeDirectories="[for includes][includes][if-index includes last][else];[end][end]"
- PreprocessorDefinitions="[for configs.defines][configs.defines][if-index configs.defines last][else];[end][end]"
+ PreprocessorDefinitions="[if-any instrument_apr_pools]APR_POOL_DEBUG=[instrument_apr_pools];[end][for configs.defines][configs.defines][if-index configs.defines last][else];[end][end]"
 [is configs.name "Debug"] MinimalRebuild="TRUE"
                                 RuntimeLibrary="3"
                                 BufferSecurityCheck="TRUE"
@@ -34,30 +34,34 @@
                                 RuntimeLibrary="2"
                                 BufferSecurityCheck="FALSE"
 [end] WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
-[is configs.name "Debug"] DebugInformationFormat="4"
-[end] CompileAsManaged="0"
+ Detect64BitPortabilityProblems="FALSE"
+ DebugInformationFormat="3"
+ CompileAsManaged="0"
                                 CompileAs="0"[if-any is_exe][is configs.name "Release"]
                                 OptimizeForWindowsApplication="TRUE"[end][end]/>
                         <Tool
                                 Name="VCCustomBuildTool"/>
                         <Tool
                                 Name="VCLinkerTool"
- AdditionalDependencies="[for configs.libs][configs.libs][if-index configs.libs last][else] [end][end]"
-[is target_type "4"][else] OutputFile="$(OutDir)\$(ProjectName).[if-any is_exe]exe[else]dll[end]"
+[is target_type "1"][if-any instrument_purify_quantify] AdditionalOptions="/fixed:no"[end][end]
+ AdditionalDependencies="[for configs.libs][configs.libs] [end]"
+[is target_type "4"][else] OutputFile="$(OutDir)\[target.output_name]"
 [end][is configs.name "Debug"] LinkIncremental="2"
 [else] LinkIncremental="1"
-[end] AdditionalLibraryDirectories="[rootpath]\db4-win32\lib"
-[is configs.name "Debug"] GenerateDebugInformation="TRUE"
-[else] GenerateDebugInformation="FALSE"
-[end] ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"[is configs.name "Debug"]
+[end] AdditionalLibraryDirectories="..\..\..\db4-win32\lib;[for configs.libdirs][configs.libdirs];[end]"
+ TargetMachine="1"
+ IgnoreDefaultLibraryNames="libc.lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"[is configs.name "Debug"]
                                 OptimizeReferences="0"[else]
                                 OptimizeReferences="2"
                                 EnableCOMDATFolding="2"[end][is target_type "2"]
- ImportLibrary="$(OutDir)\$(ProjectName).lib"[end]/>
-[is target_type "4"] <Tool
+ ImportLibrary="$(OutDir)\$(ProjectName).lib"[end]
+[is target_type "1"] Subsystem="1"[end]/>
+[is target_type "4"]
+ <Tool
                                 Name="VCLibrarianTool"
- OutputFile="$(OutDir)\$(ProjectName).lib"/>
+ OutputFile="$(OutDir)\[target.output_name]"/>
 [end] <Tool
                                 Name="VCMIDLTool"/>
                         <Tool
@@ -74,11 +78,39 @@
                                 Name="VCWebDeploymentTool"/>
                 </Configuration>
 [end][end] </Configurations>
- <Files>
+ <Files>[if-any target.desc]
+ <File
+ RelativePath="..\svn.rc">[for configs]
+ <FileConfiguration
+ Name="[configs.name]|Win32">
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="SVN_FILE_NAME=[target.output_name];SVN_FILE_DESCRIPTION=[target.desc];[is configs.name "Debug"]_DEBUG[else]NDEBUG[end]"/>
+ </FileConfiguration>[end]
+ </File>[end]
 [for sources] <File
- RelativePath="[sources]">
+ RelativePath="[sources.path]">
+[if-any sources.swig_language][for configs]
+ <FileConfiguration
+ Name="[configs.name]|Win32">
+ <Tool
+ Name="VCCustomBuildTool"
+ CommandLine="swig -[sources.swig_language] -noproxy[for includes] -I&quot;[includes]&quot;[end] -o [sources.swig_output] $(InputPath)"
+ Outputs="[sources.swig_output]"/>
+ </FileConfiguration>
+[end][end]
+[if-any sources.reldir][for configs]
+ <FileConfiguration
+ Name="[configs.name]|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)/[sources.reldir]/"
+ ProgramDataBaseFileName="$(IntDir)/[sources.reldir]/"/>
+ </FileConfiguration>
+[end][end]
                 </File>
-[end] </Files>
+[end]
+ </Files>
         <Globals>
         </Globals>
 </VisualStudioProject>
Index: build/generator/gen_win.py
===================================================================
--- build/generator/gen_win.py (revision 6313)
+++ build/generator/gen_win.py (working copy)
@@ -221,6 +221,72 @@
           libs.append(gen_base.ExternalLibrary(libname))
     return libs
 
+ def gen_proj_names(self, install_targets):
+ "Generate project file names for the targets"
+ # Generate project file names for the targets: replace dashes with
+ # underscores and replace *-test with test_* (so that the test
+ # programs are visually separare from the rest of the projects)
+ for target in install_targets:
+ name = target.name
+ pos = string.find(name, '-test')
+ if pos >= 0:
+ proj_name = 'test_' + string.replace(name[:pos], '-', '_')
+ elif isinstance(target, gen_base.SWIGLibrary):
+ proj_name = 'swig_' + string.replace(name, '-', '_')
+ else:
+ proj_name = string.replace(name, '-', '_')
+ target.proj_name = proj_name
+
+ def adjust_win_depends(self, target, name):
+ "Handle special dependencies if needed"
+
+ # For MSVC we need to hack around Apache modules &
+ # libsvn_ra because dependencies implies linking
+ # and there is no way around that
+ if name == '__CONFIG__':
+ depends = []
+ else:
+ depends = [self.targets['__CONFIG__']]
+
+ if target.is_apache_mod:
+ if target.name == 'mod_authz_svn':
+ depends.append(self.targets['mod_dav_svn'])
+ pass
+ elif name == 'depdelta':
+ depends.append(self.targets['libsvn_delta'])
+ elif name == 'libsvn_wc':
+ depends.append(self.targets['depdelta'])
+ elif name == 'depsubr':
+ depends.append(self.targets['libsvn_subr'])
+ elif name == 'libsvn_ra_svn':
+ depends.append(self.targets['depsubr'])
+ elif name == 'libsvn_ra_dav':
+ depends.append(self.targets['depsubr'])
+ depends.append(self.targets['neon'])
+ elif isinstance(target, gen_base.Target):
+ if isinstance(target, gen_base.TargetExe):
+ deps = { }
+ for obj in self.get_win_depends(target, 0):
+ deps[obj] = None
+ for obj in self.get_win_depends(target, 2):
+ if isinstance(obj, gen_base.TargetLib):
+ deps[obj] = None
+ deps = deps.keys()
+ deps.sort()
+ depends.extend(deps)
+ else:
+ depends.extend(self.get_unique_win_depends(target))
+ elif isinstance(target, gen_base.SWIGLibrary):
+ for lib in self.graph.get_sources(gen_base.DT_LINK, target):
+ if hasattr(lib, 'proj_name'):
+ depends.append(lib)
+ depends.extend(self.get_win_depends(lib, 0))
+ else:
+ assert 0
+
+ return depends
+
+
   def get_win_depends(self, target, recurse=0):
     """
     Return the list of dependencies for target not including external libraries
Index: build/generator/gen_msvc_dsp.py
===================================================================
--- build/generator/gen_msvc_dsp.py (revision 6313)
+++ build/generator/gen_msvc_dsp.py (working copy)
@@ -132,19 +132,7 @@
 
     targets = [ ]
 
- # Generate .dsp file names for the targets: replace dashes with
- # underscores and replace *-test with test_* (so that the test
- # programs are visually separare from the rest of the projects)
- for target in install_targets:
- name = target.name
- pos = string.find(name, '-test')
- if pos >= 0:
- dsp_name = 'test_' + string.replace(name[:pos], '-', '_')
- elif isinstance(target, gen_base.SWIGLibrary):
- dsp_name = 'swig_' + string.replace(name, '-', '_')
- else:
- dsp_name = string.replace(name, '-', '_')
- target.dsp_name = dsp_name
+ self.gen_proj_names(install_targets)
 
     # Traverse the targets and generate the project files
     for target in install_targets:
@@ -163,62 +151,20 @@
         fname = project_path + '.dsp'
       else:
         fname = os.path.join(self.projfilesdir,
- "%s_msvc.dsp" % target.dsp_name)
+ "%s_msvc.dsp" % target.proj_name)
         depth = string.count(self.projfilesdir, os.sep) + 1
         self.write_project(target, fname, string.join(['..']*depth, '\\'))
 
       if '-' in fname:
         fname = '"%s"' % fname
+
+ depends = self.adjust_win_depends(target, name)
 
- # For MSVC we need to hack around Apache modules &
- # libsvn_ra because dependencies implies linking
- # and there is no way around that
- if name == '__CONFIG__':
- depends = []
- else:
- depends = [self.targets['__CONFIG__']]
-
- if target.is_apache_mod:
- if target.name == 'mod_authz_svn':
- depends.append(self.targets['mod_dav_svn'])
- pass
- elif name == 'depdelta':
- depends.append(self.targets['libsvn_delta'])
- elif name == 'libsvn_wc':
- depends.append(self.targets['depdelta'])
- elif name == 'depsubr':
- depends.append(self.targets['libsvn_subr'])
- elif name == 'libsvn_ra_svn':
- depends.append(self.targets['depsubr'])
- elif name == 'libsvn_ra_dav':
- depends.append(self.targets['depsubr'])
- depends.append(self.targets['neon'])
- elif isinstance(target, gen_base.Target):
- if isinstance(target, gen_base.TargetExe):
- deps = { }
- for obj in self.get_win_depends(target, 0):
- deps[obj] = None
- for obj in self.get_win_depends(target, 2):
- if isinstance(obj, gen_base.TargetLib):
- deps[obj] = None
- deps = deps.keys()
- deps.sort()
- depends.extend(deps)
- else:
- depends.extend(self.get_unique_win_depends(target))
- elif isinstance(target, gen_base.SWIGLibrary):
- for lib in self.graph.get_sources(gen_base.DT_LINK, target):
- if hasattr(lib, 'dsp_name'):
- depends.append(lib)
- depends.extend(self.get_win_depends(lib, 0))
- else:
- assert 0
-
       dep_names = [ ]
       for dep in depends:
- dep_names.append(dep.dsp_name)
+ dep_names.append(dep.proj_name)
 
- targets.append(_item(name=target.dsp_name,
+ targets.append(_item(name=target.proj_name,
                            dsp=string.replace(fname, os.sep, '\\'),
                            depends=dep_names))
 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Jun 21 01:45:27 2003

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.