+1

I'd like to know what had to be edited. There's always room for improvement,
after all.

Ger

PS for the ILM folks: the CreateDLL tool as it exists here has a bigger
scope than OpenEXR (I thankfully grabbed your idea and took off ;-) ): it's
used with such libraries as zlib, OpenSSL, hamsterdb, TRE, libxslt, and
several in-house proprietary lib-turned-DLL's. Nevertheless, I hope the
thing can be assimilated in its entirety; it's a generic tool and all items
are used by OpenEXR, at least in its vcproj incantations here (which have
'global code optimization' turned on for most projects; that thing 'happens'
in the MSVC _linker_ thus the need to feed that bastard a couple of extra
commandline switches when you want things like that to happen in the
definitive linker run (unless you wish to wonder why global code
optimization doesn't bring a single ounce of performance when you select it
in your MSVC projects: it happened, then CreateDLL made it unhappen before).
This baby also picks up on inter-library-dependencies that MSVC dropped into
the vanilla linker run when you have projects which depend on other
projects=libraries, either static or dynamic ones. OpenEXR doesn't have
third-party dependencies, but derived work does. Side-effect is that you now
'always' get to automagically pick the right MSVC RunTime library, static or
dynamic, debug or non-debug, etc. as that datum is lifted from the map
files. Allows for easy copy&paste between postbuild target edit fields for
various platforms and projects in MS Dev Studio.

It's a self-serving request as it saves me quite some tracking hassle in the
future and this way CreateDLL can be a very viable alternative for those
porting any UNIX libs/.so's to Windows without the need to hand-maintain
.DEF files and/or sprinkle the code with magic dllimport/export pragma dust
(which is your only way when you do C++ templates (or many classes) in a DLL
setting). The 'pragma way' was our old method for providing 'multiplatform
portable code' over here for years, but 'twas a real maintenance hellhound
when you like to 'track' third-party libs on a [somewhat] regular basis.

Bits of this was mentioned somewhere in early 2009 and then it got bloody
silent on my part when it came to delivering production-tested code at the
end.  :-(  Needed the kick in the a.*, apparently.



On Thu, Mar 11, 2010 at 6:20 PM, Piotr Stanczyk <pstanc...@ilm.com> wrote:

> Good news.  Could you mail out the changes you had to make - thanks.
>
> Piotr
>
> Stephan Menzel wrote:
>
>> Ger,
>>
>> Works. Like. A. Charm.
>>
>> Finally I can link ImageMagick.
>> Thank you so very much! You've saved me from despair in face of what
>> Microsoft considers a developer platform. Great stuff.
>> I strongly encourage ILM to take in these changes. I could provide the
>> whole package with Ger's changes incorporated if you are interested.
>> Actually, you did something not very different from what I started,
>> but so much further and better. I almost only had to drop it in. You
>> were right with your 95% estimation. I had to change very little.
>>
>> Cheers,
>>
>> Stephan
>>
>> On Thu, Mar 11, 2010 at 11:00 AM, Ger Hobbelt <g...@hobbelt.com> wrote:
>>
>>
>>> Yes, I did, and, no, they were not. It's just me veering off and paying
>>> attention to other things. For a proper move upstream the changes should
>>> be
>>> more clearly documented as others are using this material in their
>>> production evironments too and not everybody likes a 'hey, what the heck,
>>> let's upgrade!' without some pretty detailed prior notion of what they're
>>> getting themselves in to. ;-)
>>>
>>> Anyway, attached two 7zip archives: one is the CreateDLL sources (pull a
>>> [visual] diff to see what I did, don't get flabberghasted by the code
>>> changes, just follow the comments and you should do fine; the changelog
>>> is
>>> at the top of createDLL.cpp and should proceed where the public ILM
>>> version
>>> stops); the other is just an example vcproj (Half.vcproj) to show what
>>> may/may not have to change for you to make it work (passing the right
>>> args
>>> to CreateDLL in the postbuild process).
>>>
>>>
>>> Why do I call that Hlf.vcproj one a *sample*?
>>> Because we have very strict project organization rules around here, where
>>> every solution MUST dump all build binaries in the
>>> <_solution_dir>/bin/Debug|ReleaseXYZ directory, where XYZ is a combo of
>>> target CPU and platform. This means that the OpenEXR vcproj files all
>>> were
>>> edited to not only deliver in the original spot but also in this
>>> directory
>>> so that our package and test scripts can handle it all (one structure for
>>> everything means less FUBAR before deadlines and less maintenance on
>>> stuff
>>> like install scripts, which you'd rather not edit, ever. ;-)
>>>
>>> Just open the vcproj with notepad++ or similar text editor, it's XML
>>> anyway,
>>> and have a look-see when you compare with your own half.vcproj. The
>>> different destination directory stuff should pop out pretty quickly. The
>>> batchfiles have been edited for this purpose as well, but I didn't
>>> include
>>> them; just copying files to different destinations, is all.
>>>
>>> IlmBase-src.7z is the CreateDLL source code + adjusted vcproj. Code
>>> should
>>> be drop-in (95% success chance is my guess); take care **NOT** to just
>>> drop-in the CreateDLL.vcproj due to the above-mentioned altered project
>>> delivery structure. Pull a diff on that one and copy&paste what you know
>>> will work and take it from there.
>>>
>>> The CreateDLL source has several comment chunks where I describe what I
>>> found on our systems and what tricks I pulled to make the bugger do my
>>> bidding to a tee. code organization wise it's the .MAP file parser that
>>> got
>>> an overhaul, plus added sprinkles to have CreateDLL pass along some
>>> command
>>> args to the underlying linker plus other tidbits which I forgot but
>>> probably
>>> use quite frequently over here.
>>>
>>> Can't guarantee within-24h response, but send me any issues and I'll try
>>> to
>>> resolve them asap.
>>>
>>>
>>> On Thu, Mar 11, 2010 at 9:21 AM, Stephan Menzel <
>>> stephan.men...@gmail.com>
>>> wrote:
>>>
>>>
>>>> Hi Ger,
>>>>
>>>> On Thu, Mar 11, 2010 at 12:00 AM, Ger Hobbelt <g...@hobbelt.com> wrote:
>>>>
>>>>
>>>>> Anyway, this is off the top of my head. Just give the word and a
>>>>> CreateDLL
>>>>> source will be on its way.
>>>>>
>>>>>
>>>> Wow, that would be very helpful indeed. Much appreciated.
>>>> Did you ever consider bringing this into upstream or are the ILM guys
>>>> hesitant about this?
>>>>
>>>> Cheers,
>>>>
>>>> Stephan
>>>>
>>>>
>>>
>>> --
>>> Met vriendelijke groeten / Best regards,
>>>
>>> Ger Hobbelt
>>>
>>> --------------------------------------------------
>>> web:    http://www.hobbelt.com/
>>>       http://www.hebbut.net/
>>> mail:   g...@hobbelt.com
>>> mobile: +31-6-11 120 978
>>> --------------------------------------------------
>>>
>>>
>>>
>>>
>>
>>
>> _______________________________________________
>> Openexr-devel mailing list
>> Openexr-devel@nongnu.org
>> http://lists.nongnu.org/mailman/listinfo/openexr-devel
>>
>>
>
>


-- 
Met vriendelijke groeten / Best regards,

Ger Hobbelt

--------------------------------------------------
web:    http://www.hobbelt.com/
       http://www.hebbut.net/
mail:   g...@hobbelt.com
mobile: +31-6-11 120 978
--------------------------------------------------
_______________________________________________
Openexr-devel mailing list
Openexr-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/openexr-devel

Reply via email to