hello!

after seeing a rash of win32 build problems, i decided to look into what
is going on.  one problem i noticed in the emails was Configure.pl was
being run twice.  once by the user (as expected), and once by nmake.  the
reason is quiet cute:

when Configure.pl is run, it copies platforms/win32.h to
include/parrot/platform.h.  Makefile.in has a rule that sets Configure.pl
as a dependency to $(STICKY_FILES) ... and platform.h is a member of the
$(STICKY_FINGERS) macro.  well, Configure.pl's timestamp is newer than
win32.h!  therefore, nmake will quiet understandably run Configure.pl
every time.

Configure.pl should forciably touch any file it copies since that copies
the file timestamps too.  for my testing purpopses, i just removed the
dependency in Makefile.in and nmake was happy.

that brings me to the next problem:  string.c.  there are a slew of
compile errors in this file, and it all is based on pointer math on void
pointers.  for example, STRING has a void* bufstart member, and various
functions (like string_make) try to do pointer math with it.  void
pointers have no size; therefore, pointer math won't work.  visual c++
enforces this, and i'm a little surprised that gcc doesn't.  i guess it
just treats it as a char*?

everything else seems to compile fine.  there are a few compiler warnings
due to some functions not returning values (most notiably some files in
the classes directory).

i'll see about working up a patch tomorrow, but a few questions for the
parrot code police.  what is the best way to touch a file from inside of
perl?  also, what is the prefered way of handling the void pointers?
casting to char*?  some other typedef?  change STRING::bufstart from a
void* to a char*?  ...etc...

-lee berger
[EMAIL PROTECTED]




Reply via email to