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 $ _______________________________________________ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make