Hello Paul, > From: IN%"[EMAIL PROTECTED]" "Paul D. Smith" 25-SEP-2002 06:21:11.38 > Subj: RE: Make 3.79.1 on OpenVMS
> %% [EMAIL PROTECTED] writes: > > > > The next release of GNU make is imminent and I'd really appreciate it if > you could try it out on VMS for me before it goes out the door; you can > get the Release Candidate 2 package here: > > ftp://alpha.gnu.org/gnu/make/make-3.80rc2.tar.gz > > (or .bz2 whichever you prefer). > > It would be great to get a sanity test on VMS for this release before > the fact. Thanks! > > -- here are the results of my test of Make 3.80RC2 on OpenVMS. Besides of the compiler messages, which I am going to discuss in a second, I also noticed that makefile.vms needs to be updated to include the new hash.c function. This is also part of the patch appended below. Now to the nitty-gritty compiler messages: $ @makefile "" "" wall Compiling alloca... Compiling ar... Compiling arscan... Compiling commands... Compiling default... Compiling dir... Compiling expand... Compiling file... if (! (s <= FILE_TIMESTAMP_S (ORDINARY_MTIME_MAX) ..............^ %CC-I-QUESTCOMPARE, In this statement, the unsigned expression "(unsigned long)- 1" is being compared with a relational operator to a constant whose value is not greater than zero. This might not be what you intended. at line number 548 in file DISK$USER:[ZINSER.TMP.MAKE]file.c;3 ---> This and the following Macro related informationals ultimatly all boil down to the usage of the following construction /* Nonzero if the integer type T is signed. */ #define INTEGER_TYPE_SIGNED(t) ((t) -1 < 0) For an unsigned type (like e.g. time_t in OpenVMS) this does cause the message shown above. Since this is more or less intentional the "solution" for this problem is to suppress this type of message for normal builds. To still be able to see what is going on for developers I did add a new parameter to makefile.com (wall, similar to the GCC usage) to enable the messages again. && product <= ts && ts <= ORDINARY_MTIME_MAX)) ...................................^ %CC-I-QUESTCOMPARE, In this statement, the unsigned expression "(unsigned long)- 1" is being compared with a relational operator to a constant whose value is not greater than zero. This might not be what you intended. at line number 549 in file DISK$USER:[ZINSER.TMP.MAKE]file.c;3 ts = s <= OLD_MTIME ? ORDINARY_MTIME_MIN : ORDINARY_MTIME_MAX; .................................................^ %CC-I-QUESTCOMPARE, In this statement, the unsigned expression "(unsigned long)- 1" is being compared with a relational operator to a constant whose value is not greater than zero. This might not be what you intended. at line number 552 in file DISK$USER:[ZINSER.TMP.MAKE]file.c;3 else if (t < 0) ...........^ %CC-I-QUESTCOMPARE, In this statement, the unsigned expression "t" is being comp ared with a relational operator to a constant whose value is not greater than ze ro. This might not be what you intended. at line number 624 in file DISK$USER:[ZINSER.TMP.MAKE]file.c;3 ---> In this instance a unsigned (time_t) variable is compared against a negative value. A quick fix (which is applied below) is to ifdef the code section for VMS. A more general solution would be to have a TIME_T_UNSIGNED macro defined in config.h and use that in this place. Compiling function... Compiling hash... n |= (n >> 32); ........^ %CC-I-RIGHTSHIFTOVR, In this statement, the right shift count "32" is greater th an or equal to the size of the unpromoted operand "n". at line number 362 in file DISK$USER:[ZINSER.TMP.MAKE]hash.c;3 ---> I assume this is in for systems with 64 bit longs? Since it does not seem to work on OpenVMS I did put a #ifndef around it. Compiling implicit... Compiling job... Compiling main... f->last_mtime = f->mtime_before_update = NEW_MTIME; ...................................................^ %CC-I-QUESTCOMPARE, In this statement, the unsigned expression "(unsigned long)- 1" is being compared with a relational operator to a constant whose value is not greater than zero. This might not be what you intended. at line number 1634 in file DISK$USER:[ZINSER.TMP.MAKE]main.c;2 Compiling misc... Compiling read... Compiling remake... else if (ORDINARY_MTIME_MIN <= this_mtime && this_mtime <= ORDINARY_MTIME_MAX .............................................................^ %CC-I-QUESTCOMPARE, In this statement, the unsigned expression "(unsigned long)- 1" is being compared with a relational operator to a constant whose value is not greater than zero. This might not be what you intended. at line number 400 in file DISK$USER:[ZINSER.TMP.MAKE]remake.c;2 file->last_mtime = i == 0 ? UNKNOWN_MTIME : NEW_MTIME; ..................................................^ %CC-I-QUESTCOMPARE, In this statement, the unsigned expression "(unsigned long)- 1" is being compared with a relational operator to a constant whose value is not greater than zero. This might not be what you intended. at line number 800 in file DISK$USER:[ZINSER.TMP.MAKE]remake.c;2 Compiling remote-stub... Compiling rule... Compiling signame... char *u = _("unknown signal"); ............^ %CC-W-NOTCONSTQUAL, In the initializer for u, the referenced type of the pointer value "((const char ...)("unknown signal"))" is const, but the referenced type of the target of this assignment is not. at line number 89 in file DISK$USER:[ZINSER.TMP.MAKE]signame.c;3 --->This one was easy. Just make u also const Compiling variable... Compiling version... Compiling vmsfunctions... Compiling vmsify... Compiling vpath... Compiling [.glob]glob... Compiling [.glob]fnmatch... Compiling getopt1... Compiling getopt... %LINK-W-WRNERS, compilation warnings in module SIGNAME file DISK$USER:[ZINSER.TMP.MAKE]signame.OBJ;1 I do not know if you do have a mailing list to announce make releases and esp. release candiates. If yes I would appreciate if you could add me to this list, so the next time around I could do some more work on makefile.com (essentially I do want to turn it into more of a configure like script, creating config.h and makefile.vms on the fly according to the local configuration. The patch below is only a very first step in this direction. Greetings, Martin *** makefile.com.orig Thu Sep 26 00:37:24 2002 --- makefile.com Thu Sep 26 00:38:28 2002 *************** *** 4,12 **** $! P1 is non-empty if you want to link with the VAXCRTL library instead $! of the shareable executable $! P2 = DEBUG will build an image with debug information $! $! In case of problems with the install you might contact me at ! $! [EMAIL PROTECTED] (preferred) or [EMAIL PROTECTED] $ $! hb $! But don't ask Martin Zinser about the lines, I added/changed. --- 4,14 ---- $! P1 is non-empty if you want to link with the VAXCRTL library instead $! of the shareable executable $! P2 = DEBUG will build an image with debug information + $! P3 = WALL will enable all warning messages (some are suppressed since + $! one macro intentionally causes an error condition) $! $! In case of problems with the install you might contact me at ! $! [EMAIL PROTECTED] (preferred) or [EMAIL PROTECTED] $ $! hb $! But don't ask Martin Zinser about the lines, I added/changed. *************** *** 15,20 **** --- 17,30 ---- $! in case somebody set up her/his own symbol for cc $ set symbol/scope=(nolocal,noglobal) $! + $! Just some general constants... + $! + $ true = 1 + $ false = 0 + $ tmpnam = "temp_" + f$getjpi("","pid") + $ tt = tmpnam + ".txt" + $ tc = tmpnam + ".c" + $! $! Look for the compiler used $! $ lval = "" *************** *** 49,55 **** $ else $ lopt = "" $ endif ! $ filelist = "alloca ar arscan commands default dir expand file function hash implicit job main misc read remake remote-stub rule signame variable version vmsfunctions vmsify vpath [.glob]glob [.glob]fnmatch getopt1 getopt" $ copy config.h-vms config.h $ n=0 $ open/write optf make.opt --- 59,75 ---- $ else $ lopt = "" $ endif ! $! ! $! Do we want to see all warnings ! $! ! $ if (p3.nes."WALL") ! $ then ! $ gosub check_cc_qual ! $ endif ! $ filelist = "alloca ar arscan commands default dir expand file function " + - ! "hash implicit job main misc read remake remote-stub rule " + - ! "signame variable version vmsfunctions vmsify vpath " + - ! "[.glob]glob [.glob]fnmatch getopt1 getopt" $ copy config.h-vms config.h $ n=0 $ open/write optf make.opt *************** *** 75,85 **** $ if f$search("make.opt").nes."" then $ del make.opt;* $ exit $! $ compileit : subroutine $ ploc = f$locate("]",p1) $ filnam = p1 $ if ploc .lt. f$length(p1) then filnam=f$extract(ploc+1,100,p1) $ write optf "''filnam'" ! $ cc'ccopt'/include=([],[.glob])/define=("allocated_variable_expand_for_file=alloc_var_expand_for_file","unlink=remove","HAVE_CONFIG_H","VMS") 'p1' $ exit $ endsubroutine : compileit --- 95,138 ---- $ if f$search("make.opt").nes."" then $ del make.opt;* $ exit $! + $!------------------------------------------------------------------------------ + $! + $! Check if this is a define relating to the properties of the C/C++ + $! compiler + $! + $CHECK_CC_QUAL: + $ open/write tmpc 'tc + $ ccqual = "/warn=(disable=questcompare)" + $ write tmpc "#include <stdio.h>" + $ write tmpc "unsigned int i = 1;" + $ write tmpc "int main(){" + $ write tmpc "if (i < 0){printf(""Mission impossible\n"");}}" + $ close tmpc + $ gosub cc_qual_check + $ return + $! + $!------------------------------------------------------------------------------ + $! + $! Check for properties of C/C++ compiler + $! + $CC_QUAL_CHECK: + $ cc_qual = false + $ set message/nofac/noident/nosever/notext + $ cc 'ccqual' 'tmpnam' + $ if $status then cc_qual = true + $ set message/fac/ident/sever/text + $ delete/nolog 'tmpnam'.*;* + $ if cc_qual then ccopt = ccopt + ccqual + $ return + $!------------------------------------------------------------------------------ + $! $ compileit : subroutine $ ploc = f$locate("]",p1) $ filnam = p1 $ if ploc .lt. f$length(p1) then filnam=f$extract(ploc+1,100,p1) $ write optf "''filnam'" ! $ cc'ccopt'/include=([],[.glob]) - ! /define=("allocated_variable_expand_for_file=alloc_var_expand_for_file","unlink=remove","HAVE_CONFIG_H","VMS") - ! 'p1' $ exit $ endsubroutine : compileit *** makefile.vms.orig Thu Sep 26 00:37:37 2002 --- makefile.vms Thu Sep 26 00:38:36 2002 *************** *** 4,9 **** --- 4,10 ---- # VMS extensions from GNU Make 3.60 imported by # Klaus Kämpf ([EMAIL PROTECTED]) # Modified for version 3.78.1 by [EMAIL PROTECTED] + # Modified for version 3.80 by [EMAIL PROTECTED] # # GNU Make is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by *************** *** 86,96 **** # Number to put on the man page filename. manext = 1 ! objs = commands.obj,job.obj,dir.obj,file.obj,misc.obj,\ main.obj,read.obj,remake.obj,rule.obj,implicit.obj,\ default.obj,variable.obj,expand.obj,function.obj,\ vpath.obj,version.obj$(ARCHIVES)$(ALLOCA)$(extras)$(getopt)$(glob) ! srcs = commands.c job.c dir.c file.c misc.c \ main.c read.c remake.c rule.c implicit.c \ default.c variable.c expand.c function.c \ vpath.c version.c vmsfunctions.c vmsify.c $(ARCHIVES_SRC) $(ALLOCASRC) \ --- 87,97 ---- # Number to put on the man page filename. manext = 1 ! objs = commands.obj,job.obj,dir.obj,file.obj,misc.obj,hash.obj,\ main.obj,read.obj,remake.obj,rule.obj,implicit.obj,\ default.obj,variable.obj,expand.obj,function.obj,\ vpath.obj,version.obj$(ARCHIVES)$(ALLOCA)$(extras)$(getopt)$(glob) ! srcs = commands.c job.c dir.c file.c misc.c hash.c\ main.c read.c remake.c rule.c implicit.c \ default.c variable.c expand.c function.c \ vpath.c version.c vmsfunctions.c vmsify.c $(ARCHIVES_SRC) $(ALLOCASRC) \ *************** *** 119,124 **** --- 120,126 ---- dir.obj: dir.c make.h file.obj: file.c make.h commands.h dep.h filedef.h variable.h misc.obj: misc.c make.h dep.h + hash.obj: hash.c make.h hash.h main.obj: main.c make.h commands.h dep.h filedef.h variable.h job.h read.obj: read.c make.h commands.h dep.h filedef.h variable.h remake.obj: remake.c make.h commands.h job.h dep.h filedef.h *** file.c.orig Thu Sep 26 00:37:29 2002 --- file.c Thu Sep 26 00:38:31 2002 *************** *** 621,628 **** --- 621,630 ---- sprintf (p, "%04d-%02d-%02d %02d:%02d:%02d", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); + #ifndef VMS else if (t < 0) sprintf (p, "%ld", (long) t); + #endif else sprintf (p, "%lu", (unsigned long) t); p += strlen (p); *** hash.c.orig Thu Sep 26 00:37:44 2002 --- hash.c Thu Sep 26 00:38:43 2002 *************** *** 359,365 **** n |= (n >> 4); n |= (n >> 8); n |= (n >> 16); n |= (n >> 32); ! return n + 1; } --- 359,366 ---- n |= (n >> 4); n |= (n >> 8); n |= (n >> 16); + #ifndef VMS n |= (n >> 32); ! #endif return n + 1; } *** signame.c.orig Thu Sep 26 00:37:51 2002 --- signame.c Thu Sep 26 00:38:47 2002 *************** *** 86,92 **** signame_init () { int i; ! char *u = _("unknown signal"); undoc = xstrdup(u); --- 86,92 ---- signame_init () { int i; ! const char *u = _("unknown signal"); undoc = xstrdup(u); Dr. Martin P.J. Zinser [EMAIL PROTECTED] Deutsche Boerse Systems Inc. Suite 1580 Tel: +1-312-408-3085 141 West Jackson Blvd. FAX: +1-312-408-3071 Chicago, IL, 60604 USA Private: [EMAIL PROTECTED] _______________________________________________ Bug-make mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-make