From: William S F. <ws...@fu...> - 2011-10-17 20:02:42
|
On 17/10/11 20:20, Soeren Sonnenburg wrote: > On Mon, 2011-10-17 at 19:37 +0100, William S Fulton wrote: >> On 13/10/11 23:39, Soeren Sonnenburg wrote: >>> Dear all, >>> >>> I have read the documentation to no avail but am stuck in figuring out >>> how it is possible to reduce the size of the wrapper code. I've found >>> http://www.swig.org/Doc2.0/Modules.html#Modules_nn6 but that is not an >>> option (several swig supported $lang have problems with such split ups). >>> >>> So now I am wondering if it is actually possible to split up the >>> generated .cxx file (which here is ~20 MB / 500kLoC - for this project >>> http://shogun-toolbox.org/) into say 10 files compile them seperately >>> into .o's and then just link them together in the end. >>> >>> Did anyone ever do this / or is this even already supported? >> The only real support for this problem is %import with multiple modules. >> All target languages should work with multiple modules. Some might not, >> but then consider it a bug in a major area which should be fixed. The >> -fvirtual and -fcompact options you refer to offer some reduction, but >> nothing really large. You could alternatively wrap less code, do you >> really need all of the code wrapped? > > IIRC java, c# and other languages have trouble with %import / modules so > this won't work. In addition we are using -fvirtual etc already and the > problem with exploded wrapper code size exists possibly only because we > support so many data types for all kinds of functions and consequently > have %template's for uint8,int8,uint16,...int64_t,float,double,long > double... > I use %import with C# and Java on a large project., so it is possible, but not necessarily straight forward. I compile all the generated _wrap.cxx files into one big .so/.dll file. > That's because it is a data analysis toolkit so limiting types - though > of course possible - would really mean limit functionality. > > Generally speaking, it should be possible to split up any .cpp file into > parts and then using appropriate .h and use of extern (or replicating > static functions) one could first compile the isolated splits and then > link them together. I might underestimate the difficulty of such an > endeavor - am I really or does anyone know of a splitcpp or so utility? I don't know of any such utility, but I'd be quite happy to accept a patch that does this kind of splitting into SWIG. William |