bug-make
[Top][All Lists]
Advanced

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

Re: [bug #41758] VMS Make incorrectly reports archives support present.


From: h.becker
Subject: Re: [bug #41758] VMS Make incorrectly reports archives support present.
Date: Thu, 01 May 2014 23:29:08 +0200
User-agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130519 Icedove/17.0.5

On 04/30/2014 06:22 AM, John Malmberg wrote:
> Follow-up Comment #2, bug #41758 (project make):
> 
> Updated diff for default.c to suppress messages about VMS library creation if
> not existing.
> 
> Updated the library creation to create the correct library type for the known
> library file suffixes for VMS/Unix.

Shareable image libraries do not yet work, there are a couple of problems:

$ cre o.c
o(){}
[ Exit ]
$ mc [.make]make -f-"
all:o.olb(o.exe)
[ Exit ]
cc    o.c
link  o.obj    /exe=o.exe
library /replace o.olb o.exe
%LIBRAR-E-RECTYP, illegal record type (176) in module  in
SYS$SYSDEVICE:[HARTMUT]O.EXE;1
<builtin>: recipe for target 'o.olb(o.exe)' failed
make: *** [o.olb(o.exe)] Error 0x1086813a
make: *** Archive member 'o.olb(o.exe)' may be bogus; not deleted
Removing intermediate files...
rm o.exe
$

Hmm, o.olb is still an object library:
$ pipe libr/list o |search sys$pipe "Directory
Directory of OBJECT library SYS$SYSDEVICE:[HARTMUT]O.OLB;1 on
1-MAY-2014 18:53:12
$

So I removed the '@'s to see what kind of library is created:
$ del o.obj;*,o.olb;*
...
Reading makefiles...
Updating goal targets....
 File 'all' does not exist.
   File 'o.olb(o.exe)' does not exist.
    File 'o.exe' does not exist.
   Must remake target 'o.exe'.
cc    o.c
link  o.obj    /exe=o.exe
   Successfully remade target file 'o.exe'.
  Must remake target 'o.olb(o.exe)'.
if f$edit(".olb","LOWERCASE") .eqs. ".tlb" then if f$search("o.olb")
.eqs. "" then library/CREATE/TEXT o.olb
if f$edit(".olb","LOWERCASE") .eqs. ".hlb" then if f$search("o.olb")
.eqs. "" then library/CREATE/HELP o.olb
if f$edit(".olb","LOWERCASE") .eqs. ".mlb" then if f$search("o.olb")
.eqs. "" then library/CREATE/MACRO o.olb
if f$edit(".olb","LOWERCASE") .eqs. ".exe" then if f$search("o.olb")
.eqs. "" then library/CREATE/EXE o.olb
if f$edit(".olb","LOWERCASE") .eqs. ".a" then if f$search("o.olb") .eqs.
"" then library/CREATE/OBJECT o.olb
if f$edit(".olb","LOWERCASE") .eqs. ".olb" then if f$search("o.olb")
.eqs. "" then library/CREATE/OBJECT o.olb
library /replace o.olb o.exe
...

The last one is the match. That's no what I expected, although the image
library has a type of .OLB;

Anyway,

$ library/CREATE/EXE o.olb
%DCL-W-IVQUAL, unrecognized qualifier - check validity, spelling, and
placement
 \EXE\
$

Should be /share
$ library/CREATE/share o.olb
...
Reading makefiles...
Updating goal targets....
 File 'all' does not exist.
   File 'o.olb(o.exe)' does not exist.
    File 'o.exe' does not exist.
   Must remake target 'o.exe'.
link  o.obj    /exe=o.exe
   Successfully remade target file 'o.exe'.
  Must remake target 'o.olb(o.exe)'.
if f$edit(".olb","LOWERCASE") .eqs. ".tlb" then if f$search("o.olb")
.eqs. "" then library/CREATE/TEXT o.olb
if f$edit(".olb","LOWERCASE") .eqs. ".hlb" then if f$search("o.olb")
.eqs. "" then library/CREATE/HELP o.olb
if f$edit(".olb","LOWERCASE") .eqs. ".mlb" then if f$search("o.olb")
.eqs. "" then library/CREATE/MACRO o.olb
if f$edit(".olb","LOWERCASE") .eqs. ".exe" then if f$search("o.olb")
.eqs. "" then library/CREATE/EXE o.olb
if f$edit(".olb","LOWERCASE") .eqs. ".a" then if f$search("o.olb") .eqs.
"" then library/CREATE/OBJECT o.olb
if f$edit(".olb","LOWERCASE") .eqs. ".olb" then if f$search("o.olb")
.eqs. "" then library/CREATE/OBJECT o.olb
library /replace o.olb o.exe %LIBRAR-E-NOTSHRIMG, file
SYS$SYSDEVICE:[HARTMUT]O.EXE;1 is not an OpenVMS VAX shareable image
<builtin>: recipe for target 'o.olb(o.exe)' failed
make: *** [o.olb(o.exe)] Error 0x1086812a
Removing intermediate files...
rm o.exe
$

That's OK and expected.

But not all intermediate files should be removed: for an image library
the shareable images must not be removed.

What follows it the same as above, but now with an implicit rule for
building shareable images and an existing shareable image library:

$ del o.obj;*
$ cre o.opt
universal=o
[ Exit ]
$ mc [.make]make --debug=b -f-"
GNU Make 4.0.90
Built for VMS
Copyright (C) 1988-2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
all:o.olb(o.exe)
.c.exe:
        cc $<
        link  /share /exe=$@ $*,$*/opt
[ Exit ]
Reading makefiles...
Updating goal targets....
 File 'all' does not exist.
   File 'o.olb(o.exe)' does not exist.
    File 'o.exe' does not exist.
   Must remake target 'o.exe'.
cc o.c
link  /share /exe=o.exe o,o/opt
   Successfully remade target file 'o.exe'.
  Must remake target 'o.olb(o.exe)'.
if f$edit(".olb","LOWERCASE") .eqs. ".tlb" then if f$search("o.olb")
.eqs. "" then library/CREATE/TEXT o.olb
if f$edit(".olb","LOWERCASE") .eqs. ".hlb" then if f$search("o.olb")
.eqs. "" then library/CREATE/HELP o.olb
if f$edit(".olb","LOWERCASE") .eqs. ".mlb" then if f$search("o.olb")
.eqs. "" then library/CREATE/MACRO o.olb
if f$edit(".olb","LOWERCASE") .eqs. ".exe" then if f$search("o.olb")
.eqs. "" then library/CREATE/EXE o.olb
if f$edit(".olb","LOWERCASE") .eqs. ".a" then if f$search("o.olb") .eqs.
"" then library/CREATE/OBJECT o.olb
if f$edit(".olb","LOWERCASE") .eqs. ".olb" then if f$search("o.olb")
.eqs. "" then library/CREATE/OBJECT o.olb
library /replace o.olb o.exe
  Successfully remade target file 'o.olb(o.exe)'.
Must remake target 'all'.
Successfully remade target file 'all'.
Removing intermediate files...
rm o.exe
$



reply via email to

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