You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Russell Yanofsky <re...@columbia.edu> on 2003/07/31 10:10:08 UTC

[PATCH] dynamically link swig runtime on windows (Can I commit this?)

I was recently given commit access for the swig bindings, but I'd like to
check in some changes to the build generator. A patch is attached. Is it ok
for me to check this in?

Log Message:

Changed Visual Studio builds of SWIG bindings to dynamically link
with the SWIG runtime instead of statically linking with it.
(Makefile builds already do this). This is needed because the
SWIG runtime functions read and write global data. When static
linking is used each module gets its own incomplete copy of the
global data, now data is shared and accessible to all modules.

Also some other minor changes:
  - solution and workspace files list projects in alphabetical
    order instead of in random order
  - solution file no longer refers to non-existant __INSTALLER__
    project

* build.conf
    new target: swig_runtime

* build/generator/msvc_dsp.ezt
* build/generator/vcnet_vcproj.ezt
    pass -c option to swig. new custom build step to generate
    swig runtime source

* build/generator/gen_vcnet_vcproj.py
    (Generator.write_project, Generator.write): changed to skip
      TargetExternal instances (like __INSTALLER__) completely.
      Before it was skipping the project files but still
      including listings in the solution files.

    (Generator.write): list projects in .sln file in alphabetical
      order

* build/generator/gen_msvc_dsp.py
    (Generator.write): list projects in .dsw file in alphabetical
      order

* build/generator/gen_base.py
    (SWIGLibrary.__init__): changed signature and moved some
      functionality into TargetSWIG.add_dependencies

    (SWIGRuntimeLibrary): new DependencyNode class

    (TargetSWIG.add_dependencies): changes for new SWIGLibrary
      constructor. Add swig library dependencies to tree under
      the swig library name, rather than SWIGLibrary instance
      for consistency with other libraries.

    (TargetSWIGRuntime): new Target class

* build/generator/gen_make.py
    (Generator.write): remove some special treatment of
      SWIGLibrary instances now that their dependencies are
      added to the dependency graph just like other libraries.

* build/generator/gen_win.py
    (Generator.write_project, Generator.adjust_win_depends):
      added code to handle writing project files for swig
      runtime libraries

* build/win32/gen_swig_runtime.bat:
    new batch script which generates swig runtime code for
    various languages

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Brandon Ehle <az...@yahoo.com>.
> 
>
>>This was the first approach I took, but it turned out to be unneccessary
>>since you can get the path to the swig libraries either by running
>>"swig -libdir" or by reading the SWIG_LIB environment variable.
>>
>>    
>>
>Great, that makes gen-make.py's job even easier. I'd still like to see
>at least a '--with-swig' option (IMHO the default should be to not
>generate projects for the bindings, so that we don't have yet another
>hard dependency in the Win32 build), but that can be added later in
>another patch.
>
>
>  
>
I've already got a patch that does this, will clean it up and submit it 
tomorrow.



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Branko Čibej <br...@xbc.nu>.
Russell Yanofsky wrote:

>Branko Čibej wrote:
>  
>
>>    * Lose the gen_swig_runtime batch file, it's horrible. Instead of
>>      generating those files during build time, just generate
>>      appropriate references to the sources in the .dsp and .vcproj
>>      files. There's no need at all to copy the runtime sources
>>      anywhere.
>>    
>>
>
>AFAICT, that's not possible. The source files in the swig directory are just
>fragments of C code. They have to be copied together in order to be
>compilable.
>
Ah. O.K., then just generate them from gen_win.py.

>>Then add a '--with-swig=DIR' option to gen-make.py,
>>      and only generate the __SWIG_*__ projects if it's set (take a
>>      look at how '--with-httpd' does that for the Apache modules).
>>    
>>
>
>This was the first approach I took, but it turned out to be unneccessary
>since you can get the path to the swig libraries either by running
>"swig -libdir" or by reading the SWIG_LIB environment variable.
>
Great, that makes gen-make.py's job even easier. I'd still like to see
at least a '--with-swig' option (IMHO the default should be to not
generate projects for the bindings, so that we don't have yet another
hard dependency in the Win32 build), but that can be added later in
another patch.


-- 
Brane Čibej   <br...@xbc.nu>   http://www.xbc.nu/brane/


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Russell Yanofsky <re...@columbia.edu>.
Branko Čibej wrote:
> Russell Yanofsky wrote:
>
>> I was recently given commit access for the swig bindings, but I'd
>> like to check in some changes to the build generator. A patch is
>> attached. Is it ok for me to check this in?
>>
>> Log Message:
>>
>> Changed Visual Studio builds of SWIG bindings to dynamically link
>> with the SWIG runtime instead of statically linking with it.
>> (Makefile builds already do this). This is needed because the
>> SWIG runtime functions read and write global data. When static
>> linking is used each module gets its own incomplete copy of the
>> global data, now data is shared and accessible to all modules.
>>
>> Also some other minor changes:
>>  - solution and workspace files list projects in alphabetical
>>    order instead of in random order
>>  - solution file no longer refers to non-existant __INSTALLER__
>>    project
>>
> Two things:
>
>     * These are (at least) two separate patches. The "some other minor
>       changes" have nothing to do with the SWIG runtime.

Agreed.

>     * Lose the gen_swig_runtime batch file, it's horrible. Instead of
>       generating those files during build time, just generate
>       appropriate references to the sources in the .dsp and .vcproj
>       files. There's no need at all to copy the runtime sources
>       anywhere.

AFAICT, that's not possible. The source files in the swig directory are just
fragments of C code. They have to be copied together in order to be
compilable.

> Then add a '--with-swig=DIR' option to gen-make.py,
>       and only generate the __SWIG_*__ projects if it's set (take a
>       look at how '--with-httpd' does that for the Apache modules).

This was the first approach I took, but it turned out to be unneccessary
since you can get the path to the swig libraries either by running
"swig -libdir" or by reading the SWIG_LIB environment variable.

- Russ



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Branko Čibej <br...@xbc.nu>.
Russell Yanofsky wrote:

>I was recently given commit access for the swig bindings, but I'd like to
>check in some changes to the build generator. A patch is attached. Is it ok
>for me to check this in?
>
>Log Message:
>
>Changed Visual Studio builds of SWIG bindings to dynamically link
>with the SWIG runtime instead of statically linking with it.
>(Makefile builds already do this). This is needed because the
>SWIG runtime functions read and write global data. When static
>linking is used each module gets its own incomplete copy of the
>global data, now data is shared and accessible to all modules.
>
>Also some other minor changes:
>  - solution and workspace files list projects in alphabetical
>    order instead of in random order
>  - solution file no longer refers to non-existant __INSTALLER__
>    project
>
Two things:

    * These are (at least) two separate patches. The "some other minor
      changes" have nothing to do with the SWIG runtime.
    * Lose the gen_swig_runtime batch file, it's horrible. Instead of
      generating those files during build time, just generate
      appropriate references to the sources in the .dsp and .vcproj
      files. There's no need at all to copy the runtime sources
      anywhere. Then add a '--with-swig=DIR' option to gen-make.py, and
      only generate the __SWIG_*__ projects if it's set (take a look at
      how '--with-httpd' does that for the Apache modules).


-- 
Brane Čibej   <br...@xbc.nu>   http://www.xbc.nu/brane/


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by "D.J. Heap" <dj...@shadyvale.net>.
Working fine for me now -- I haven't done extensive testing, but I did 
generate vcproj files, built Subversion and the python swig bindings, 
and played around with svnshell.py a bit.  That all works well.

DJ


Russell Yanofsky wrote:
> D.J. Heap wrote:
> 
>>I get build errors on the swig stuff when I try this patch
>>...
> 
> 
> Oops, I uploaded the wrong gen_swig_runtime script. Try the version that's
> attached.

[snip]


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Russell Yanofsky <re...@columbia.edu>.
Branko Čibej wrote:
> Should do, my 5.8 prints "5.008", and your regexp should match that
> nicely. But there's no need to use regular expression matching here:
>
>     import string
>     def perl_library(version):
>       dot = string.find(version, '.')
>       if dot < 0 or len(version) < dot+4:
>         return None
>       return 'perl' + version[0:dot] + str(int(version[dot+1:dot+4]))

Well technically, there's no need to use regular expressions anywhere. In
this case, I think using a regex is better because it makes the expected
form of the version string a little more obvious.

> Funny though, I tried "string.lstrip(version[dot+1:dot+4], '0')", but
> it seems that lstrip doesn't take the second argument even though it's
> documented...

The docs do say that argument was added in 2.2.3
(http://www.python.org/doc/current/lib/module-string.html#l2h-817). I tried
to use that function too.

- Russ



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Branko Čibej <br...@xbc.nu>.
Russell Yanofsky wrote:

>Russell Yanofsky wrote:
>  
>
>>Branko Čibej wrote:
>>    
>>
>>>Russell Yanofsky wrote:
>>>
>>>      
>>>
>>>>   (Generator.get_win_libs): add perl56.lib library for perl
>>>>     modules
>>>>
>>>>        
>>>>
>>>Is there a remote possibility that we might detect the version of
>>>Perl, instead of hardcoding support for 5.6? For example, I have
>>>version 5.8 on my box. Running "perl -e 'print $]'" and converting
>>>the output would do just fine.
>>>      
>>>
>
>"perl -e 'print $]'" returns "5.006001" for me. What's the most reliable way
>to derive perl56.lib from that? I'm thinking:
>
>  _re_perl_version = re.compile(r'(\d+)\.(\d{3})')
>
>  def perl_library(version):
>    match = _re_perl_version.match(version)
>    return 'perl' + match.group(1) + str(int(match.group(2))) + '.lib'
>
>  perl_library('5.006001')
>
>Does this work on perl 5.8?
>  
>
Should do, my 5.8 prints "5.008", and your regexp should match that
nicely. But there's no need to use regular expression matching here:

    import string
    def perl_library(version):
      dot = string.find(version, '.')
      if dot < 0 or len(version) < dot+4:
        return None
      return 'perl' + version[0:dot] + str(int(version[dot+1:dot+4]))


Funny though, I tried "string.lstrip(version[dot+1:dot+4], '0')", but it
seems that lstrip doesn't take the second argument even though it's
documented...

-- 
Brane Čibej   <br...@xbc.nu>   http://www.xbc.nu/brane/


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Russell Yanofsky <re...@columbia.edu>.
Colin Watson wrote:
>> "perl -e 'print $]'" returns "5.006001" for me. What's the most
>> reliable way to derive perl56.lib from that? I'm thinking:
>>
>>   _re_perl_version = re.compile(r'(\d+)\.(\d{3})')
>>
>>   def perl_library(version):
>>     match = _re_perl_version.match(version)
>>     return 'perl' + match.group(1) + str(int(match.group(2))) +
>> '.lib'
>>
>>   perl_library('5.006001')
>
> Ugh, printing something in one language with good regexp support and
> then going off and doing the regexps in another seems rather odd ...

Python also has pretty good regexp support, it's just a little more
verbose...

> You could do something like this instead:
>
>   perl -MConfig -e 'print "$Config{revision}$Config{patchlevel}"'

This seems to be much more direct. If it works I'll use it instead.

> What is it you're actually trying to get here, though?

Just trying to get the name of the perl library for building the perl swig
bindings on Windows. It has different names depending on the version of perl
being used (perl56.lib, perl58.lib, etc...)

- Russ



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Colin Watson <cj...@flatline.org.uk>.
On Thu, Aug 07, 2003 at 04:52:38PM -0400, Russell Yanofsky wrote:
> Russell Yanofsky wrote:
> > Branko ??ibej wrote:
> >> Russell Yanofsky wrote:
> >>>    (Generator.get_win_libs): add perl56.lib library for perl
> >>>      modules
> >> 
> >> Is there a remote possibility that we might detect the version of
> >> Perl, instead of hardcoding support for 5.6? For example, I have
> >> version 5.8 on my box. Running "perl -e 'print $]'" and converting
> >> the output would do just fine.
> 
> "perl -e 'print $]'" returns "5.006001" for me. What's the most reliable way
> to derive perl56.lib from that? I'm thinking:
> 
>   _re_perl_version = re.compile(r'(\d+)\.(\d{3})')
> 
>   def perl_library(version):
>     match = _re_perl_version.match(version)
>     return 'perl' + match.group(1) + str(int(match.group(2))) + '.lib'
> 
>   perl_library('5.006001')

Ugh, printing something in one language with good regexp support and
then going off and doing the regexps in another seems rather odd ...

You could do something like this instead:

  perl -MConfig -e 'print "$Config{revision}$Config{patchlevel}"'

What is it you're actually trying to get here, though? The oldest
version of perl that's compatible with XS modules you're building? If
so, then maybe this would be more appropriate:

  perl -MConfig -e 'print $Config{api_versionstring}'

See Config(3perl) for details.

-- 
Colin Watson                                  [cjwatson@flatline.org.uk]

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Russell Yanofsky <re...@columbia.edu>.
Russell Yanofsky wrote:
> Branko Čibej wrote:
>> Russell Yanofsky wrote:
>>
>>>    (Generator.get_win_libs): add perl56.lib library for perl
>>>      modules
>>>
>> Is there a remote possibility that we might detect the version of
>> Perl, instead of hardcoding support for 5.6? For example, I have
>> version 5.8 on my box. Running "perl -e 'print $]'" and converting
>> the output would do just fine.

"perl -e 'print $]'" returns "5.006001" for me. What's the most reliable way
to derive perl56.lib from that? I'm thinking:

  _re_perl_version = re.compile(r'(\d+)\.(\d{3})')

  def perl_library(version):
    match = _re_perl_version.match(version)
    return 'perl' + match.group(1) + str(int(match.group(2))) + '.lib'

  perl_library('5.006001')

Does this work on perl 5.8?

- Russ



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Russell Yanofsky <re...@columbia.edu>.
Branko Čibej wrote:
> Russell Yanofsky wrote:
>
>>> I think it's much cleaner to do so before.
>>>
>>>
>> In what sense?
>>
>>
> For one thing, Python wouldn't be required to build from the tarball.
> Of course, that's assuming our source tarballs are ever useful for
> Windows builds...

You can get the exact same effect by making swigpy.c and its counterparts
before you tar up the source. I don't know if this would make a whole lot
of sense though, since you'd be including swig runtime code in the tarball
but still requiring the user to install his own (possibly different) version
of swig.

- Russ



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Branko Čibej <br...@xbc.nu>.
Russell Yanofsky wrote:

>>I think it's much cleaner to do so before.
>>    
>>
>In what sense?
>  
>
For one thing, Python wouldn't be requred to build from the tarball. Of
course, that's assuming our source tarballs are ever useful for Windows
builds...

-- 
Brane Čibej   <br...@xbc.nu>   http://www.xbc.nu/brane/


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Russell Yanofsky <re...@columbia.edu>.
Branko Čibej wrote:
> Russell Yanofsky wrote:
>
>> Branko Čibej wrote:
>>
>>
>>> I _still_ don't understand why you don't generate these sources in
>>> gen_win.py when the .dsp/.vcproj stuff is generated, and not from
>>> the project files themselves.
>>>
>>>
>>
>> I just want to keep the ugliness of building the swig runtime out of
>> gen-make. In general, gen-make should be limited to generating
>> makefiles and project files. If it becomes an all purpose build
>> script, it's going to turn into spaghetti and be more diffcult to
>> maintain.
>>
> There's no reason why gen-make shouldn't do that, if it's the best
> place.

I'm arguing that it's not the best place because it adds unneccessary
complexity and doesn't have anything to do with gen-make's main task of
calculating dependencies and outputting files used by build systems. Are
there any advantages at all to combining this code into gen_win.py?

> Anyway, the code generation would be don in gen_win.py, where
> we already do a bit of that -- see the bit in gen_win.__init__ where
> we generate getdate.c.

Right, this is exactly analagous to the generation of getdate.c, which is a
wart:

    [from gen_win.py]
    # gstein wrote:
    # > we don't want to munge the working copy since we might be
    # > generating the Windows build files on a Unix box prior to
    # > release. this copy already occurs in svn_config.dsp. (is that
    # > broken or something?)

    # No, but if getdate.c doesn't exist, it won't get pulled into the
    # libsvn_subr.dsp (or .vcproj or whatever), so it won't get built.

> Since the SWIG runtime sources never change
> (well, unless you install a new version of SWIG), there's no need to
> generate them during the build.

Right but this is not the issue.

> I think it's much cleaner to do so
> before.

In what sense?

- Russ



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Branko Čibej <br...@xbc.nu>.
Russell Yanofsky wrote:

>Branko Čibej wrote:
>  
>
>>I _still_ don't understand why you don't generate these sources in
>>gen_win.py when the .dsp/.vcproj stuff is generated, and not from the
>>project files themselves.
>>    
>>
>
>I just want to keep the ugliness of building the swig runtime out of
>gen-make. In general, gen-make should be limited to generating makefiles and
>project files. If it becomes an all purpose build script, it's going to turn
>into spaghetti and be more diffcult to maintain.
>
There's no reason why gen-make shouldn't do that, if it's the best
place. Anyway, the code generation would be don in gen_win.py, where we
already do a bit of that -- see the bit in gen_win.__init__ where we
generate getdate.c. Since the SWIG runtime sources never change (well,
unless you install a new version of SWIG), there's no need to generate
them during the build. I think it's much cleaner to do so before.

-- 
Brane Čibej   <br...@xbc.nu>   http://www.xbc.nu/brane/


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Russell Yanofsky <re...@columbia.edu>.
Branko Čibej wrote:
> Russell Yanofsky wrote:
>
>>    (Generator.get_win_libs): add perl56.lib library for perl
>>      modules
>>
> Is there a remote possibility that we might detect the version of
> Perl, instead of hardcoding support for 5.6? For example, I have
> version 5.8 on my box. Running "perl -e 'print $]'" and converting
> the output would do just fine.

Sure, I'll try to implement that.

>> * build/win32/gen_swig_runtime.py:
>>    new python script which generates swig runtime code for
>>    various languages
>>
> I _still_ don't understand why you don't generate these sources in
> gen_win.py when the .dsp/.vcproj stuff is generated, and not from the
> project files themselves.

I just want to keep the ugliness of building the swig runtime out of
gen-make. In general, gen-make should be limited to generating makefiles and
project files. If it becomes an all purpose build script, it's going to turn
into spaghetti and be more diffcult to maintain.

- Russ



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Branko Čibej <br...@xbc.nu>.
Russell Yanofsky wrote:

>    (Generator.get_win_libs): add perl56.lib library for perl
>      modules
>
Is there a remote possibility that we might detect the version of Perl,
instead of hardcoding support for 5.6? For example, I have version 5.8
on my box. Running "perl -e 'print $]'" and converting the output would
do just fine.

>* build/win32/gen_swig_runtime.py:
>    new python script which generates swig runtime code for
>    various languages
>
I _still_ don't understand why you don't generate these sources in
gen_win.py when the .dsp/.vcproj stuff is generated, and not from the
project files themselves.



-- 
Brane Čibej   <br...@xbc.nu>   http://www.xbc.nu/brane/


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Russell Yanofsky <re...@columbia.edu>.
D.J. Heap wrote:
> I get build errors on the swig stuff when I try this patch
> ...

Oops, I uploaded the wrong gen_swig_runtime script. Try the version that's
attached.

Log Message:

Changed Visual Studio builds of SWIG bindings to dynamically link
with the SWIG runtime instead of statically linking with it.
(Makefile builds already do this). This is needed because the
SWIG runtime functions read and write global data. When static
linking is used each module gets its own incomplete copy of the
global data, now data is shared and accessible to all modules.

Also some other minor changes:
  - solution and workspace files list projects in alphabetical
    order instead of in random order
  - solution file no longer refers to non-existant __INSTALLER__
    project

* build.conf
    new target: swig_runtime

* build/generator/msvc_dsp.ezt
* build/generator/vcnet_vcproj.ezt
    pass -c option to swig. new custom build step to generate
    swig runtime source

* build/generator/gen_vcnet_vcproj.py
    (Generator.write_project, Generator.write): changed to skip
      TargetExternal instances (like __INSTALLER__) completely.
      Before it was skipping the project files but still
      including references to them in the solution files.

    (Generator.write): list projects in .sln file in alphabetical
      order

* build/generator/gen_msvc_dsp.py
    (Generator.write): list projects in .dsw file in alphabetical
      order

* build/generator/gen_base.py
    (SWIGLibrary.__init__): changed signature and moved some
      functionality into TargetSWIG.add_dependencies

    (SWIGRuntimeLibrary): new DependencyNode class

    (TargetSWIG.add_dependencies): changes for new SWIGLibrary
      constructor. Add swig library dependencies to tree under
      the swig library name, rather than SWIGLibrary instance
      for consistency with other libraries.

    (TargetSWIGRuntime): new Target class

* build/generator/gen_make.py
    (Generator.write): remove some special treatment of
      SWIGLibrary instances now that their dependencies are
      added to the dependency graph just like other libraries.

* build/generator/gen_win.py
    (Generator.write_project, Generator.adjust_win_depends):
      added code to handle writing project files for swig
      runtime libraries

    (Generator.get_win_libs): add perl56.lib library for perl
      modules

* build/win32/gen_swig_runtime.py:
    new python script which generates swig runtime code for
    various languages


begin 666 swig_runtime3.diff
M26YD97@Z(&)U:6QD+F-O;F8*/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/0HM+2T@
M8G5I;&0N8V]N9@DH<F5V:7-I;VX@-C8U,"D**RLK(&)U:6QD+F-O;F8)*'=O
M<FMI;F<@8V]P>2D*0$ @+3(V-2PV("LR-C4L,3$@0$ *(&QI8G,@/2!L:6)S
M=FY?<W5B<B D*%-63E]!4%)?3$E"4RD*(&1E<V-R:7!T:6]N(#T@4W5B=F5R
M<VEO;B!C;W)E(&QI8G)A<GD@8FEN9&EN9W,*( HK6W-W:6=?<G5N=&EM95T*
M*W1Y<&4@/2!S=VEG7W)U;G1I;64**W!A=&@@/2!S=6)V97)S:6]N+V)I;F1I
M;F=S+W-W:6<**V1E<V-R:7!T:6]N(#T@4W=I9R!L86YG=6%G92!R=6YT:6UE
M(&QI8G)A<FEE<PHK"B C(%-724<@=71I;&ET>2!L:6)R87)Y(&9O<B!0>71H
M;VX@;6]D=6QE<PH@6VQI8G-V;E]S=VEG7W!Y70H@='EP92 ](&QI8@I);F1E
M>#H@8G5I;&0O9V5N97)A=&]R+VUS=F-?9'-P+F5Z= H]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]"BTM+2!B=6EL9"]G96YE<F%T;W(O;7-V8U]D<W N97IT"2AR
M979I<VEO;B V-C4P*0HK*RL@8G5I;&0O9V5N97)A=&]R+VUS=F-?9'-P+F5Z
M= DH=V]R:VEN9R!C;W!Y*0I 0" M-S L." K-S L.2! 0 H@26YP=710871H
M/5MS;W5R8V5S+G!A=&A=#0H@#0H@6W-O=7)C97,N<W=I9U]T87)G971=(#H@
M)"A33U520T4I("(D*$E.5$1)4BDB("(D*$]55$1)4BDB#0HM"7-W:6<@+5MS
M;W5R8V5S+G-W:6=?;&%N9W5A9V5=6V9O<B!I;F-L=61E<UT@+4DB6VEN8VQU
M9&5S72);96YD72 M;R!;<V]U<F-E<RYS=VEG7V]U='!U=%T@)"A);G!U=%!A
M=&@I#0HM"0T**UMI9BUA;GD@<V]U<F-E<RYS=VEG7V]U='!U=%T)<W=I9R M
M8R M6W-O=7)C97,N<W=I9U]L86YG=6%G95U;9F]R(&EN8VQU9&5S72 M22);
M:6YC;'5D97-=(EME;F1=("UO(%MS;W5R8V5S+G-W:6=?;W5T<'5T72 D*$EN
M<'5T4&%T:"D-"BM;96QS95T)<'ET:&]N("0H26YP=710871H*2!;<V]U<F-E
M<RYS=VEG7VQA;F=U86=E72!;<V]U<F-E<RYS=VEG7W1A<F=E=%T-"BM;96YD
M70T*(",@16YD($-U<W1O;2!"=6EL9 T*( T*(%ME;F1=#0I);F1E>#H@8G5I
M;&0O9V5N97)A=&]R+V=E;E]V8VYE=%]V8W!R;VHN<'D*/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/0HM+2T@8G5I;&0O9V5N97)A=&]R+V=E;E]V8VYE=%]V8W!R
M;VHN<'D)*')E=FES:6]N(#8V-3 I"BLK*R!B=6EL9"]G96YE<F%T;W(O9V5N
M7W9C;F5T7W9C<')O:BYP>0DH=V]R:VEN9R!C;W!Y*0I 0" M,S<L." K,S<L
M-B! 0 H@(" @(" @(" C3$E""B @(" @(" @(&-O;F9I9U]T>7!E/30*(" @
M(" @(" @=&%R9V5T+F]U='!U=%]N86UE(#T@)R5S+25D+FQI8B<@)2 H=&%R
M9V5T+FYA;64L('-E;&8N8V9G+G9E<G-I;VXI"BT@(" @96QI9B!I<VEN<W1A
M;F-E*'1A<F=E="P@9V5N7V)A<V4N5&%R9V5T17AT97)N86PI.@HM(" @(" @
M<F5T=7)N"B @(" @96QI9B!I<VEN<W1A;F-E*'1A<F=E="P@9V5N7V)A<V4N
M5&%R9V5T571I;&ET>2DZ"B @(" @("!C;VYF:6=?='EP93TQ"B @(" @("!T
M87)G970N;W5T<'5T7VYA;64@/2!T87)G970N;F%M92 K("<N97AE)PI 0" M
M,3,U+#<@*S$S,RPX($! "B @(" @9F]R('1A<F=E="!I;B!I;G-T86QL7W1A
M<F=E=',Z"B @(" @("!N86UE(#T@=&%R9V5T+FYA;64*(" @(" @(",@5&AE
M<V4@87)E;B=T('=O<FMI;F<@>65T"BT@(" @("!I9B!I<VEN<W1A;F-E*'1A
M<F=E="P@9V5N7V)A<V4N5&%R9V5T4V-R:7!T*2!<"BL@(" @("!I9B!I<VEN
M<W1A;F-E*'1A<F=E="P@9V5N7V)A<V4N5&%R9V5T4V-R:7!T*2 @(" @(%P*
M*R @(" @(" @(&]R(&ES:6YS=&%N8V4H=&%R9V5T+"!G96Y?8F%S92Y487)G
M971%>'1E<FYA;"D@7 H@(" @(" @(" @;W(@:7-I;G-T86YC92AT87)G970L
M(&=E;E]B87-E+E1A<F=E=%-724<I.@H@(" @(" @("!C;VYT:6YU90H@"D! 
M("TQ-CDL-R K,38X+#<@0$ *(" @(" @(" @(" @(" @(" @(" @(" @(" @
M("!D97!E;F1S/61E<&QI<W0L"B @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @*2D*( HM(" @('1A<F=E=',N<V]R="@I"BL@(" @=&%R9V5T<RYS;W)T
M*&QA;6)D82!X+"!Y.B!C;7 H>"YN86UE+"!Y+FYA;64I*0H@"B @(" @8V]N
M9FEG<R ](%L@70H@(" @(&9O<B!I(&EN(')A;F=E*&QE;BAS96QF+F-O;F9I
M9W,I*3H*26YD97@Z(&)U:6QD+V=E;F5R871O<B]V8VYE=%]V8W!R;VHN97IT
M"CT]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T*+2TM(&)U:6QD+V=E;F5R871O<B]V
M8VYE=%]V8W!R;VHN97IT"2AR979I<VEO;B V-C4P*0HK*RL@8G5I;&0O9V5N
M97)A=&]R+W9C;F5T7W9C<')O:BYE>G0)*'=O<FMI;F<@8V]P>2D*0$ @+3DU
M+#@@*SDU+#D@0$ *( D)"0E.86UE/2);8V]N9FEG<RYN86UE77Q7:6XS,B(^
M#0H@"0D)"3Q4;V]L#0H@"0D)"0E.86UE/2)60T-U<W1O;4)U:6QD5&]O;"(-
M"BT)"0D)"4-O;6UA;F1,:6YE/2)S=VEG("U;<V]U<F-E<RYS=VEG7VQA;F=U
M86=E75MF;W(@:6YC;'5D97-=("U))G%U;W0[6VEN8VQU9&5S729Q=6]T.UME
M;F1=("UO("9Q=6]T.UMS;W5R8V5S+G-W:6=?;W5T<'5T729Q=6]T.R D*$EN
M<'5T4&%T:"DB#0HM"0D)"0E!9&1I=&EO;F%L1&5P96YD96YC:65S/2);9F]R
M('-O=7)C97,N=7-E<E]D97!S729Q=6]T.UMS;W5R8V5S+G5S97)?9&5P<UTF
M<75O=#L[6V5N9%TB#0HK"0D)"0E;:68M86YY('-O=7)C97,N<W=I9U]O=71P
M=71=0V]M;6%N9$QI;F4](G-W:6<@+6,@+5MS;W5R8V5S+G-W:6=?;&%N9W5A
M9V5=6V9O<B!I;F-L=61E<UT@+4DF<75O=#M;:6YC;'5D97-=)G%U;W0[6V5N
M9%T@+6\@)G%U;W0[6W-O=7)C97,N<W=I9U]O=71P=71=)G%U;W0[("0H26YP
M=710871H*2(-"BL)"0D)"5ME;'-E74-O;6UA;F1,:6YE/2)P>71H;VX@)"A)
M;G!U=%!A=&@I(%MS;W5R8V5S+G-W:6=?;&%N9W5A9V5=(%MS;W5R8V5S+G-W
M:6=?=&%R9V5T72(-"BL)"0D)"5ME;F1=061D:71I;VYA;$1E<&5N9&5N8VEE
M<STB6V9O<B!S;W5R8V5S+G5S97)?9&5P<UTF<75O=#M;<V]U<F-E<RYU<V5R
M7V1E<'-=)G%U;W0[.UME;F1=(@T*( D)"0D)3W5T<'5T<STB)G%U;W0[6W-O
M=7)C97,N<W=I9U]T87)G971=)G%U;W0[(B\^#0H@"0D)/"]&:6QE0V]N9FEG
M=7)A=&EO;CX-"B!;96YD75ME;F1=#0I);F1E>#H@8G5I;&0O9V5N97)A=&]R
M+V=E;E]B87-E+G!Y"CT]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T*+2TM(&)U:6QD
M+V=E;F5R871O<B]G96Y?8F%S92YP>0DH<F5V:7-I;VX@-C8U,"D**RLK(&)U
M:6QD+V=E;F5R871O<B]G96Y?8F%S92YP>0DH=V]R:VEN9R!C;W!Y*0I 0" M
M,S(U+#$T("LS,C4L,3(@0$ *(" @(R,C('-T=7!I9"!487)G970@=G,@1&5P
M96YD96YC>4YO9&4*(" @861D7V1E<',@/2 G)PH@"BT@(&1E9B!?7VEN:71?
M7RAS96QF+"!F;F%M92P@;&%N9RP@9&5S8RDZ"BL@(&1E9B!?7VEN:71?7RAS
M96QF+"!F;F%M92P@;F%M92P@;&%N9RP@9&5S8RDZ"B @(" @1&5P96YD96YC
M>4YO9&4N7U]I;FET7U\H<V5L9BP@9FYA;64I"BL@(" @<V5L9BYN86UE(#T@
M;F%M90H@(" @('-E;&8N;&%N9R ](&QA;F<*(" @("!S96QF+FQA;F=?86)B
M<F5V(#T@;&%N9U]A8F)R979;;&%N9UT*+0H@(" @('-E;&8N<&%T:" ](&]S
M+G!A=&@N9&ER;F%M92AF;F%M92D*+0HM(" @('-E;&8N;F%M92 ](&QA;F<@
M*R!O<RYP871H+G-P;&ET97AT*&]S+G!A=&@N8F%S96YA;64H9FYA;64I*5LP
M70H@(" @('-E;&8N9&5S8R ](&1E<V,@*R G(&9O<B G("L@;&%N9U]F=6QL
M7VYA;65;;&%N9UT*( H@(" @(",C(R!M87EB92!T=V5A:R!T;R!A=F]I9"!T
M:&5S92!D=7!L:6-A=&4@871T<G,*0$ @+3,T,BPV("LS-# L.2! 0 H@(" @
M(",C(R!H;6TN('1H:7,@:7,@36%K969I;&4M<W!E8VEF:6,*(" @("!S96QF
M+FQI;FM?8VUD(#T@)R0H3$E.2U\E<U]74D%04$52*2<@)2!S=')I;F<N=7!P
M97(H<V5L9BYL86YG7V%B8G)E=BD*( HK8VQA<W,@4U=)1U)U;G1I;65,:6)R
M87)Y*%-724=,:6)R87)Y*3H**R @<&%S<PHK"B!C;&%S<R!%>'1E<FYA;$QI
M8G)A<GDH1&5P96YD96YC>4YO9&4I.@H@("!P87-S"B *0$ @+34Q-BPQ," K
M-3$W+#$R($! "B *(" @(" C(R,@=V4@<VAO=6QD(')E86QL>2!E>'1R86-T
M('1H92 E;6]D=6QE(&QI;F4*(" @("!I9B!I;F%M95LZ-%T@/3T@)W-V;E\G
M.@HM(" @(" @;&EB;F%M92 ](&EN86UE6S,Z+3)=("L@<V5L9BY?;&EB97AT
M"BL@(" @("!L:6)N86UE(#T@:6YA;65;,SHM,ET*(" @("!E;'-E.@HM(" @
M(" @;&EB;F%M92 ]("=?)R K(&EN86UE6SHM,ET@*R!S96QF+E]L:6)E>'0*
M*R @(" @(&QI8FYA;64@/2 G7R<@*R!I;F%M95LZ+3)="B **R @("!L:6)F
M:6QE(#T@;&EB;F%M92 K('-E;&8N7VQI8F5X= HK"B @(" @:69I;&4@/2!3
M5TE'4V]U<F-E*&EP871H*0H@"B @(" @9F]R(&QA;F<@:6X@<V5L9BYC9F<N
M<W=I9U]L86YG.@I 0" M-3,T+#(V("LU,S<L-3@@0$ *(" @(" @(&=R87!H
M+F%D9"A$5%]/0DI%0U0L(&]F:6QE+"!C9FEL92D*( H@(" @(" @(R!T:&4@
M;&EB<F%R>2!D97!E;F1S('5P;VX@=&AE(&]B:F5C= HM(" @(" @;&EB<F%R
M>2 ](%-724=,:6)R87)Y*&]S+G!A=&@N:F]I;BAD:7(L(&QA;F<L(&QI8FYA
M;64I+"!L86YG+"!S96QF+F1E<V,I"BT@(" @("!G<F%P:"YA9&0H1%1?3$E.
M2RP@;&EB<F%R>2P@;V9I;&4I"BL@(" @("!L:6)R87)Y(#T@4U=)1TQI8G)A
M<GDH;W,N<&%T:"YJ;VEN*&1I<BP@;&%N9RP@;&EB9FEL92DL"BL@(" @(" @
M(" @(" @(" @(" @(" @(" @(" @;&%N9R K(&QI8FYA;64L(&QA;F<L('-E
M;&8N9&5S8RD**R @(" @(&=R87!H+F%D9"A$5%],24Y++"!L:6)R87)Y+FYA
M;64L(&]F:6QE*0H@"B @(" @(" C(&%D9"!S;VUE(&UO<F4@;&EB<F%R:65S
M"B @(" @("!F;W(@;&EB(&EN('-E;&8N;&EB<SH*+2 @(" @(" @9W)A<&@N
M861D*$147TQ)3DLL(&QI8G)A<GDL(&QI8BD**R @(" @(" @9W)A<&@N861D
M*$147TQ)3DLL(&QI8G)A<GDN;F%M92P@;&EB*0H@"B @(" @(" C(&%D9"!S
M;VUE(&QA;F=U86=E+7-P96-I9FEC(&QI8G)A<FEE<R!F;W(@;&%N9W5A9V5S
M(&]T:&5R('1H86X*(" @(" @(",@2F%V82 H4U=)1R!D;V5S;B=T('-E96T@
M=&\@<')O=FED92!A(&QI8G-W:6=J879A+G-O*0H@(" @(" @:68@86)B<F5V
M("$]("=J879A)SH*(" @(" @(" @(R,C(&9I>"!T:&ES+B!G970@=&AE<V4@
M9G)O;2!T:&4@+F-O;F8@9FEL90HM(" @(" @("!G<F%P:"YA9&0H1%1?3$E.
M2RP@;&EB<F%R>2P@17AT97)N86Q,:6)R87)Y*"<M;'-W:6<G("L@86)B<F5V
M*2D**R @(" @(" @9W)A<&@N861D*$147TQ)3DLL(&QI8G)A<GDN;F%M92P@
M17AT97)N86Q,:6)R87)Y*"<M;'-W:6<G("L@86)B<F5V*2D*(" @(" @(",C
M(R!F:7@@=&AI<RP@=&]O+B!F:6YD('1H92!R:6=H="!487)G970@<W=I9W5T
M:6P@;&EB+B!W92!K;F]W('1H97)E"B @(" @(" C(R,@=VEL;"!B92!O;FQY
M(&]N92X*(" @(" @('5T:6P@/2!G<F%P:"YG971?<V]U<F-E<RA$5%])3E-4
M04Q,+" G<W=I9RTE<RUL:6(G("4@86)B<F5V*5LP70HM(" @(" @9W)A<&@N
M861D*$147TQ)3DLL(&QI8G)A<GDL('5T:6PI"BL@(" @("!G<F%P:"YA9&0H
M1%1?3$E.2RP@;&EB<F%R>2YN86UE+"!U=&EL*0H@"B @(" @(" C('1H92!S
M<&5C:69I960@:6YS=&%L;"!A<F5A(&1E<&5N9',@=7!O;B!T:&4@;&EB<F%R
M>0H@(" @(" @9W)A<&@N861D*$147TE.4U1!3$PL('-E;&8N:6YS=&%L;" K
M("<M)R K(&%B8G)E=BP@;&EB<F%R>2D*( HK8VQA<W,@5&%R9V5T4U=)1U)U
M;G1I;64H5&%R9V5T4U=)1RDZ"BL@(&1E9F%U;'1?:6YS=&%L;" ]("=S=VEG
M7W)U;G1I;64G"BL**R @9&5F(&%D9%]D97!E;F1E;F-I97,H<V5L9BP@<W)C
M7W!A='1E<FYS+"!G<F%P:"DZ"BL@(" @<V5L9BY?;&EB<F%R:65S(#T@>WT*
M*R @("!F;W(@;&%N9R!I;B!S96QF+F-F9RYS=VEG7VQA;F<Z"BL@(" @("!I
M9B!L86YG(#T]("=J879A)SH**R @(" @(" @(R!J879A(&1O97-N)W0@<V5E
M;2!T;R!H879E(&$@<V5P87)A=&4@<G5N=&EM92 @"BL@(" @(" @(&-O;G1I
M;G5E"BL**R @(" @(&%B8G)E=B ](&QA;F=?86)B<F5V6VQA;F=="BL**R @
M(" @(&YA;64@/2 G<W=I9R<@*R!A8F)R978**R @(" @(&-N86UE(#T@;F%M
M92 K("<N8R<**R @(" @(&]N86UE(#T@;F%M92 K('-E;&8N7V]B:F5X= HK
M(" @(" @;&EB;F%M92 ](&YA;64@*R!S96QF+E]L:6)E>'0**PHK(" @(" @
M8V9I;&4@/2!35TE'3V)J96-T*&]S+G!A=&@N:F]I;BAS96QF+G!A=&@L(&QA
M;F<L(&-N86UE*2P@;&%N9RD**R @(" @(&]F:6QE(#T@4U=)1T]B:F5C="AO
M<RYP871H+FIO:6XH<V5L9BYP871H+"!L86YG+"!O;F%M92DL(&QA;F<I"BL@
M(" @("!G<F%P:"YA9&0H1%1?3T)*14-4+"!O9FEL92P@8V9I;&4I"BL**R @
M(" @(&QI8G)A<GD@/2!35TE'4G5N=&EM94QI8G)A<GDH;W,N<&%T:"YJ;VEN
M*'-E;&8N<&%T:"P@;&%N9RP@;&EB;F%M92DL"BL@(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(&QA;F<@*R G7W)U;G1I;64G+"!L86YG+"!S
M96QF+F1E<V,I"BL@(" @("!G<F%P:"YA9&0H1%1?3$E.2RP@;&EB<F%R>2YN
M86UE+"!O9FEL92D**PHK(" @(" @<V5L9BY?;&EB<F%R:65S6VQA;F==(#T@
M;&EB<F%R>0HK(" @(" @9W)A<&@N861D*$147TE.4U1!3$PL('-E;&8N:6YS
M=&%L;" K("<M)R K(&%B8G)E=BP@;&EB<F%R>2D**PHK("!D968@9V5T7VQI
M8G)A<GDH<V5L9BP@;&%N9RDZ"BL@(" @<F5T=7)N('-E;&8N7VQI8G)A<FEE
M<RYG970H;&%N9RP@3F]N92D**PH@(R,C($D@9&]N)W0@=&AI;FL@=&AI<R!S
M:&]U;&0@8F4@5&%R9V5T3&EN:V5D+"!B=70@)V%P<B<@=7-E<R!T:&4@)VQI
M8G,G"B C(R,@;W!T:6]N+"!W:&EC:"!M96%N<R!W92!N965D('1O(&UA:V4@
M=&AI<R!487)G971,:6YK960@<V\@=&AA="!T:&4*(",C(R!'96YE<F%T;W)"
M87-E+E]?:6YI=%]?(&UE=&AO9"!W:6QL('!R;V-E<W,@;&EB<R!O;B!T:&ES
M('1A<F=E="X*0$ @+34X-"PV("LV,3DL-R! 0 H@(" G<')O:F5C="<@.B!4
M87)G9710<F]J96-T+ H@(" G97AT97)N86PG(#H@5&%R9V5T17AT97)N86PL
M"B @("=U=&EL:71Y)R Z(%1A<F=E=%5T:6QI='DL"BL@("=S=VEG7W)U;G1I
M;64G(#H@5&%R9V5T4U=)1U)U;G1I;64L"B @("=S=VEG7W5T:6QI='DG(#H@
M5&%R9V5T4U=)1U5T:6QI='DL"B @('T*( I);F1E>#H@8G5I;&0O9V5N97)A
M=&]R+V=E;E]W:6XN<'D*/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/0HM+2T@8G5I
M;&0O9V5N97)A=&]R+V=E;E]W:6XN<'D)*')E=FES:6]N(#8V-3 I"BLK*R!B
M=6EL9"]G96YE<F%T;W(O9V5N7W=I;BYP>0DH=V]R:VEN9R!C;W!Y*0I 0" M
M,C8R+#$V("LR-C(L,C$@0$ *(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @<W=I9U]L86YG=6%G93U.;VYE*2D*( H@(" @(&EF(&ES:6YS
M=&%N8V4H=&%R9V5T+"!G96Y?8F%S92Y35TE'3&EB<F%R>2DZ"BT@(" @("!F
M;W(@;V)J(&EN('-E;&8N9W)A<&@N9V5T7W-O=7)C97,H9V5N7V)A<V4N1%1?
M3$E.2RP@=&%R9V5T*3H**R @(" @(&9O<B!O8FH@:6X@<V5L9BYG<F%P:"YG
M971?<V]U<F-E<RAG96Y?8F%S92Y$5%],24Y++"!T87)G970N;F%M92DZ"B @
M(" @(" @(&EF(&ES:6YS=&%N8V4H;V)J+"!G96Y?8F%S92Y35TE'3V)J96-T
M*3H*(" @(" @(" @("!F;W(@8V]B:B!I;B!S96QF+F=R87!H+F=E=%]S;W5R
M8V5S*&=E;E]B87-E+D147T]"2D5#5"P@;V)J*3H*(" @(" @(" @(" @(&EF
M(&ES:6YS=&%N8V4H8V]B:BP@9V5N7V)A<V4N4U=)1T]B:F5C="DZ"B @(" @
M(" @(" @(" @(&-S<F,@/2!R;V]T<&%T:" K("=<7"<@*R!S=')I;F<N<F5P
M;&%C92AC;V)J+F9N86UE+" G+R<L("=<7"<I"BT@(" @(" @(" @(" @('-O
M=7)C97,N87!P96YD*%!R;VIE8W1)=&5M*'!A=&@]8W-R8RP@<F5L9&ER/4YO
M;F4L('5S97)?9&5P<SU;72P*+2 @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @<W=I9U]L86YG=6%G93U.;VYE*2D*( HK(" @(" @
M(" @(" @("!I9B!I<VEN<W1A;F-E*'1A<F=E="P@9V5N7V)A<V4N4U=)1U)U
M;G1I;65,:6)R87)Y*3H**R @(" @(" @(" @(" @("!B<W)C(#T@<F]O='!A
M=&@@*R B7%QB=6EL9%Q<=VEN,S)<7&=E;E]S=VEG7W)U;G1I;64N<'DB"BL@
M(" @(" @(" @(" @(" @<V]U<F-E<RYA<'!E;F0H4')O:F5C=$ET96TH<&%T
M:#UB<W)C+"!R96QD:7(]3F]N92P@=7-E<E]D97!S/5M=+ HK(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @('-W:6=?;&%N9W5A
M9V4]=&%R9V5T+FQA;F<L"BL@(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @<W=I9U]T87)G970]8W-R8RP@<W=I9U]O=71P=70]
M3F]N92DI"BL@(" @(" @(" @(" @(" @8V]N=&EN=64**PH@(" @(" @(" @
M(" @(" C(&]U='!U="!P871H('!A<W-E9"!T;R!S=VEG(&AA<R!T;R!U<V4@
M9F]R=V%R9"!S;&%S:&5S+ HM(" @(" @(" @(" @(" C(&]T:&5R=VES92!T
M:&4@9V5N97)A=&%T960@<'ET:&]N(&9I;&5S("AF;W(@<VAA9&]W"BL@(" @
M(" @(" @(" @(",@;W1H97)W:7-E('1H92!G96YE<F%T960@<'ET:&]N(&9I
M;&5S("AF;W(@<VAA9&]W"B @(" @(" @(" @(" @(",@8VQA<W-E<RD@=VEL
M;"!B92!S879E9"!T;R!T:&4@=W)O;F<@9&ER96-T;W)Y"B @(" @(" @(" @
M(" @(&-O=70@/2!S=')I;F<N<F5P;&%C92AO<RYP871H+FIO:6XH<F]O='!A
M=&@L(&-O8FHN9FYA;64I+ H@(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @;W,N<V5P+" G+R<I"D! ("TR.3 L-R K,CDU+#<@0$ *(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("!U<V5R
M7V1E<',]=7-E<E]D97!S+ H@(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @('-W:6=?;&%N9W5A9V4]=&%R9V5T+FQA;F<L"B @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @<W=I
M9U]T87)G970]8W-R8RP@<W=I9U]O=71P=70]8V]U="DI"BT@(" @(" @( HK
M"B @(" @<V]U<F-E<RYS;W)T*&QA;6)D82!X+"!Y.B!C;7 H>"YP871H+"!Y
M+G!A=&@I*0H@(" @(')E='5R;B!S;W5R8V5S"B @( I 0" M,S4P+#$P("LS
M-34L,3,@0$ *(" @(" @(&5L<V4Z"B @(" @(" @(&1E<&5N9',N97AT96YD
M*'-E;&8N9V5T7W5N:7%U95]W:6Y?9&5P96YD<RAT87)G970I*0H@(" @(&5L
M:68@:7-I;G-T86YC92AT87)G970L(&=E;E]B87-E+E-724=,:6)R87)Y*3H*
M+2 @(" @(&9O<B!L:6(@:6X@<V5L9BYG<F%P:"YG971?<V]U<F-E<RAG96Y?
M8F%S92Y$5%],24Y++"!T87)G970I.@HK(" @(" @9F]R(&QI8B!I;B!S96QF
M+F=R87!H+F=E=%]S;W5R8V5S*&=E;E]B87-E+D147TQ)3DLL('1A<F=E="YN
M86UE*3H*(" @(" @(" @:68@:&%S871T<BAL:6(L("=P<F]J7VYA;64G*3H*
M(" @(" @(" @("!D97!E;F1S+F%P<&5N9"AL:6(I"BT@(" @(" @(" @9&5P
M96YD<RYE>'1E;F0H<V5L9BYG971?=VEN7V1E<&5N9',H;&EB+" P*2D@(" @
M(" @(" @"BL@(" @(" @(" @9&5P96YD<RYE>'1E;F0H<V5L9BYG971?=VEN
M7V1E<&5N9',H;&EB+" P*2D**R @(" @(&EF(&YO="!I<VEN<W1A;F-E*'1A
M<F=E="P@9V5N7V)A<V4N4U=)1U)U;G1I;65,:6)R87)Y*3H**R @(" @(" @
M<G5N=&EM92 ]('-E;&8N=&%R9V5T<ULG<W=I9U]R=6YT:6UE)UTN9V5T7VQI
M8G)A<GDH=&%R9V5T+FQA;F<I"BL@(" @(" @(&EF(')U;G1I;64Z(&1E<&5N
M9',N87!P96YD*')U;G1I;64I"B @(" @96QS93H*(" @(" @(&%S<V5R=" P
M"B @(" @(" *0$ @+34P,"PQ,B K-3 X+#$U($! "B @(" @("!R971U<FX@
M;&EB<PH@"B @(" @:68@:7-I;G-T86YC92AT87)G970L(&=E;E]B87-E+E-7
M24=,:6)R87)Y*3H*+2 @(" @(')E='5R;B!;('-E;&8N9&)L:6)N86UE*RAC
M9F<@/3T@)T1E8G5G)R!A;F0@)V0N;&EB)R!O<B G+FQI8B<I+ HK(" @(" @
M;&EB<R ](%L@<V5L9BYD8FQI8FYA;64K*&-F9R ]/2 G1&5B=6<G(&%N9" G
M9"YL:6(G(&]R("<N;&EB)RDL"B @(" @(" @(" @(" @(" G;7-W<V]C:RYL
M:6(G+ H@(" @(" @(" @(" @(" @)W=S,E\S,BYL:6(G+ H@(" @(" @(" @
M(" @(" @)V%D=F%P:3,R+FQI8B<L"B @(" @(" @(" @(" @(" G<G!C<G0T
M+FQI8B<L"B @(" @(" @(" @(" @(" G<VAF;VQD97(N;&EB)R!="BL@(" @
M("!I9B!T87)G970N;&%N9R ]/2 G<&5R;"<Z"BL@(" @(" @(&QI8G,N87!P
M96YD*"=P97)L-38N;&EB)RD**R @(" @(')E='5R;B!L:6)S"B *(" @("!I
M9B!N;W0@:7-I;G-T86YC92AT87)G970L(&=E;E]B87-E+E1A<F=E=$5X92DZ
M"B @(" @("!R971U<FX@6UT*26YD97@Z(&)U:6QD+V=E;F5R871O<B]G96Y?
M;6%K92YP>0H]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]"BTM+2!B=6EL9"]G96YE
M<F%T;W(O9V5N7VUA:V4N<'D)*')E=FES:6]N(#8V-3 I"BLK*R!B=6EL9"]G
M96YE<F%T;W(O9V5N7VUA:V4N<'D)*'=O<FMI;F<@8V]P>2D*0$ @+3,U+#$P
M("LS-2PW($! "B @(" @(" @(",@=&AE<F4@:7,@;F]T:&EN9R!T;R!B=6EL
M9 H@(" @(" @("!C;VYT:6YU90H@"BT@(" @("!I9B!I<VEN<W1A;F-E*'1A
M<F=E=%]O8BP@9V5N7V)A<V4N4U=)1TQI8G)A<GDI.@HM(" @(" @("!S;W5R
M8V5S(#T@<V5L9BYG<F%P:"YG971?<V]U<F-E<RAG96Y?8F%S92Y$5%],24Y+
M+"!T87)G971?;V(N9FYA;64I"BT@(" @("!E;'-E.@HM(" @(" @("!S;W5R
M8V5S(#T@<V5L9BYG<F%P:"YG971?<V]U<F-E<RAG96Y?8F%S92Y$5%],24Y+
M+"!T87)G971?;V(N;F%M92D**R @(" @('-O=7)C97,@/2!S96QF+F=R87!H
M+F=E=%]S;W5R8V5S*&=E;E]B87-E+D147TQ)3DLL('1A<F=E=%]O8BYN86UE
M*0H@"B @(" @("!T87)G970@/2!T87)G971?;V(N;F%M90H@(" @(" @<&%T
M:" ]('1A<F=E=%]O8BYP871H"DEN9&5X.B!B=6EL9"]G96YE<F%T;W(O9V5N
M7VUS=F-?9'-P+G!Y"CT]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T*+2TM(&)U:6QD
M+V=E;F5R871O<B]G96Y?;7-V8U]D<W N<'D)*')E=FES:6]N(#8V-3 I"BLK
M*R!B=6EL9"]G96YE<F%T;W(O9V5N7VUS=F-?9'-P+G!Y"2AW;W)K:6YG(&-O
M<'DI"D! ("TQ,C,L-R K,3(S+#@@0$ *(" @(" @(" @(" @(" @(" @(" @
M(" @(" @("!D<W ]<W1R:6YG+G)E<&QA8V4H9FYA;64L(&]S+G-E<"P@)UQ<
M)RDL"B @(" @(" @(" @(" @(" @(" @(" @(" @(" @9&5P96YD<SUD97!?
M;F%M97,I*0H@"BT@(" @=&%R9V5T<RYS;W)T*"D**R @("!T87)G971S+G-O
M<G0H;&%M8F1A('@L('DZ(&-M<"AX+FYA;64L('DN;F%M92DI"BL*(" @("!D
M871A(#T@>PH@(" @(" @)W1A<F=E=',G(#H@=&%R9V5T<RP*(" @(" @('T*
`
end

begin 666 gen_swig_runtime.py
M(R$O=7-R+V)I;B]E;G8@<'ET:&]N"@II;7!O<G0@;W,L('-Y<RP@<W1R:6YG
M"@IC;&%S<R!,:71E<F%L.@H@(&1E9B!?7VEN:71?7RAS96QF+"!V86QU92DZ
M"B @("!S96QF+G9A;'5E(#T@=F%L=64*"B @9&5F('=R:71E*'-E;&8L(&]U
M="DZ"B @("!O=70N=W)I=&4H<V5L9BYV86QU92D["@IC;&%S<R!&:6QE.@H@
M(&1E9B!?7VEN:71?7RAS96QF+" J<&%T:%]P87)T<RDZ"B @("!S96QF+G!A
M=&@@/2!O<RYP871H+FIO:6XH*G!A=&A?<&%R=',I"@H@(&1E9B!W<FET92AS
M96QF+"!O=70I.@H@(" @9G @/2!O<&5N*&]S+G!A=&@N:F]I;BA35TE'7TQ)
M0BP@<V5L9BYP871H*2P@)W)T)RD*(" @('1R>3H*(" @(" @=VAI;&4@,3H*
M(" @(" @("!C:'5N:R ](&9P+G)E860H-# Y-BD*(" @(" @("!I9B!N;W0@
M8VAU;FLZ(&)R96%K"B @(" @(" @;W5T+G=R:71E*&-H=6YK*0H@(" @9FEN
M86QL>3H*(" @(" @9G N8VQO<V4H*0H*;&%N9W5A9V5S(#T@>PH*(" G=&-L
M)SH@(" @(" H1FEL92@G8V]M;6]N+G-W9R<I+ H@(" @(" @(" @(" @("!&
M:6QE*"=T8VPG+" G<W=I9W1C;#@N<W=G)RDI+ H*(" G<'ET:&]N)SH@(" H
M3&ET97)A;"@G(VEN8VQU9&4@(E!Y=&AO;BYH(EQN)RDL"B @(" @(" @(" @
M(" @($9I;&4H)V-O;6UO;BYS=V<G*2P*(" @(" @(" @(" @(" @1FEL92@G
M<'ET:&]N)RP@)W!Y<G5N+G-W9R<I*2P*"B @)W!E<FPG.B @(" @*$9I;&4H
M)V-O;6UO;BYS=V<G*2P*(" @(" @(" @(" @(" @1FEL92@G<&5R;#4G+" G
M<&5R;')U;BYS=V<G*2DL"@H@("=R=6)Y)SH@(" @("A&:6QE*"=C;VUM;VXN
M<W=G)RDL"B @(" @(" @(" @(" @($9I;&4H)W)U8GDG+" G<G5B>6AE860N
M<W=G)RDL"B @(" @(" @(" @(" @($9I;&4H)W)U8GDG+" G<G5B>61E9BYS
M=V<G*2DL"@H@("=G=6EL92<Z(" @("A&:6QE*"=G=6EL92<L("=G=6EL961E
M8RYS=V<G*2P*(" @(" @(" @(" @(" @1FEL92@G9W5I;&4G+" G9W5I;&4N
M<W=G)RDI+ H*(" G;7IS8VAE;64G.B H1FEL92@G;7IS8VAE;64G+" G;7IS
M8VAE;65D96,N<W=G)RDL"B @(" @(" @(" @(" @($9I;&4H)VUZ<V-H96UE
M)RP@)VUZ<V-H96UE+G-W9R<I*2P*"B @)W!H<"<Z(" @(" @*$9I;&4H)V-O
M;6UO;BYS=V<G*2P*(" @(" @(" @(" @(" @1FEL92@G<&AP-"<L("=P:' T
M<G5N+G-W9R<I*2P*"B @)V]C86UL)SH@(" @*$9I;&4H)V]C86UL)RP@)VQI
M8G-W:6=O8V%M;"YS=V<G*2DL"@H@("=P:6ME)SH@(" @("A&:6QE*"=C;VUM
M;VXN<W=G)RDL"B @(" @(" @(" @(" @($9I;&4H)W!I:V4G+" G<&EK97)U
M;BYS=V<G*2DL"@H@("=C:&EC:V5N)SH@("A,:71E<F%L*"<C:6YC;'5D92 B
M8VAI8VME;BYH(EQN)RDL"B @(" @(" @(" @(" @($9I;&4H)V-O;6UO;BYS
M=V<G*2P*(" @(" @(" @(" @(" @1FEL92@G8VAI8VME;B<L("=C:&EC:V5N
M<G5N+G-W9R<I*2P*"GT*"FEF(%]?;F%M95]?(#T](")?7VUA:6Y?7R(Z"B @
M:68@;&5N*'-Y<RYA<F=V*2 A/2 S.@H@(" @<')I;G0@/CX@<WES+G-T9&5R
M<BP@)U5S86=E.B E<R!L86YG=6%G92!O=71P=70N8R<@)2!S>7,N87)G=ELP
M70H@(" @<WES+F5X:70H,2D*"B @;&%N9W5A9V4@/2!S>7,N87)G=ELQ70H@
M(&]U='!U=" ]('-Y<RYA<F=V6S)="@H@(&9P(#T@;W,N<&]P96XH)W-W:6<@
M+7-W:6=L:6(G+" G<G0G*0H@('1R>3H*(" @(%-724=?3$E"(#T@<W1R:6YG
M+G)S=')I<"AF<"YR96%D;&EN92@I*0H@(&9I;F%L;'DZ"B @("!F<"YC;&]S
M92@I"@H@(&EF(&YO="!35TE'7TQ)0CH*(" @('!R:6YT(#X^('-Y<RYS=&1E
M<G(L(")%<G)O<CH@8'-W:6<@+7-W:6=L:6)@(')E='5R;F5D(&YO=&AI;F<L
M('5N86)L92!T;R(*(" @('!R:6YT(#X^('-Y<RYS=&1E<G(L(")D971E8W0@
M<W=I9R!L:6)R87)Y(&1I<F5C=&]R>2X@36%K92!S=7)E('-W:6<@:7,@;VXB
M"B @("!P<FEN=" ^/B!S>7,N<W1D97)R+" B=&AE('-T86YD87)D('!A=&@N
M(@H@(" @<WES+F5X:70H,2D*"B @8V]N=&5N=',@/2!L86YG=6%G97-;;&%N
M9W5A9V5="B @9G @/2!O<&5N*&]U='!U="P@)W=T)RD*("!T<GDZ"B @("!F
M;W(@8R!I;B!C;VYT96YT<SH*(" @(" @8RYW<FET92AF<"D*("!F:6YA;&QY
1.@H@(" @9G N8VQO<V4H*0H`
`
end



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by "D.J. Heap" <dj...@shadyvale.net>.
I get build errors on the swig stuff when I try this patch, but after 
fixing a couple of syntax errors at lines 27 and 43, I get down to:

------ Build started: Project: swig_python_runtime, Configuration: 
Release Win32 ------

Performing Custom Build Step
Traceback (most recent call last):
   File "d:\Projects\Subversion\build\win32\gen_swig_runtime.py", line 
31, in ?
     if __lkj__ == "main":
NameError: name '__lkj__' is not defined
Project : error PRJ0019: A tool returned an error code from "Performing 
Custom Build Step"

swig_python_runtime - 1 error(s), 0 warning(s)


And from here I'm not sure where to go...

DJ


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Russell Yanofsky <re...@columbia.edu>.
cmpilato@collab.net wrote:
> "Russell Yanofsky" <re...@columbia.edu> writes:
>
>> I was recently given commit access for the swig bindings, but I'd
>> like to check in some changes to the build generator. A patch is
>> attached. Is it ok for me to check this in?
>
> How will this change behave on Windows 9x?  The batch file looks like
> a foreign language to me (I've only been using Windows 2000 for a
> couple of months) -- maybe use Python instead?

Ok, I wrote a python script to replace the batch file. A new patch is
attached. Is this ok?

Log Message:

Changed Visual Studio builds of SWIG bindings to dynamically link
with the SWIG runtime instead of statically linking with it.
(Makefile builds already do this). This is needed because the
SWIG runtime functions read and write global data. When static
linking is used each module gets its own incomplete copy of the
global data, now data is shared and accessible to all modules.

Also some other minor changes:
  - solution and workspace files list projects in alphabetical
    order instead of in random order
  - solution file no longer refers to non-existant __INSTALLER__
    project

* build.conf
    new target: swig_runtime

* build/generator/msvc_dsp.ezt
* build/generator/vcnet_vcproj.ezt
    pass -c option to swig. new custom build step to generate
    swig runtime source

* build/generator/gen_vcnet_vcproj.py
    (Generator.write_project, Generator.write): changed to skip
      TargetExternal instances (like __INSTALLER__) completely.
      Before it was skipping the project files but still
      including references to them in the solution files.

    (Generator.write): list projects in .sln file in alphabetical
      order

* build/generator/gen_msvc_dsp.py
    (Generator.write): list projects in .dsw file in alphabetical
      order

* build/generator/gen_base.py
    (SWIGLibrary.__init__): changed signature and moved some
      functionality into TargetSWIG.add_dependencies

    (SWIGRuntimeLibrary): new DependencyNode class

    (TargetSWIG.add_dependencies): changes for new SWIGLibrary
      constructor. Add swig library dependencies to tree under
      the swig library name, rather than SWIGLibrary instance
      for consistency with other libraries.

    (TargetSWIGRuntime): new Target class

* build/generator/gen_make.py
    (Generator.write): remove some special treatment of
      SWIGLibrary instances now that their dependencies are
      added to the dependency graph just like other libraries.

* build/generator/gen_win.py
    (Generator.write_project, Generator.adjust_win_depends):
      added code to handle writing project files for swig
      runtime libraries

    (Generator.get_win_libs): add perl56.lib library for perl
      modules

* build/win32/gen_swig_runtime.py:
    new python script which generates swig runtime code for
    various languages

- Russ


begin 666 gen_swig_runtime.py
M(R$O=7-R+V)I;B]E;G8@<'ET:&]N"@II;7!O<G0@;W,L('-Y<RP@<W1R:6YG
M"@IC;&%S<R!,:71E<F%L.@H@(&1E9B!?7VEN:71?7RAS96QF+"!V86QU92DZ
M"B @("!S96QF+G9A;'5E(#T@=F%L=64*"B @9&5F('=R:71E*'-E;&8L(&]U
M="DZ"B @(" @;W5T+G=R:71E*'-E;&8N=F%L=64I.PH*8VQA<W,@1FEL93H*
M("!D968@7U]I;FET7U\H<V5L9BP@9FEL96YA;64I.@H@(" @<V5L9BYF:6QE
M;F%M92 ](&9I;&5N86UE"@H@(&1E9B!W<FET92AS96QF+"!O=70I.@H@(" @
M9G @/2!O<&5N*&]S+G!A=&@N:F]I;BA35TE'7TQ)0BP@<V5L9BYF:6QE;F%M
M92DL("=R="<I"B @("!T<GDZ"B @(" @('=H:6QE(#$Z"B @(" @(" @8VAU
M;FL@/2!F<"YR96%D*#0P.38I"B @(" @(" @:68@;F]T(&-H=6YK.B!B<F5A
M:PH@(" @(" @(&]U="YW<FET92AC:'5N:RD*(" @(&9I;F%L;'DZ"B @(" @
M(&9P+F-L;W-E*"D*"FQA;F=U86=E<R ]('L*(" G<'ET:&]N)SH@*$QI=&5R
M86PH)VEN8VQU9&4@(E!Y=&AO;BYH7&XB*2P@"B @(" @(" @(" @("!&:6QE
M*"=C;VUM;VXN<W=G)RD*?0H*:68@7U]L:VI?7R ]/2 B;6%I;B(Z"B @:68@
M;&5N*'-Y<RYA<F=V*2 A/2 S.@H@(" @<')I;G0@/CX@<WES+G-T9&5R<BP@
M)U5S86=E.B E<R!L86YG=6%G92!O=71P=70N8R<@)2!S>7,N87)G=ELP70H@
M(" @<WES=&5M+F5X:70H,2D*"B @9G @/2!O<RYP;W!E;B@G<W=I9R M;&EB
M9&ER)RP@)W)T)RD*("!T<GDZ"B @("!35TE'7TQ)0B ]('-T<FEN9RYR=')I
M;2AF<"YR96%D;&EN92@I*0H@(&9I;F%L;'DZ"B @("!F<"YC;&]S92@I"B @
M"B @8V]N=&5N=',@/2!L86YG=6%G97-;<WES+F%R9W9;,5U="B @9G @/2!O
M<&5N*&QA;F=U86=E<UMS>7,N87)G=ELR72D*("!T<GDZ"B @("!F;W(@8R!I
M;B!C;VYT96YT<SH*(" @(" @8RYW<FET92AF<"D*("!F:6YA;&QY.@H@(" @
-9G N8VQO<V4H*0H*"@``
`
end

begin 666 swig_runtime3.diff
M26YD97@Z(&)U:6QD+F-O;F8*/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/0HM+2T@
M8G5I;&0N8V]N9@DH<F5V:7-I;VX@-C8U,"D**RLK(&)U:6QD+F-O;F8)*'=O
M<FMI;F<@8V]P>2D*0$ @+3(V-2PV("LR-C4L,3$@0$ *(&QI8G,@/2!L:6)S
M=FY?<W5B<B D*%-63E]!4%)?3$E"4RD*(&1E<V-R:7!T:6]N(#T@4W5B=F5R
M<VEO;B!C;W)E(&QI8G)A<GD@8FEN9&EN9W,*( HK6W-W:6=?<G5N=&EM95T*
M*W1Y<&4@/2!S=VEG7W)U;G1I;64**W!A=&@@/2!S=6)V97)S:6]N+V)I;F1I
M;F=S+W-W:6<**V1E<V-R:7!T:6]N(#T@4W=I9R!L86YG=6%G92!R=6YT:6UE
M(&QI8G)A<FEE<PHK"B C(%-724<@=71I;&ET>2!L:6)R87)Y(&9O<B!0>71H
M;VX@;6]D=6QE<PH@6VQI8G-V;E]S=VEG7W!Y70H@='EP92 ](&QI8@I);F1E
M>#H@8G5I;&0O9V5N97)A=&]R+VUS=F-?9'-P+F5Z= H]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]"BTM+2!B=6EL9"]G96YE<F%T;W(O;7-V8U]D<W N97IT"2AR
M979I<VEO;B V-C4P*0HK*RL@8G5I;&0O9V5N97)A=&]R+VUS=F-?9'-P+F5Z
M= DH=V]R:VEN9R!C;W!Y*0I 0" M-S L." K-S L.2! 0 H@26YP=710871H
M/5MS;W5R8V5S+G!A=&A=#0H@#0H@6W-O=7)C97,N<W=I9U]T87)G971=(#H@
M)"A33U520T4I("(D*$E.5$1)4BDB("(D*$]55$1)4BDB#0HM"7-W:6<@+5MS
M;W5R8V5S+G-W:6=?;&%N9W5A9V5=6V9O<B!I;F-L=61E<UT@+4DB6VEN8VQU
M9&5S72);96YD72 M;R!;<V]U<F-E<RYS=VEG7V]U='!U=%T@)"A);G!U=%!A
M=&@I#0HM"0T**UMI9BUA;GD@<V]U<F-E<RYS=VEG7V]U='!U=%T)<W=I9R M
M8R M6W-O=7)C97,N<W=I9U]L86YG=6%G95U;9F]R(&EN8VQU9&5S72 M22);
M:6YC;'5D97-=(EME;F1=("UO(%MS;W5R8V5S+G-W:6=?;W5T<'5T72 D*$EN
M<'5T4&%T:"D-"BM;96QS95T)<'ET:&]N("0H26YP=710871H*2!;<V]U<F-E
M<RYS=VEG7VQA;F=U86=E72!;<V]U<F-E<RYS=VEG7W1A<F=E=%T-"BM;96YD
M70T*(",@16YD($-U<W1O;2!"=6EL9 T*( T*(%ME;F1=#0I);F1E>#H@8G5I
M;&0O9V5N97)A=&]R+V=E;E]V8VYE=%]V8W!R;VHN<'D*/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/0HM+2T@8G5I;&0O9V5N97)A=&]R+V=E;E]V8VYE=%]V8W!R
M;VHN<'D)*')E=FES:6]N(#8V-3 I"BLK*R!B=6EL9"]G96YE<F%T;W(O9V5N
M7W9C;F5T7W9C<')O:BYP>0DH=V]R:VEN9R!C;W!Y*0I 0" M,S<L." K,S<L
M-B! 0 H@(" @(" @(" C3$E""B @(" @(" @(&-O;F9I9U]T>7!E/30*(" @
M(" @(" @=&%R9V5T+F]U='!U=%]N86UE(#T@)R5S+25D+FQI8B<@)2 H=&%R
M9V5T+FYA;64L('-E;&8N8V9G+G9E<G-I;VXI"BT@(" @96QI9B!I<VEN<W1A
M;F-E*'1A<F=E="P@9V5N7V)A<V4N5&%R9V5T17AT97)N86PI.@HM(" @(" @
M<F5T=7)N"B @(" @96QI9B!I<VEN<W1A;F-E*'1A<F=E="P@9V5N7V)A<V4N
M5&%R9V5T571I;&ET>2DZ"B @(" @("!C;VYF:6=?='EP93TQ"B @(" @("!T
M87)G970N;W5T<'5T7VYA;64@/2!T87)G970N;F%M92 K("<N97AE)PI 0" M
M,3,U+#<@*S$S,RPX($! "B @(" @9F]R('1A<F=E="!I;B!I;G-T86QL7W1A
M<F=E=',Z"B @(" @("!N86UE(#T@=&%R9V5T+FYA;64*(" @(" @(",@5&AE
M<V4@87)E;B=T('=O<FMI;F<@>65T"BT@(" @("!I9B!I<VEN<W1A;F-E*'1A
M<F=E="P@9V5N7V)A<V4N5&%R9V5T4V-R:7!T*2!<"BL@(" @("!I9B!I<VEN
M<W1A;F-E*'1A<F=E="P@9V5N7V)A<V4N5&%R9V5T4V-R:7!T*2 @(" @(%P*
M*R @(" @(" @(&]R(&ES:6YS=&%N8V4H=&%R9V5T+"!G96Y?8F%S92Y487)G
M971%>'1E<FYA;"D@7 H@(" @(" @(" @;W(@:7-I;G-T86YC92AT87)G970L
M(&=E;E]B87-E+E1A<F=E=%-724<I.@H@(" @(" @("!C;VYT:6YU90H@"D! 
M("TQ-CDL-R K,38X+#<@0$ *(" @(" @(" @(" @(" @(" @(" @(" @(" @
M("!D97!E;F1S/61E<&QI<W0L"B @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @*2D*( HM(" @('1A<F=E=',N<V]R="@I"BL@(" @=&%R9V5T<RYS;W)T
M*&QA;6)D82!X+"!Y.B!C;7 H>"YN86UE+"!Y+FYA;64I*0H@"B @(" @8V]N
M9FEG<R ](%L@70H@(" @(&9O<B!I(&EN(')A;F=E*&QE;BAS96QF+F-O;F9I
M9W,I*3H*26YD97@Z(&)U:6QD+V=E;F5R871O<B]V8VYE=%]V8W!R;VHN97IT
M"CT]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T*+2TM(&)U:6QD+V=E;F5R871O<B]V
M8VYE=%]V8W!R;VHN97IT"2AR979I<VEO;B V-C4P*0HK*RL@8G5I;&0O9V5N
M97)A=&]R+W9C;F5T7W9C<')O:BYE>G0)*'=O<FMI;F<@8V]P>2D*0$ @+3DU
M+#@@*SDU+#D@0$ *( D)"0E.86UE/2);8V]N9FEG<RYN86UE77Q7:6XS,B(^
M#0H@"0D)"3Q4;V]L#0H@"0D)"0E.86UE/2)60T-U<W1O;4)U:6QD5&]O;"(-
M"BT)"0D)"4-O;6UA;F1,:6YE/2)S=VEG("U;<V]U<F-E<RYS=VEG7VQA;F=U
M86=E75MF;W(@:6YC;'5D97-=("U))G%U;W0[6VEN8VQU9&5S729Q=6]T.UME
M;F1=("UO("9Q=6]T.UMS;W5R8V5S+G-W:6=?;W5T<'5T729Q=6]T.R D*$EN
M<'5T4&%T:"DB#0HM"0D)"0E!9&1I=&EO;F%L1&5P96YD96YC:65S/2);9F]R
M('-O=7)C97,N=7-E<E]D97!S729Q=6]T.UMS;W5R8V5S+G5S97)?9&5P<UTF
M<75O=#L[6V5N9%TB#0HK"0D)"0E;:68M86YY('-O=7)C97,N<W=I9U]O=71P
M=71=0V]M;6%N9$QI;F4](G-W:6<@+6,@+5MS;W5R8V5S+G-W:6=?;&%N9W5A
M9V5=6V9O<B!I;F-L=61E<UT@+4DF<75O=#M;:6YC;'5D97-=)G%U;W0[6V5N
M9%T@+6\@)G%U;W0[6W-O=7)C97,N<W=I9U]O=71P=71=)G%U;W0[("0H26YP
M=710871H*2(-"BL)"0D)"5ME;'-E74-O;6UA;F1,:6YE/2)P>71H;VX@)"A)
M;G!U=%!A=&@I(%MS;W5R8V5S+G-W:6=?;&%N9W5A9V5=(%MS;W5R8V5S+G-W
M:6=?=&%R9V5T72(-"BL)"0D)"5ME;F1=061D:71I;VYA;$1E<&5N9&5N8VEE
M<STB6V9O<B!S;W5R8V5S+G5S97)?9&5P<UTF<75O=#M;<V]U<F-E<RYU<V5R
M7V1E<'-=)G%U;W0[.UME;F1=(@T*( D)"0D)3W5T<'5T<STB)G%U;W0[6W-O
M=7)C97,N<W=I9U]T87)G971=)G%U;W0[(B\^#0H@"0D)/"]&:6QE0V]N9FEG
M=7)A=&EO;CX-"B!;96YD75ME;F1=#0I);F1E>#H@8G5I;&0O9V5N97)A=&]R
M+V=E;E]B87-E+G!Y"CT]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T*+2TM(&)U:6QD
M+V=E;F5R871O<B]G96Y?8F%S92YP>0DH<F5V:7-I;VX@-C8U,"D**RLK(&)U
M:6QD+V=E;F5R871O<B]G96Y?8F%S92YP>0DH=V]R:VEN9R!C;W!Y*0I 0" M
M,S(U+#$T("LS,C4L,3(@0$ *(" @(R,C('-T=7!I9"!487)G970@=G,@1&5P
M96YD96YC>4YO9&4*(" @861D7V1E<',@/2 G)PH@"BT@(&1E9B!?7VEN:71?
M7RAS96QF+"!F;F%M92P@;&%N9RP@9&5S8RDZ"BL@(&1E9B!?7VEN:71?7RAS
M96QF+"!F;F%M92P@;F%M92P@;&%N9RP@9&5S8RDZ"B @(" @1&5P96YD96YC
M>4YO9&4N7U]I;FET7U\H<V5L9BP@9FYA;64I"BL@(" @<V5L9BYN86UE(#T@
M;F%M90H@(" @('-E;&8N;&%N9R ](&QA;F<*(" @("!S96QF+FQA;F=?86)B
M<F5V(#T@;&%N9U]A8F)R979;;&%N9UT*+0H@(" @('-E;&8N<&%T:" ](&]S
M+G!A=&@N9&ER;F%M92AF;F%M92D*+0HM(" @('-E;&8N;F%M92 ](&QA;F<@
M*R!O<RYP871H+G-P;&ET97AT*&]S+G!A=&@N8F%S96YA;64H9FYA;64I*5LP
M70H@(" @('-E;&8N9&5S8R ](&1E<V,@*R G(&9O<B G("L@;&%N9U]F=6QL
M7VYA;65;;&%N9UT*( H@(" @(",C(R!M87EB92!T=V5A:R!T;R!A=F]I9"!T
M:&5S92!D=7!L:6-A=&4@871T<G,*0$ @+3,T,BPV("LS-# L.2! 0 H@(" @
M(",C(R!H;6TN('1H:7,@:7,@36%K969I;&4M<W!E8VEF:6,*(" @("!S96QF
M+FQI;FM?8VUD(#T@)R0H3$E.2U\E<U]74D%04$52*2<@)2!S=')I;F<N=7!P
M97(H<V5L9BYL86YG7V%B8G)E=BD*( HK8VQA<W,@4U=)1U)U;G1I;65,:6)R
M87)Y*%-724=,:6)R87)Y*3H**R @<&%S<PHK"B!C;&%S<R!%>'1E<FYA;$QI
M8G)A<GDH1&5P96YD96YC>4YO9&4I.@H@("!P87-S"B *0$ @+34Q-BPQ," K
M-3$W+#$R($! "B *(" @(" C(R,@=V4@<VAO=6QD(')E86QL>2!E>'1R86-T
M('1H92 E;6]D=6QE(&QI;F4*(" @("!I9B!I;F%M95LZ-%T@/3T@)W-V;E\G
M.@HM(" @(" @;&EB;F%M92 ](&EN86UE6S,Z+3)=("L@<V5L9BY?;&EB97AT
M"BL@(" @("!L:6)N86UE(#T@:6YA;65;,SHM,ET*(" @("!E;'-E.@HM(" @
M(" @;&EB;F%M92 ]("=?)R K(&EN86UE6SHM,ET@*R!S96QF+E]L:6)E>'0*
M*R @(" @(&QI8FYA;64@/2 G7R<@*R!I;F%M95LZ+3)="B **R @("!L:6)F
M:6QE(#T@;&EB;F%M92 K('-E;&8N7VQI8F5X= HK"B @(" @:69I;&4@/2!3
M5TE'4V]U<F-E*&EP871H*0H@"B @(" @9F]R(&QA;F<@:6X@<V5L9BYC9F<N
M<W=I9U]L86YG.@I 0" M-3,T+#(V("LU,S<L-3@@0$ *(" @(" @(&=R87!H
M+F%D9"A$5%]/0DI%0U0L(&]F:6QE+"!C9FEL92D*( H@(" @(" @(R!T:&4@
M;&EB<F%R>2!D97!E;F1S('5P;VX@=&AE(&]B:F5C= HM(" @(" @;&EB<F%R
M>2 ](%-724=,:6)R87)Y*&]S+G!A=&@N:F]I;BAD:7(L(&QA;F<L(&QI8FYA
M;64I+"!L86YG+"!S96QF+F1E<V,I"BT@(" @("!G<F%P:"YA9&0H1%1?3$E.
M2RP@;&EB<F%R>2P@;V9I;&4I"BL@(" @("!L:6)R87)Y(#T@4U=)1TQI8G)A
M<GDH;W,N<&%T:"YJ;VEN*&1I<BP@;&%N9RP@;&EB9FEL92DL"BL@(" @(" @
M(" @(" @(" @(" @(" @(" @(" @;&%N9R K(&QI8FYA;64L(&QA;F<L('-E
M;&8N9&5S8RD**R @(" @(&=R87!H+F%D9"A$5%],24Y++"!L:6)R87)Y+FYA
M;64L(&]F:6QE*0H@"B @(" @(" C(&%D9"!S;VUE(&UO<F4@;&EB<F%R:65S
M"B @(" @("!F;W(@;&EB(&EN('-E;&8N;&EB<SH*+2 @(" @(" @9W)A<&@N
M861D*$147TQ)3DLL(&QI8G)A<GDL(&QI8BD**R @(" @(" @9W)A<&@N861D
M*$147TQ)3DLL(&QI8G)A<GDN;F%M92P@;&EB*0H@"B @(" @(" C(&%D9"!S
M;VUE(&QA;F=U86=E+7-P96-I9FEC(&QI8G)A<FEE<R!F;W(@;&%N9W5A9V5S
M(&]T:&5R('1H86X*(" @(" @(",@2F%V82 H4U=)1R!D;V5S;B=T('-E96T@
M=&\@<')O=FED92!A(&QI8G-W:6=J879A+G-O*0H@(" @(" @:68@86)B<F5V
M("$]("=J879A)SH*(" @(" @(" @(R,C(&9I>"!T:&ES+B!G970@=&AE<V4@
M9G)O;2!T:&4@+F-O;F8@9FEL90HM(" @(" @("!G<F%P:"YA9&0H1%1?3$E.
M2RP@;&EB<F%R>2P@17AT97)N86Q,:6)R87)Y*"<M;'-W:6<G("L@86)B<F5V
M*2D**R @(" @(" @9W)A<&@N861D*$147TQ)3DLL(&QI8G)A<GDN;F%M92P@
M17AT97)N86Q,:6)R87)Y*"<M;'-W:6<G("L@86)B<F5V*2D*(" @(" @(",C
M(R!F:7@@=&AI<RP@=&]O+B!F:6YD('1H92!R:6=H="!487)G970@<W=I9W5T
M:6P@;&EB+B!W92!K;F]W('1H97)E"B @(" @(" C(R,@=VEL;"!B92!O;FQY
M(&]N92X*(" @(" @('5T:6P@/2!G<F%P:"YG971?<V]U<F-E<RA$5%])3E-4
M04Q,+" G<W=I9RTE<RUL:6(G("4@86)B<F5V*5LP70HM(" @(" @9W)A<&@N
M861D*$147TQ)3DLL(&QI8G)A<GDL('5T:6PI"BL@(" @("!G<F%P:"YA9&0H
M1%1?3$E.2RP@;&EB<F%R>2YN86UE+"!U=&EL*0H@"B @(" @(" C('1H92!S
M<&5C:69I960@:6YS=&%L;"!A<F5A(&1E<&5N9',@=7!O;B!T:&4@;&EB<F%R
M>0H@(" @(" @9W)A<&@N861D*$147TE.4U1!3$PL('-E;&8N:6YS=&%L;" K
M("<M)R K(&%B8G)E=BP@;&EB<F%R>2D*( HK8VQA<W,@5&%R9V5T4U=)1U)U
M;G1I;64H5&%R9V5T4U=)1RDZ"BL@(&1E9F%U;'1?:6YS=&%L;" ]("=S=VEG
M7W)U;G1I;64G"BL**R @9&5F(&%D9%]D97!E;F1E;F-I97,H<V5L9BP@<W)C
M7W!A='1E<FYS+"!G<F%P:"DZ"BL@(" @<V5L9BY?;&EB<F%R:65S(#T@>WT*
M*R @("!F;W(@;&%N9R!I;B!S96QF+F-F9RYS=VEG7VQA;F<Z"BL@(" @("!I
M9B!L86YG(#T]("=J879A)SH**R @(" @(" @(R!J879A(&1O97-N)W0@<V5E
M;2!T;R!H879E(&$@<V5P87)A=&4@<G5N=&EM92 @"BL@(" @(" @(&-O;G1I
M;G5E"BL**R @(" @(&%B8G)E=B ](&QA;F=?86)B<F5V6VQA;F=="BL**R @
M(" @(&YA;64@/2 G<W=I9R<@*R!A8F)R978**R @(" @(&-N86UE(#T@;F%M
M92 K("<N8R<**R @(" @(&]N86UE(#T@;F%M92 K('-E;&8N7V]B:F5X= HK
M(" @(" @;&EB;F%M92 ](&YA;64@*R!S96QF+E]L:6)E>'0**PHK(" @(" @
M8V9I;&4@/2!35TE'3V)J96-T*&]S+G!A=&@N:F]I;BAS96QF+G!A=&@L(&QA
M;F<L(&-N86UE*2P@;&%N9RD**R @(" @(&]F:6QE(#T@4U=)1T]B:F5C="AO
M<RYP871H+FIO:6XH<V5L9BYP871H+"!L86YG+"!O;F%M92DL(&QA;F<I"BL@
M(" @("!G<F%P:"YA9&0H1%1?3T)*14-4+"!O9FEL92P@8V9I;&4I"BL**R @
M(" @(&QI8G)A<GD@/2!35TE'4G5N=&EM94QI8G)A<GDH;W,N<&%T:"YJ;VEN
M*'-E;&8N<&%T:"P@;&%N9RP@;&EB;F%M92DL"BL@(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(&QA;F<@*R G7W)U;G1I;64G+"!L86YG+"!S
M96QF+F1E<V,I"BL@(" @("!G<F%P:"YA9&0H1%1?3$E.2RP@;&EB<F%R>2YN
M86UE+"!O9FEL92D**PHK(" @(" @<V5L9BY?;&EB<F%R:65S6VQA;F==(#T@
M;&EB<F%R>0HK(" @(" @9W)A<&@N861D*$147TE.4U1!3$PL('-E;&8N:6YS
M=&%L;" K("<M)R K(&%B8G)E=BP@;&EB<F%R>2D**PHK("!D968@9V5T7VQI
M8G)A<GDH<V5L9BP@;&%N9RDZ"BL@(" @<F5T=7)N('-E;&8N7VQI8G)A<FEE
M<RYG970H;&%N9RP@3F]N92D**PH@(R,C($D@9&]N)W0@=&AI;FL@=&AI<R!S
M:&]U;&0@8F4@5&%R9V5T3&EN:V5D+"!B=70@)V%P<B<@=7-E<R!T:&4@)VQI
M8G,G"B C(R,@;W!T:6]N+"!W:&EC:"!M96%N<R!W92!N965D('1O(&UA:V4@
M=&AI<R!487)G971,:6YK960@<V\@=&AA="!T:&4*(",C(R!'96YE<F%T;W)"
M87-E+E]?:6YI=%]?(&UE=&AO9"!W:6QL('!R;V-E<W,@;&EB<R!O;B!T:&ES
M('1A<F=E="X*0$ @+34X-"PV("LV,3DL-R! 0 H@(" G<')O:F5C="<@.B!4
M87)G9710<F]J96-T+ H@(" G97AT97)N86PG(#H@5&%R9V5T17AT97)N86PL
M"B @("=U=&EL:71Y)R Z(%1A<F=E=%5T:6QI='DL"BL@("=S=VEG7W)U;G1I
M;64G(#H@5&%R9V5T4U=)1U)U;G1I;64L"B @("=S=VEG7W5T:6QI='DG(#H@
M5&%R9V5T4U=)1U5T:6QI='DL"B @('T*( I);F1E>#H@8G5I;&0O9V5N97)A
M=&]R+V=E;E]W:6XN<'D*/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/0HM+2T@8G5I
M;&0O9V5N97)A=&]R+V=E;E]W:6XN<'D)*')E=FES:6]N(#8V-3 I"BLK*R!B
M=6EL9"]G96YE<F%T;W(O9V5N7W=I;BYP>0DH=V]R:VEN9R!C;W!Y*0I 0" M
M,C8R+#$V("LR-C(L,C$@0$ *(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @<W=I9U]L86YG=6%G93U.;VYE*2D*( H@(" @(&EF(&ES:6YS
M=&%N8V4H=&%R9V5T+"!G96Y?8F%S92Y35TE'3&EB<F%R>2DZ"BT@(" @("!F
M;W(@;V)J(&EN('-E;&8N9W)A<&@N9V5T7W-O=7)C97,H9V5N7V)A<V4N1%1?
M3$E.2RP@=&%R9V5T*3H**R @(" @(&9O<B!O8FH@:6X@<V5L9BYG<F%P:"YG
M971?<V]U<F-E<RAG96Y?8F%S92Y$5%],24Y++"!T87)G970N;F%M92DZ"B @
M(" @(" @(&EF(&ES:6YS=&%N8V4H;V)J+"!G96Y?8F%S92Y35TE'3V)J96-T
M*3H*(" @(" @(" @("!F;W(@8V]B:B!I;B!S96QF+F=R87!H+F=E=%]S;W5R
M8V5S*&=E;E]B87-E+D147T]"2D5#5"P@;V)J*3H*(" @(" @(" @(" @(&EF
M(&ES:6YS=&%N8V4H8V]B:BP@9V5N7V)A<V4N4U=)1T]B:F5C="DZ"B @(" @
M(" @(" @(" @(&-S<F,@/2!R;V]T<&%T:" K("=<7"<@*R!S=')I;F<N<F5P
M;&%C92AC;V)J+F9N86UE+" G+R<L("=<7"<I"BT@(" @(" @(" @(" @('-O
M=7)C97,N87!P96YD*%!R;VIE8W1)=&5M*'!A=&@]8W-R8RP@<F5L9&ER/4YO
M;F4L('5S97)?9&5P<SU;72P*+2 @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @<W=I9U]L86YG=6%G93U.;VYE*2D*( HK(" @(" @
M(" @(" @("!I9B!I<VEN<W1A;F-E*'1A<F=E="P@9V5N7V)A<V4N4U=)1U)U
M;G1I;65,:6)R87)Y*3H**R @(" @(" @(" @(" @("!B<W)C(#T@<F]O='!A
M=&@@*R B7%QB=6EL9%Q<=VEN,S)<7&=E;E]S=VEG7W)U;G1I;64N<'DB"BL@
M(" @(" @(" @(" @(" @<V]U<F-E<RYA<'!E;F0H4')O:F5C=$ET96TH<&%T
M:#UB<W)C+"!R96QD:7(]3F]N92P@=7-E<E]D97!S/5M=+ HK(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @('-W:6=?;&%N9W5A
M9V4]=&%R9V5T+FQA;F<L"BL@(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @<W=I9U]T87)G970]8W-R8RP@<W=I9U]O=71P=70]
M3F]N92DI"BL@(" @(" @(" @(" @(" @8V]N=&EN=64**PH@(" @(" @(" @
M(" @(" C(&]U='!U="!P871H('!A<W-E9"!T;R!S=VEG(&AA<R!T;R!U<V4@
M9F]R=V%R9"!S;&%S:&5S+ HM(" @(" @(" @(" @(" C(&]T:&5R=VES92!T
M:&4@9V5N97)A=&%T960@<'ET:&]N(&9I;&5S("AF;W(@<VAA9&]W"BL@(" @
M(" @(" @(" @(",@;W1H97)W:7-E('1H92!G96YE<F%T960@<'ET:&]N(&9I
M;&5S("AF;W(@<VAA9&]W"B @(" @(" @(" @(" @(",@8VQA<W-E<RD@=VEL
M;"!B92!S879E9"!T;R!T:&4@=W)O;F<@9&ER96-T;W)Y"B @(" @(" @(" @
M(" @(&-O=70@/2!S=')I;F<N<F5P;&%C92AO<RYP871H+FIO:6XH<F]O='!A
M=&@L(&-O8FHN9FYA;64I+ H@(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @;W,N<V5P+" G+R<I"D! ("TR.3 L-R K,CDU+#<@0$ *(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("!U<V5R
M7V1E<',]=7-E<E]D97!S+ H@(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @('-W:6=?;&%N9W5A9V4]=&%R9V5T+FQA;F<L"B @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @<W=I
M9U]T87)G970]8W-R8RP@<W=I9U]O=71P=70]8V]U="DI"BT@(" @(" @( HK
M"B @(" @<V]U<F-E<RYS;W)T*&QA;6)D82!X+"!Y.B!C;7 H>"YP871H+"!Y
M+G!A=&@I*0H@(" @(')E='5R;B!S;W5R8V5S"B @( I 0" M,S4P+#$P("LS
M-34L,3,@0$ *(" @(" @(&5L<V4Z"B @(" @(" @(&1E<&5N9',N97AT96YD
M*'-E;&8N9V5T7W5N:7%U95]W:6Y?9&5P96YD<RAT87)G970I*0H@(" @(&5L
M:68@:7-I;G-T86YC92AT87)G970L(&=E;E]B87-E+E-724=,:6)R87)Y*3H*
M+2 @(" @(&9O<B!L:6(@:6X@<V5L9BYG<F%P:"YG971?<V]U<F-E<RAG96Y?
M8F%S92Y$5%],24Y++"!T87)G970I.@HK(" @(" @9F]R(&QI8B!I;B!S96QF
M+F=R87!H+F=E=%]S;W5R8V5S*&=E;E]B87-E+D147TQ)3DLL('1A<F=E="YN
M86UE*3H*(" @(" @(" @:68@:&%S871T<BAL:6(L("=P<F]J7VYA;64G*3H*
M(" @(" @(" @("!D97!E;F1S+F%P<&5N9"AL:6(I"BT@(" @(" @(" @9&5P
M96YD<RYE>'1E;F0H<V5L9BYG971?=VEN7V1E<&5N9',H;&EB+" P*2D@(" @
M(" @(" @"BL@(" @(" @(" @9&5P96YD<RYE>'1E;F0H<V5L9BYG971?=VEN
M7V1E<&5N9',H;&EB+" P*2D**R @(" @(&EF(&YO="!I<VEN<W1A;F-E*'1A
M<F=E="P@9V5N7V)A<V4N4U=)1U)U;G1I;65,:6)R87)Y*3H**R @(" @(" @
M<G5N=&EM92 ]('-E;&8N=&%R9V5T<ULG<W=I9U]R=6YT:6UE)UTN9V5T7VQI
M8G)A<GDH=&%R9V5T+FQA;F<I"BL@(" @(" @(&EF(')U;G1I;64Z(&1E<&5N
M9',N87!P96YD*')U;G1I;64I"B @(" @96QS93H*(" @(" @(&%S<V5R=" P
M"B @(" @(" *0$ @+34P,"PQ,B K-3 X+#$U($! "B @(" @("!R971U<FX@
M;&EB<PH@"B @(" @:68@:7-I;G-T86YC92AT87)G970L(&=E;E]B87-E+E-7
M24=,:6)R87)Y*3H*+2 @(" @(')E='5R;B!;('-E;&8N9&)L:6)N86UE*RAC
M9F<@/3T@)T1E8G5G)R!A;F0@)V0N;&EB)R!O<B G+FQI8B<I+ HK(" @(" @
M;&EB<R ](%L@<V5L9BYD8FQI8FYA;64K*&-F9R ]/2 G1&5B=6<G(&%N9" G
M9"YL:6(G(&]R("<N;&EB)RDL"B @(" @(" @(" @(" @(" G;7-W<V]C:RYL
M:6(G+ H@(" @(" @(" @(" @(" @)W=S,E\S,BYL:6(G+ H@(" @(" @(" @
M(" @(" @)V%D=F%P:3,R+FQI8B<L"B @(" @(" @(" @(" @(" G<G!C<G0T
M+FQI8B<L"B @(" @(" @(" @(" @(" G<VAF;VQD97(N;&EB)R!="BL@(" @
M("!I9B!T87)G970N;&%N9R ]/2 G<&5R;"<Z"BL@(" @(" @(&QI8G,N87!P
M96YD*"=P97)L-38N;&EB)RD**R @(" @(')E='5R;B!L:6)S"B *(" @("!I
M9B!N;W0@:7-I;G-T86YC92AT87)G970L(&=E;E]B87-E+E1A<F=E=$5X92DZ
M"B @(" @("!R971U<FX@6UT*26YD97@Z(&)U:6QD+V=E;F5R871O<B]G96Y?
M;6%K92YP>0H]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]"BTM+2!B=6EL9"]G96YE
M<F%T;W(O9V5N7VUA:V4N<'D)*')E=FES:6]N(#8V-3 I"BLK*R!B=6EL9"]G
M96YE<F%T;W(O9V5N7VUA:V4N<'D)*'=O<FMI;F<@8V]P>2D*0$ @+3,U+#$P
M("LS-2PW($! "B @(" @(" @(",@=&AE<F4@:7,@;F]T:&EN9R!T;R!B=6EL
M9 H@(" @(" @("!C;VYT:6YU90H@"BT@(" @("!I9B!I<VEN<W1A;F-E*'1A
M<F=E=%]O8BP@9V5N7V)A<V4N4U=)1TQI8G)A<GDI.@HM(" @(" @("!S;W5R
M8V5S(#T@<V5L9BYG<F%P:"YG971?<V]U<F-E<RAG96Y?8F%S92Y$5%],24Y+
M+"!T87)G971?;V(N9FYA;64I"BT@(" @("!E;'-E.@HM(" @(" @("!S;W5R
M8V5S(#T@<V5L9BYG<F%P:"YG971?<V]U<F-E<RAG96Y?8F%S92Y$5%],24Y+
M+"!T87)G971?;V(N;F%M92D**R @(" @('-O=7)C97,@/2!S96QF+F=R87!H
M+F=E=%]S;W5R8V5S*&=E;E]B87-E+D147TQ)3DLL('1A<F=E=%]O8BYN86UE
M*0H@"B @(" @("!T87)G970@/2!T87)G971?;V(N;F%M90H@(" @(" @<&%T
M:" ]('1A<F=E=%]O8BYP871H"DEN9&5X.B!B=6EL9"]G96YE<F%T;W(O9V5N
M7VUS=F-?9'-P+G!Y"CT]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T*+2TM(&)U:6QD
M+V=E;F5R871O<B]G96Y?;7-V8U]D<W N<'D)*')E=FES:6]N(#8V-3 I"BLK
M*R!B=6EL9"]G96YE<F%T;W(O9V5N7VUS=F-?9'-P+G!Y"2AW;W)K:6YG(&-O
M<'DI"D! ("TQ,C,L-R K,3(S+#@@0$ *(" @(" @(" @(" @(" @(" @(" @
M(" @(" @("!D<W ]<W1R:6YG+G)E<&QA8V4H9FYA;64L(&]S+G-E<"P@)UQ<
M)RDL"B @(" @(" @(" @(" @(" @(" @(" @(" @(" @9&5P96YD<SUD97!?
M;F%M97,I*0H@"BT@(" @=&%R9V5T<RYS;W)T*"D**R @("!T87)G971S+G-O
M<G0H;&%M8F1A('@L('DZ(&-M<"AX+FYA;64L('DN;F%M92DI"BL*(" @("!D
M871A(#T@>PH@(" @(" @)W1A<F=E=',G(#H@=&%R9V5T<RP*(" @(" @('T*
`
end



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Russell Yanofsky <re...@columbia.edu>.
Branko Čibej wrote:
> Russell Yanofsky wrote:
>
>> Branko Čibej wrote:
>>
>>
>>> Russell Yanofsky wrote:
>>>
>>>
>>>
>>>> Anyway, I rewrote it to work on windows 9x. I think using python
>>>> for this would be overkill since all it does is concatenate a few
>>>> source files together.
>>>>
>>>>
>>>>
>>> Nope, it wouldn't be overkill, especially as you do _not_ want to
>>> generate those files at build time.
>>>
>>>
>>
>> Why not? This is how the runtime gets built on unix, see swig's
>> Runtime/Makefile.in.
>>
>>
> That makefile doesn't know that we have a gen-make.py. Since the
> installed version of SWIG isn't likely to change often, you might as
> well let gen-make.py generate the runtime sources for you

That's possible. I guess I just expect the build system to generate sources,
not the makefile generator.

- Russ




---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Branko Čibej <br...@xbc.nu>.
Russell Yanofsky wrote:

>Branko Čibej wrote:
>  
>
>>Russell Yanofsky wrote:
>>
>>    
>>
>>>Anyway, I rewrote it to work on windows 9x. I think using python for
>>>this would be overkill since all it does is concatenate a few source
>>>files together.
>>>
>>>      
>>>
>>Nope, it wouldn't be overkill, especially as you do _not_ want to
>>generate those files at build time.
>>    
>>
>
>Why not? This is how the runtime gets built on unix, see swig's
>Runtime/Makefile.in.
>  
>
That makefile doesn't know that we have a gen-make.py. Since the
installed version of SWIG isn't likely to change often, you might as
well let gen-make.py generate the runtime sources for you (or, as I
suggested elswhere, just build the runtime straight from the sources in
the SWIG library dir, if that's possible).


-- 
Brane Čibej   <br...@xbc.nu>   http://www.xbc.nu/brane/


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Russell Yanofsky <re...@columbia.edu>.
Branko Čibej wrote:
> Russell Yanofsky wrote:
>
>> Anyway, I rewrote it to work on windows 9x. I think using python for
>> this would be overkill since all it does is concatenate a few source
>> files together.
>>
> Nope, it wouldn't be overkill, especially as you do _not_ want to
> generate those files at build time.

Why not? This is how the runtime gets built on unix, see swig's
Runtime/Makefile.in.

- Russ



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Branko Čibej <br...@xbc.nu>.
Russell Yanofsky wrote:

>Anyway, I rewrote it to work on windows 9x. I think using python for this
>would be overkill since all it does is concatenate a few source files
>together.
>
Nope, it wouldn't be overkill, especially as you do _not_ want to
generate those files at build time.

-- 
Brane Čibej   <br...@xbc.nu>   http://www.xbc.nu/brane/


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Russell Yanofsky <re...@columbia.edu>.
cmpilato@collab.net wrote:
> "Russell Yanofsky" <re...@columbia.edu> writes:
>
>> I was recently given commit access for the swig bindings, but I'd
>> like to check in some changes to the build generator. A patch is
>> attached. Is it ok for me to check this in?
>
> How will this change behave on Windows 9x?

I tested it, and it doesn't work at all. Even the error messages don't show
up.

> The batch file looks like
> a foreign language to me (I've only been using Windows 2000 for a
> couple of months) -- maybe use Python instead?
>
> /me stares in awe at this batch file, unaware that such syntax
> existed.

I know, right? I stumbled across a site yesterday (http://www.ss64.com/nt/)
that describes all the different ways to use the commands and I guess went a
little overboard using them in this file.

Anyway, I rewrote it to work on windows 9x. I think using python for this
would be overkill since all it does is concatenate a few source files
together. There's some funny syntax inside, but it's still simple enough to
understand and tweak. A revised patch is attached.

Log Message:

Changed Visual Studio builds of SWIG bindings to dynamically link
with the SWIG runtime instead of statically linking with it.
(Makefile builds already do this). This is needed because the
SWIG runtime functions read and write global data. When static
linking is used each module gets its own incomplete copy of the
global data, now data is shared and accessible to all modules.

Also some other minor changes:
  - solution and workspace files list projects in alphabetical
    order instead of in random order
  - solution file no longer refers to non-existant __INSTALLER__
    project

* build.conf
    new target: swig_runtime

* build/generator/msvc_dsp.ezt
* build/generator/vcnet_vcproj.ezt
    pass -c option to swig. new custom build step to generate
    swig runtime source

* build/generator/gen_vcnet_vcproj.py
    (Generator.write_project, Generator.write): changed to skip
      TargetExternal instances (like __INSTALLER__) completely.
      Before it was skipping the project files but still
      including listings for them in the solution files.

    (Generator.write): list projects in .sln file in alphabetical
      order

* build/generator/gen_msvc_dsp.py
    (Generator.write): list projects in .dsw file in alphabetical
      order

* build/generator/gen_base.py
    (SWIGLibrary.__init__): changed signature and moved some
      functionality into TargetSWIG.add_dependencies

    (SWIGRuntimeLibrary): new DependencyNode class

    (TargetSWIG.add_dependencies): changes for new SWIGLibrary
      constructor. Add swig library dependencies to tree under
      the swig library name, rather than SWIGLibrary instance
      for consistency with other libraries.

    (TargetSWIGRuntime): new Target class

* build/generator/gen_make.py
    (Generator.write): remove some special treatment of
      SWIGLibrary instances now that their dependencies are
      added to the dependency graph just like other libraries.

* build/generator/gen_win.py
    (Generator.write_project, Generator.adjust_win_depends):
      added code to handle writing project files for swig
      runtime libraries

    (Generator.get_win_libs): add perl56.lib library for perl
      modules

* build/win32/gen_swig_runtime.bat:
    new batch script which generates swig runtime code for
    various languages

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by cm...@collab.net.
"Russell Yanofsky" <re...@columbia.edu> writes:

> I was recently given commit access for the swig bindings, but I'd like to
> check in some changes to the build generator. A patch is attached. Is it ok
> for me to check this in?

How will this change behave on Windows 9x?  The batch file looks like
a foreign language to me (I've only been using Windows 2000 for a
couple of months) -- maybe use Python instead?

/me stares in awe at this batch file, unaware that such syntax
existed.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Russell Yanofsky <re...@columbia.edu>.
Brandon Ehle wrote:
> Russell Yanofsky wrote:
>
>> I was recently given commit access for the swig bindings, but I'd
>> like to check in some changes to the build generator. A patch is
>> attached. Is it ok for me to check this in?
>>
>> Log Message:
>>
>> Changed Visual Studio builds of SWIG bindings to dynamically link
>> with the SWIG runtime instead of statically linking with it.
>> (Makefile builds already do this). This is needed because the
>> SWIG runtime functions read and write global data. When static
>> linking is used each module gets its own incomplete copy of the
>> global data, now data is shared and accessible to all modules.
>>
>> * build/win32/gen_swig_runtime.bat:
>>    new batch script which generates swig runtime code for
>>    various languages
>>
>>
>>
>>
> Excuse my ignorance, but what does this batch file actually do?

It outputs C source files containing the swig runtime functions for various
languages. The code on top is basically just error checking. The actual
functionality is implemented in separate sections for each language. For
example, here is the section that generates the python runtime source:

  :python
  ECHO #include "Python.h" > %2
  TYPE "%swig_lib%\common.swg" >> %2
  TYPE "%swig_lib%\python\pyrun.swg" >> %2
  GOTO success

That's not too complicated. It generates a file containing an include line,
some functions from the swig library, and some python specific functions
from the swig library.

> Like
> cmpilato said, its Greek to me.  Couldn't we do this in a much cleaner
> and OS independent way?

This is only needed for the Visual Studio projects that build swig bindings.
Other platforms use the Runtime/Makefile.in file that comes with swig (and
which this file is based on).

>
> I notice the section of code at the top does the following:
>
> REM Enable Command Extensions, needed for FOR command below
> SETLOCAL ENABLEEXTENSIONS
> IF ERRORLEVEL 1 (
>   ECHO Error: Unable to enable command extensions >&2
>   EXIT /B 1
> )
>
> Before we depend on something like this, shouldn't we implement a
> fallback case for when those extensions are not available?

The extensions are always available on Windows NT/2K/XP/2K3 unless the user
sets a special registry key to disable them, and this is very rare so a
warning message should be sufficient.

Also, my response to cmpilato in this thread has a new version attached
which is ported to Windows 9x and doesn't require the command extensions.

- Russ



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: [PATCH] dynamically link swig runtime on windows (Can I commit this?)

Posted by Brandon Ehle <az...@yahoo.com>.
Russell Yanofsky wrote:

>I was recently given commit access for the swig bindings, but I'd like to
>check in some changes to the build generator. A patch is attached. Is it ok
>for me to check this in?
>
>Log Message:
>
>Changed Visual Studio builds of SWIG bindings to dynamically link
>with the SWIG runtime instead of statically linking with it.
>(Makefile builds already do this). This is needed because the
>SWIG runtime functions read and write global data. When static
>linking is used each module gets its own incomplete copy of the
>global data, now data is shared and accessible to all modules.
>
>* build/win32/gen_swig_runtime.bat:
>    new batch script which generates swig runtime code for
>    various languages
>  
>
>  
>
Excuse my ignorance, but what does this batch file actually do?  Like 
cmpilato said, its Greek to me.  Couldn't we do this in a much cleaner 
and OS independent way?

I notice the section of code at the top does the following:

REM Enable Command Extensions, needed for FOR command below
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 (
  ECHO Error: Unable to enable command extensions >&2
  EXIT /B 1
)

Before we depend on something like this, shouldn't we implement a 
fallback case for when those extensions are not available?



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org