1… In normal work do you have more than one version of the WDK in use?
If so why?
Reason #1: Win2K.
Reason #2: My customers want to know that their drivers will build with the
new WDK before they are required to use it (by WHQL standards). During the
transition it is preferred to be able to continue to build with the previous
version(s) and ‘promote’ the new WDK (and required changes) in a reversible
way. Maintaining separate source control branches for this purpose is
considered ‘expensive’.
2… When the WDK beta comes out, do you try it with current projects? If
so do you try to use the same copy of the sources for both, or clone one
specifically for the beta?
Absolutely and yes, with the same sources. This is how the continuity (or
change cost) is initially estimated. A separate branch (clone of the
source) is created only when the changes to get it to a stable build are
either non-backward compatible or so onerous as to be considered a sizeable
risk.
3… Have you encountered problems with using more than one WDK? Would you
like to have a way to conditionalize the build files or the driver source
for differing WDK versions?
Yes & yes (somewhat).
Conditional SOURCES= (or macro evaluation prior to BUILD.EXE generating
_objects.mac) would be very nice. It always seemed to me that NMAKE /
MAKEFILE.NEW could be taught to just ‘emit’ the final evaluated SOURCES
macro and have build.exe invoke nmake with a special target which outputs
this value when it detects a need to generate _objects.mac. Or something
like that.
I realize this runs contrary to the NTOS build team’s goal of reducing the
number of NMAKE passes and overall NTOS build time. OTOH, we don’t build a
gazillion modules for one target, we build a few modules for a few targets
with a few kits. I would not care one bit if my build times went up two
seconds per SOURCES file to conditionally evaluate SOURCES= instead of just
reading it without macro expansion in BUILD.EXE to generate _objects.mac
And it does seem that SOURCES= (and xxxx_SOURCES=) are the only macros that
are consumed in the build that are not *always* processed by running NMAKE,
right?
Cheers,
Dave Cattley