ENOSIG Discussie (threads)


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

Re: .if defined in GNU and BSD make


Op do 15-01-2004, om 15:33 schreef Ronald van Engelen:
> Op wo 14-01-2004, om 10:57 schreef ik:
> Thanks for all the useful replies! After being not so lazy and thus
> reading the GNU make manual (info), things are going better each time.
> 
> I decided to go for (the) GNU make (syntax), since I presume it can be
> (made to) run on most platforms. 
> 
> When I finish the Makefile(s) and the source XSL- and XML-files I'll
> post them on my website so you can all have a great laugh ;)

After reading (a lot) in the info manual, and looking at some other
Makefiles, I still can't figure out how to complete the next thing, help
would be appreciated:

a. Run a xsltproc command. This outputs a space-seperated list of
   subdirs, which gets stored in the first variable
b. Within each subdir, run a second xsltproc command with a parameter
   containing the value of the current subdir. The output of this
   command, a space-seperated list of filenames, should be stored in a
   second variable 
c. For each filename, run a third xsltproc command with a parameter
   containing the value of subdir, and a second parameter containing the
   value of filename. This command should put its output in the
   filename.

Task a. is accomplished. I solved b. and c. before by generating
Makefiles (includes) in each subdir, by calling a special xsl-file from
within the main Makefile. But this took three nested for loops, which
never seemed to end (13 seconds).

So here is my new Makefile. 1, 3 and 4 work as expected. The problem is
that I can't put the output of 5. @$(FILELIST), which DISPLAYS the
correct filenames, in a variable for use in the loop. I tried declaring
2. as a simply expanded variable (again using the $(shell ...) function,
but then make runs the command immediately and $@ of course contains
nothing.

   XSLT     = /usr/bin/xsltproc
   L_DIRS   = listdirs.xsl
   L_FILES  = listfiles.xsl
   XSL      = makepage.xsl
   XML      = contents.xml
 
1. DIRS := $(shell $(XSLT) $(L_DIRS) $(XML))
2. FILELIST = $(XSLT) --stringparam subdir $@ $(L_FILES) $(XML)

3.  $(DIRS):
4. 	mkdir $(DIRS)
5.  	for file in @$(FILELIST); do ( \
	 $(XSLT) \
	 -o $$file \
         --stringparam subdir $@ \
         --stringparam page $$file \
         $(XSL) $(XML); )
	done
        
   all: $(DIRS)

Pointers/help would be appreciated!

> Thanks,
> Ronald
Again ;)

<<signature.asc>>


Follow-ups:

Gerelateerd:


[ Date Index] [ Thread Index]