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: Dr. Martin P.J. Zinser
Subject: Re: Make 3.79.1 on OpenVMS
Date: Thu, 26 Sep 2002 20:21:38 +0100 (MET)

Hello Paul,

> From: IN%"address@hidden"  "Paul D. Smith" 25-SEP-2002 06:21:11.38
> Subj: RE: Make 3.79.1 on OpenVMS

> %% address@hidden 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
! $! address@hidden (preferred) or address@hidden
  $
  $! 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
! $! address@hidden (preferred) or address@hidden
  $
  $! 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 (address@hidden)
  # Modified for version 3.78.1 by address@hidden
+ # Modified for version 3.80 by address@hidden
  #
  # 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                       address@hidden
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:  address@hidden




reply via email to

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