[Top][All Lists]
[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