bug-make
[Top][All Lists]
Advanced

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

Re: [bug #41813] Mult-line override define failing on VMS.


From: h.becker
Subject: Re: [bug #41813] Mult-line override define failing on VMS.
Date: Tue, 18 Mar 2014 17:30:10 +0100
User-agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130519 Icedove/17.0.5

On 03/17/2014 11:34 PM, John E. Malmberg wrote:
> On 3/16/2014 4:13 PM, h.becker wrote:
>> Appended is a temporary fix for the multiline problem.
> 
> The fix appears to work.
> 
> I think your comment about it breaking the echo being defined as
> sys$output is wrong though.  I tested it with no echo symbol and with
> echo as a symbol and it generates the expected output now in both cases.

It seems you aren't using plain VMS, which has no echo command nor echo
symbol. I'm talking about the make variable ECHO as defined for VMS in:

$ search [.make]default.c ECHO/exact/wind=(20,0)
#ifdef VMS
#ifdef __ALPHA
    "ARCH", "ALPHA",
#endif
#ifdef __ia64
    "ARCH", "IA64",
#endif
#ifdef __VAX
    "ARCH", "VAX",
#endif
    "AR", "library/obj",
    "ARFLAGS", "/replace",
    "AS", "macro",
    "MACRO", "macro",
#ifdef GCC_IS_NATIVE
    "CC", "gcc",
#else
    "CC", "cc",
#endif
    "CD", "builtin_cd",
    "ECHO", "write sys$$output \"",
$

and that is obviously broken with my fix:

$ ty echo-symbol.mf
define foo
@$(ECHO) first
@$(ECHO) second
endef
all: ; $(foo)
echo: ; @write sys$$output "$(ECHO)"
$
$ mcr [.make]mcr -f echo-symbol.mf echo
write sys$output "
$ mcr [.make]mcr -f echo-symbol.mf all
%DCL-W-UNDSYM, undefined symbol - check validity and spelling
 \SECOND\
$

$ pipe mcr [.make]mcr -df echo-symbol.mf all |search sys$pipe "Must
remake targe
t"/wind=(0,4)
Must remake target 'all'.
child_execute_job (write sys$output " first
@write sys$output " second)
%DCL-W-UNDSYM, undefined symbol - check validity and spelling
 \SECOND\
$


$ pipe mcr [.make]mcr -df echo-symbol.mf all "ECHO=assign/job whatever"
|search sys$pipe "Must remake target"/wind=(0,20)
Must remake target 'all'.
child_execute_job (assign/job whatever first)
Putting child D9FF0 (all) PID 150035 on the chain.
Live child D9FF0 (all) PID 150035
Reaping winning child D9FF0 PID 150035
child_execute_job (assign/job whatever second)
Live child D9FF0 (all) PID 155156
Reaping winning child D9FF0 PID 155156
Removing child D9FF0 PID 155156 from chain.
Successfully remade target file 'all'.
$
$ sh log/job first,second
   "FIRST" = "whatever" (LNM$JOB_8232E3C0)

   "SECOND" = "whatever" (LNM$JOB_8232E3C0)
$

The broken ECHO is one reason I flagged the fix "temporary". It seems,
there should be a builtin_echo for VMS.  Shouldn't be too hard, but I
haven't looked at it. That way some old VMS makefile which make use of
ECHO will continue to work. The question is, whether one would want to
support DCL symbols within the to be echoed text.



reply via email to

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