httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "William A. Rowe, Jr." <>
Subject RE: cvs commit: apache-2.0/src/ap ap.dsp
Date Sun, 28 May 2000 16:40:41 GMT
> From: Greg Stein []
> Sent: Sunday, May 28, 2000 4:37 AM
> > Everything is building, almost everything runs, however htpasswd insists
> > on the ApacheCore.dll which sits in another directory that it doesn't see.
> > Gut instinct is a two-layer solution just like aprlib/aprlibdll, perhaps
> > call them core and coredll, but I'll let others scream they hate it before
> > I push that.
> Could you explain what "core" and "coredll" would be? i.e. how do they
> differ?

They would have a 1:1 to the existing aprlib and aprlibdll, 
so let me explain what those two do, why, and how they don't 
waste extra build time...

aprlib creates a .lib file of the Win32 apr object binaries.  Since
we want to compile the binaries only once, we compile with the 
APR_EXPORT_SYMBOLS define so we create exportable functions.  That's
all it does.

aprlibdll creates a .dll from aprlib.lib objects.  All it does is
link a .dll from that input and an empty .obj that supresses the
obligatory MSVC link error.  It doesn't waste extra compile time,
since it just gather's the .lib symbols with export tags defined.

ApacheCore.dll and the ApacheModules*.dll link to the .dll via 
aprlibdll, so the entire apr library is loaded at run time.  They 
all sit there together, and with proper basing there is only one
copy of the code segment is loaded by NT's memory manager.

But programs from src/support (htpasswd, htdigest, ab) are so 
useful, we are likely to have copies of those in other util 
directories.  Ab is likely to be thrown on a second, third, 
fourth lab PC for multi-client tests.  They don't reside in 
the Apache root folder, so they can't locate aprlib.dll.  And
they use very few aprlib.dll symbols, so it isn't worth it to
load the entire lib to execute them.

So the src/support .dsp projects link to the apr.lib from the 
aprlib .dsp project.  They take a handful of symbols, with exports 
defined, so they actually export those symbols.  But they treat 
all the entry points and data as statically bound themselves,
and don't waste the extra compile time.

Result?  1 extra .lib file created.  No extra compiles.  This
could be the quick-fix to ApacheCore to create a .lib and .dll,
so the support/ tree (ab and htpasswd) can use the handful of
objects they need to import.


View raw message