ftp.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2000/06/25/03:21:29

Date: Sun, 25 Jun 2000 10:20:33 +0300 (IDT)
From: Eli Zaretskii <eliz AT is DOT elta DOT co DOT il>
X-Sender: eliz AT is
To: djgpp AT delorie DOT com
Subject: Re: Make file wildcards
In-Reply-To: <3953D200.897086E1@pacbell.net>
Message-ID: <Pine.SUN.3.91.1000625102010.25761E@is>
MIME-Version: 1.0
Reply-To: djgpp AT delorie DOT com
Errors-To: nobody AT delorie DOT com
X-Mailing-List: djgpp AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

On Fri, 23 Jun 2000, Wesel wrote:

> > To get Make do what you want, use a static pattern rule instead of an
> > implicit rule, like this:
> > 
> > $(OBJECTS):  %.o : %.c %.cpp %.h
> 
> This did confuse me.  It didn't work, probably because I didn't
> understand.

If it didn't work, you probably don't have either the .c file or the
.h file.

> A rule within a rule?

No, this is how static pattern rule is written.  It says that if Make
needs to build one of the files in the $OBJECTS variable, it needs to
apply this rule.

> The Windows port uses this funny program called 'cmdproxy.exe' instead
> of plain ol' command.com to execute DOS shell commands.

NTEmacs has no choice but to do that, because running a DOS program in
an asynchronous way is not something Microsoft wanted to be easy (or
even possible).

> I think that's the root of the problem (3rd party software and all)

cmdproxy is not 3rd party software, it's part of the Emacs sources and
gets compiled and maintained by the same people who maintain the
NTEmacs port.

> but I'm afraid to
> try to redirect Emacs to do something like 'command.com /c'

And rightfully so: you would lose the async subprocesses support.

> 'M-x compile' followed by 'make' sporadically produces the result
> ------------------------------------------------------
> make
> 
> warning: extra args ignored after
> 'C:\WINDOWS\DESKTOP\TCL\EMACS\EMACS-20.7\BIN\CMDPROXY.EXE'
> 
> 
> Microsoft(R) Windows 98
>    (C)Copyright Microsoft Corp 1981-1999.
> 
> C:\WINDOWS\Desktop\tcl\emacs\emacs-20.7\projects>
> ------------------------------------------------------
> 
> Then, I'm left with two new processes (cmdproxy and winoldap) that not
> even ctrl-alt-delete can cancel!

If this only happens when you run Make, but not with other DJGPP
programs, one possibility is that Make doesn't react well to SHELL
being set to cmdproxy.  You could try to solve this by setting the
variable MAKESHELL in the environment to point to COMMAND.COM.

Also, did you try the NTEmacs FAQ?  It gives solutions to many such
problems.  Failing that, there's an NTEmacs mailing list (the URL is
in the NTEmacs FAQ, I think).

> > > Is there any way I can use wildcards with the make utility provided by
> > > djgpp?
> > 
> > Yes, you can, but I'm not sure in what context would you need that, so
> > I cannot give specific advice.  You may wish to read the node
> > "Wildcards" in the Make manual.
> 
> I did read this.  Sorry for being unclear.  I meant wildcards in the
> context of the type-symbols make uses to generate implicit rules.  Using
> wildcards such as *.o might work too.

There is a built-in function $wildcard, in case you need that.  But
static pattern rules use wildcards internally, so you shouldn't need
an explicit call to $wildcard.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019