On 30 August 2011 09:32, Nicholas Clark wrote:
The revision log for the files various Win32 "canned config files"
win32/config_H.* suggest that they are updated manually and sporadically.
Yes, I've updated them numerous times, but regettably haven't done so
for a while. If you're looking at this area now, would it help or
hinder you if I brought them up to date now?
As best I can tell each is generated from a corresponding config file
using win32/config_h.PL, and I assume ideally is supposed to be in sync.
Essentially, yes. I do it using the regen_config_h target in
win32/Makefile, plus some (too much...) hand-editing. There are some
comments above that target which explain the process a little.
win32/config_h.PL is actually portable. Would it make sense to do the
regeneration as part of regen.pl, and (therefore) keep all the canned
headers up to date automatically?
It would be nice, and I've thought about it before, but never worked
out a nice way to do it, given the amount of manual intervention
involved every time I've done it.
It involves building a perl with the various Makefile options all
switched off (see d64224560b and 17bdc11416 for the reasoning) and
then using that to run the regen_config_h target. (It would be
simplest if miniperl.exe was used to run that target, since
miniperl.exe is built with the various options switched off already,
but I think it didn't work when I last tried it -- miniperl.exe can't
load dynamic (DLL) extensions, and some were needed to run that target
IIRC.) Then some hand-editing is required to put back the special
__GNUC__ stuff which gets lost in that process (this is to allow
building XS extensions with GCC in a perl (e.g. ActivePerl...) that
was built with VC++), plus some stuff about QUAD_IS___INT64 got lost
the last time I did it and also needed restoring (I think Merijn was
going to update his magical Configure stuff to render that unnecessary
That's just for the VC++ 32-bit config. The VC++ 64-bit, GCC (32-bit)
and BCC configs also need doing similarly (with _MSC_VER stuff needing
to be restored in the GCC config after regeneration), plus a GCC
64-bit config has arrived since I last did this.
Some corners can be cut with the 64-bits being similar to the 32-bits
(just copy the new 32-bit config and apply the same diffs as existed
previously, provided that nothing new actually needs to differ between
32-bit and 64-bit...), but it's still rather laborious and I would
love to get it automated somehow.