[PD-dev] Makefile with recursive directories

Hans-Christoph Steiner hans at eds.org
Wed Mar 28 00:13:36 CEST 2007


On Mar 27, 2007, at 12:00 AM, Alexandre Quessy wrote:

> Hi again,
>
> 2007/3/26, Hans-Christoph Steiner <hans at eds.org>:
>> It's the $.  Since $ denotes a variable in Makefiles, you have to use
>> $$ in order for it to make it to the shell, like \$$dir.
>
> It seems like we should use $$ within normal bash lines, and \$$
> within sed scripts... For instance :
>
> all:tata
> tata:toto
>        for i in to*; do cp $$i tata; done;
>
>> In general, this kind of directory recursion is a hack tho.  For
>> example, errors in the resursive parts of the script aren't handled
>> as well as errors in regular parts of the Makefile.
>
> Is it acceptable in the pd-extended makefile ?

I am not going to stop you, but it is a hack that will most likely  
lead to problems in the future.

.hc

>
> Alex
>
>
>
>
>
>>
>> .hc
>>
>> On Mar 26, 2007, at 3:17 AM, Alexandre Quessy wrote:
>>
>> > Hi again,
>> > I made it a bit better. I still get 2 errors. (see below) I  
>> think that
>> > something gets expanded badly in the sed expression that makes  
>> it not
>> > match what I want, hence it doesn't remove the unwanted path for  
>> every
>> > file that is found. (see the part saying "src/pdmtl/src: No such  
>> file
>> > or directory") This is quite funky even though it doesn't even  
>> build
>> > anything ! ;-)
>> >
>> > alex
>> >
>> > ======================== makefile ==================
>> > all: pdmtl_install
>> >
>> > # remove these 3 variables
>> > abstractions_src = src
>> > objectsdir = objects
>> > helpdir = help
>> >
>> > # pdmtl
>> > PDMTL_NAME = pdmtl
>> > pdmtl_install:
>> >       install -d $(objectsdir)/$(PDMTL_NAME)
>> >       for dir in `find $(abstractions_src)/$(PDMTL_NAME) -type d  
>> | grep -v
>> > 'examples' | sed 's,$(abstractions_src)/$(PDMTL_NAME)/,,'`; do \
>> >               install -d $(objectsdir)/$(PDMTL_NAME)/$$dir; \
>> >               for fil in `find $(abstractions_src)/$(PDMTL_NAME)/ 
>> $$dir -name
>> > '*.pd' | grep -v '-help' | sed
>> > "s,$(abstractions_src)/$(PDMTL_NAME)/\$$dir/,,"`; do \
>> >                       install -p $(abstractions_src)/$ 
>> (PDMTL_NAME)/$$dir/$$fil
>> > $(objectsdir)/$(PDMTL_NAME)/$$dir; \
>> >               done; \
>> >       done
>> >       install -d $(helpdir)/$(PDMTL_NAME)
>> >       for dir in `find $(abstractions_src)/$(PDMTL_NAME) -type d  
>> | sed
>> > 's,$(abstractions_src)/$(PDMTL_NAME)/,,'`; do \
>> >               install -d $(helpdir)/$(PDMTL_NAME)/$$dir; \
>> >               for fil in `find $(abstractions_src)/$(PDMTL_NAME)/ 
>> $$dir -type f |
>> > grep '\.mov\|\.jpg\|\.ttf\|\.keys\|\.wav\|\-help\.pd' | sed
>> > "s,$(abstractions_src)/$(PDMTL_NAME)/\$$dir/,,"`; do \
>> >                       install -p $(abstractions_src)/$ 
>> (PDMTL_NAME)/$$dir/$$fil
>> > $(helpdir)/$(PDMTL_NAME)/$$dir; \
>> >               done; \
>> >       done
>> >       done
>> >       @echo Done installing the Pure Data Montreal Abstractions  
>> library
>> >
>> > ======================== output ===============
>> >
>> > install       -d objects/pdmtl
>> > for dir in `find src/pdmtl -type d | grep -v 'examples' | sed
>> > 's,src/pdmtl/,,'`; do \
>> >               install -d objects/pdmtl/$dir; \
>> >               for fil in `find src/pdmtl/$dir -name '*.pd' |  
>> grep -v '-help' | sed
>> > "s,src/pdmtl/\$dir/,,"`; do \
>> >                       install -p src/pdmtl/$dir/$fil objects/ 
>> pdmtl/$dir; \
>> >               done; \
>> >       done
>> > find: src/pdmtl/src: No such file or directory
>> > install       -d help/pdmtl
>> > for dir in `find src/pdmtl -type d | sed 's,src/pdmtl/,,'`; do \
>> >               install -d help/pdmtl/$dir; \
>> >               for fil in `find src/pdmtl/$dir -type f | grep
>> > '\.mov\|\.jpg\|\.ttf\|\.keys\|\.wav\|\-help\.pd' | sed
>> > "s,src/pdmtl/\$dir/,,"`; do \
>> > /bin/sh: Syntax error: end of file unexpected (expecting "done")
>> > make: *** [pdmtl_install] Error 2
>> >
>> >
>> > ======================================
>> >
>> >
>> >
>> > 2007/3/26, Alexandre Quessy <listes at sourcelibre.com>:
>> >> Something like this ?
>> >> ----------------
>> >>
>> >> all: pdmtl
>> >> PDMTL_NAME = pdmtl
>> >> abstractions_src = .
>> >> pdmtl_install:
>> >>         install -d $(objectsdir)/$(PDMTL_NAME)
>> >>         install -d $(helpdir)/$(PDMTL_NAME)
>> >>         for dir in `find $(abstractions_src)$(PDMTL_NAME) -type d
>> >> | grep -v
>> >> 'examples'`; do \
>> >>                 install -d $(objectsdir)/$(PDMTL_NAME)/$$dir; \
>> >>                 for f in `find $(abstractions_src)$(PDMTL_NAME)/$
>> >> $dir -name '*.pd' |
>> >> grep -v '-help'`; do \
>> >>                         install -p $$f $(objectsdir)/$ 
>> (PDMTL_NAME)/
>> >> $$dir; \
>> >>                         done; \
>> >>                 done; \
>> >>         for dir in `find $(abstractions_src)$(PDMTL_NAME) -type
>> >> d`; do \
>> >>                 install -d $(helpdir)/$(PDMTL_NAME)/$$dir; \
>> >>                 for typ in '.mov' '.jpg' '.ttf' '.keys' '.wav' '-
>> >> help.pd'; do \
>> >>                         for f in `find $(abstractions_src)$
>> >> (PDMTL_NAME)/$$dir -name $$typ`; do \
>> >>                                 install -p $$f $(helpdir)/$
>> >> (PDMTL_NAME)/$$dir; \
>> >>                                 done; \
>> >>                         done; \
>> >>                 done;
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> 2007/3/23, Hans-Christoph Steiner <hans at eds.org>:
>> >> >
>> >> > Makefiles are largely tied to bourne shell scripts, so that
>> >> would be
>> >> > the preferred scripting language with Makefiles.  You can write
>> >> > bourne shell code right into the Makefile.  For directory  
>> recursion
>> >> > or pattern matching, check out these files:
>> >> >
>> >> > externals/Makefile - $(wildcard ...) and $(shell sed ...)
>> >> > pd/src/makefile.in - for dir in $(shell ...)
>> >> >
>> >> > And others too
>> >> >
>> >> > .hc
>> >> >
>> >> > On Mar 22, 2007, at 2:57 AM, Alexandre Quessy wrote:
>> >> >
>> >> > > Hi all,
>> >> > > I want to add the pdmtl abstractions in the CVS. (I have a
>> >> developper
>> >> > > account.) Our library uses  many directories so that our
>> >> abstractions
>> >> > > names look like [generate/adsr~] and [seq/liner], for
>> >> instance. Now,
>> >> > > having several directories that might (will) change over time
>> >> makes it
>> >> > > a bit longer to write a Makefile entry to make it part of the
>> >> > > pd-extended build system. Is there somewhere a Makefile syntax
>> >> to make
>> >> > > it automagic ? Otherwise, this could be a ($shell ) thing with
>> >> a find
>> >> > > and a bunch of grep. Other solution : generate the makefile
>> >> with a
>> >> > > Python script, for instance. Anyone has a quick solution for
>> >> this ?
>> >> > >
>> >> > > Other point: I need to put this in the abstractions part of
>> >> the CVS,
>> >> > > right ? I would rather put it in externals, but if you
>> >> insist... ;)
>> >> > >
>> >> > > Thanks for helping. By the way, this structure is a kind of a
>> >> proposal
>> >> > > for a system to classify externals and abstractions by what
>> >> they do,
>> >> > > not by they author's name. See http://pdmtl.goto10.org for
>> >> more infos.
>> >> > >
>> >> > > --
>> >> > > Alexandre Quessy
>> >> > > http://alexandre.quessy.net
>> >> > >
>> >> > > _______________________________________________
>> >> > > PD-dev mailing list
>> >> > > PD-dev at iem.at
>> >> > > http://lists.puredata.info/listinfo/pd-dev
>> >> >
>> >> >
>> >> >
>> >> >
>> >>  
>> ---------------------------------------------------------------------
>> >> ---
>> >> > ----
>> >> >
>> >> >                    ¡El pueblo unido jamás será vencido!
>> >> >
>> >> >
>> >> >
>> >>
>> >>
>> >> --
>> >> Alexandre Quessy
>> >> http://alexandre.quessy.net
>> >>
>> >
>> >
>> > --
>> > Alexandre Quessy
>> > http://alexandre.quessy.net
>>
>>
>>
>> --------------------------------------------------------------------- 
>> ---
>> ----
>>
>> I have the audacity to believe that peoples everywhere can have three
>> meals a day for their bodies, education and culture for their minds,
>> and dignity, equality and freedom for their spirits.      - Martin
>> Luther King, Jr.
>>
>>
>>
>
>
> -- 
> Alexandre Quessy
> http://alexandre.quessy.net



------------------------------------------------------------------------ 
----

All information should be free.  - the hacker ethic








More information about the Pd-dev mailing list