[Top][All Lists]

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

Re: What does this piece of code from a Makefile do??

From: John Graham-Cumming
Subject: Re: What does this piece of code from a Makefile do??
Date: Tue, 10 May 2005 21:52:51 -0400

On Tue, 2005-05-10 at 23:15 +0100, haynes george wrote:
> ALL = prog1 prog2 prog3 prog4 prog5
> LOCK_DIR = /var/lock/test
> ECHO = /bin/echo
> BIN_DIR = /home/bin
> TMP_FILE = /home/temp/tmp.file
> JOB = start
> $(ALL)        : $(SUBSYS_FILE_DIR)/$@ 

This defines five rules (one each for prog1, prog2, ...) in the form:

prog1: $(SUBSYS_FILE_DIR)/prog1

etc.  Note, however, that this was not done with GNU Make because GNU
Make does not allow $@ in the prereq list (it does allow $$@ for SysV

> @$(ECHO) "Begin \"$(JOB) address@hidden"  >  $(TMP_FILE)

This writes a string to $(TMP_FILE) so for prog1 /home/temp/tmp.file
gets the line Begin "start prog1" written to it.

> @$(BIN_DIR)/$@  $(JOB)      >> $(TMP_FILE) 2>&1  

This then runs $(BIN_DIR)/prog1 (or prog2, ...) and appends the output
to the temporary file mapping handle 2 to 1 (i.e. errors go into the
file as well).

> @$(ECHO) "End \"$(JOB) address@hidden"   >> $(TMP_FILE)     

And this appends End "start prog1" or similar to the temporary file.

> prog1 : prog2 prog3
> prog3 : prog4
> prog4 
> prog5 : prog4 prog1

And these are just dependencies between the various programs.

John Graham-Cumming

GNU Make Standard Library:

reply via email to

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