bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Make 3.79.1 on OpenVMS


From: Paul D. Smith
Subject: Re: Make 3.79.1 on OpenVMS
Date: Fri, 27 Sep 2002 15:29:29 -0400

%% "Dr. Martin P.J. Zinser" <address@hidden> writes:

  mpjz> Hello Paul,

Thanks for the work, that's great.

  mpjz> I also noticed that makefile.vms needs to be updated to include
  mpjz> the new hash.c function.  This is also part of the patch
  mpjz> appended below.

Thanks.

  mpjz> ---> In this instance a unsigned (time_t) variable is compared
  mpjz>      against a negative value. A quick fix (which is applied below)
  mpjz>      is to ifdef the code section for VMS. A more general solution
  mpjz>      would be to have a TIME_T_UNSIGNED macro defined in config.h and
  mpjz>      use that in this place.

Hm.  However, I can't think of any way to write a configure test on
whether or not time_t is signed or unsigned.

It's always a tough decision for me, trying to balance the desires of
people to build without any warnings with my desire to not perpetuate
any more than is necessary the use of #ifdefs etc. to handle different
platforms.  The code is already maze-like enough in places and, after
all, a warning is just a warning... although in general I agree that 0
warning builds are important enough to change code for, I'm not sure
that changing it by adding lots of #ifdefs is an overall win.

  mpjz> ---> I assume this is in for systems with 64 bit longs? Since it
  mpjz>      does not seem to work on OpenVMS I did put a #ifndef around it.

I already did this; is this good enough for you:

  #if !defined(HAVE_LIMITS_H) || ULONG_MAX > 4294967295
    /* We only need this on systems where unsigned long is >32 bits.  */
    n |= (n >> 32);
  #endif

  mpjz>   char *u = _("unknown signal");
  mpjz> ............^
  mpjz> %CC-W-NOTCONSTQUAL, In the initializer for u, the referenced type of 
the pointer
  mpjz>  value "((const char ...)("unknown signal"))" is const, but the 
referenced type
  mpjz> of the target of this assignment is not.
  mpjz> at line number 89 in file DISK$USER:[ZINSER.TMP.MAKE]signame.c;3

  mpjz> ---> This one was easy. Just make u also const

Hm.  But then returning it is the wrong type, since the function returns
char * instead of const char *.

Really the function should return const char *, but then it breaks
because the definition of that function on other systems is just char*.

I think I might just cast it:

  const *u = (char *)_("unknown signal");

  mpjz> so the next time around I could do some more work on
  mpjz> makefile.com (essentially I do want to turn it into more of a
  mpjz> configure like script, creating config.h and makefile.vms on the
  mpjz> fly according to the local configuration. The patch below is
  mpjz> only a very first step in this direction.

Note that the next release of GNU make will certainly not take as long
as the last one.  I plan to put out a release fairly quickly that
integrates support for OS/2 and the MINGW Windows development
environment, plus whatever bugs crop up in 3.80 once it gets out into
the wild and a few other nits and nats--no major new features, most
likely.

-- 
-------------------------------------------------------------------------------
 Paul D. Smith <address@hidden>          Find some GNU make tips at:
 http://www.gnu.org                      http://make.paulandlesley.org
 "Please remain calm...I may be mad, but I am a professional." --Mad Scientist




reply via email to

[Prev in Thread] Current Thread [Next in Thread]