From 74bd7bf8131ba8890bb9a503129526126696b067 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 16 Nov 2005 18:23:47 +0000 Subject: added MYLIBRARY_NAME variables svn path=/trunk/; revision=3945 --- abstractions/Makefile | 178 ++++++++++++++++++++++++++++++-------------------- abstractions/README | 126 +++++++++++++++++++++++++++-------- 2 files changed, 204 insertions(+), 100 deletions(-) (limited to 'abstractions') diff --git a/abstractions/Makefile b/abstractions/Makefile index 1e79f3c5..f5a97068 100644 --- a/abstractions/Makefile +++ b/abstractions/Makefile @@ -1,8 +1,10 @@ +#==============================================================================# # # Centralized build system for "abstractions". # # see README for instructions # +#==============================================================================# # these are setup to be overridden by the packages/*/Makefiles SRC_ROOT_DIR := $(shell pwd)/.. @@ -13,9 +15,11 @@ all: objects applications include Makefile.dirs -#------------------------------------------------------------------------------# +#==============================================================================# +# # OVERARCHING BUILD TARGETS -#------------------------------------------------------------------------------# +# +#==============================================================================# final_setup: chmod -R ugo-w $(INSTALL_PREFIX) @@ -28,125 +32,152 @@ applications: $(APPLICATIONS_DEST) $(MANUALS_DEST) applications: applications_rradical applications_keyboardkeys applications_gyre -#------------------------------------------------------------------------------# +#==============================================================================# +# # PROJECT TARGETS -#------------------------------------------------------------------------------# -#------------------------------ +# +#==============================================================================# + +#------------------------------------------------------------------------------- # GYRE +GYRE_NAME = gyre objects_gyre: - install -d $(OBJECTS_DEST)/gyre + install -d $(OBJECTS_DEST)/$(GYRE_NAME) install -p $(ABSTRACTIONS_SRC)/audionerd/GYRE/gyre.*.pd \ - $(OBJECTS_DEST)/gyre - install -d $(MANUALS_DEST)/gyre + $(OBJECTS_DEST)/$(GYRE_NAME) + install -d $(MANUALS_DEST)/$(GYRE_NAME) install -p $(ABSTRACTIONS_SRC)/audionerd/GYRE/gyre.html \ - $(MANUALS_DEST)/gyre + $(MANUALS_DEST)/$(GYRE_NAME) applications_gyre: - install -d $(APPLICATIONS_DEST)/gyre + install -d $(APPLICATIONS_DEST)/$(GYRE_NAME) install -p $(ABSTRACTIONS_SRC)/audionerd/GYRE/gyre.pd \ - $(APPLICATIONS_DEST)/GYRE + $(APPLICATIONS_DEST)/$(GYRE_NAME) -#------------------------------ +#------------------------------------------------------------------------------- # keyboardkeys +KEYBOARDKEYS_NAME = keyboardkeys objects_keyboardkeys: - install -d $(OBJECTS_DEST)/keyboardkeys - install -p $(ABSTRACTIONS_SRC)/keyboardkeys/keyboardkeys/*.pd \ - $(OBJECTS_DEST)/keyboardkeys - install -d $(HELP_DEST)/keyboardkeys - install -p $(ABSTRACTIONS_SRC)/keyboardkeys/doc/*-help.pd \ - $(HELP_DEST)/keyboardkeys + install -d $(OBJECTS_DEST)/$(KEYBOARDKEYS_NAME) + install -p $(ABSTRACTIONS_SRC)/$(KEYBOARDKEYS_NAME)/abs/*.pd \ + $(OBJECTS_DEST)/$(KEYBOARDKEYS_NAME) + install -d $(HELP_DEST)/$(KEYBOARDKEYS_NAME) + install -p $(ABSTRACTIONS_SRC)/$(KEYBOARDKEYS_NAME)/doc/*-help.pd \ + $(HELP_DEST)/$(KEYBOARDKEYS_NAME) applications_keyboardkeys: - install -d $(APPLICATIONS_DEST)/keyboardkeys - install -p $(ABSTRACTIONS_SRC)/keyboardkeys/keyboard_main.pd \ - $(APPLICATIONS_DEST)/keyboardkeys + install -d $(APPLICATIONS_DEST)/$(KEYBOARDKEYS_NAME) + install -p $(ABSTRACTIONS_SRC)/$(KEYBOARDKEYS_NAME)/keyboard_main.pd \ + $(APPLICATIONS_DEST)/$(KEYBOARDKEYS_NAME) -#------------------------------ +#------------------------------------------------------------------------------- # la-kitchen +LA-KITCHEN_NAME = la-kitchen objects_la-kitchen: - install -d $(OBJECTS_DEST)/la-kitchen + install -d $(OBJECTS_DEST)/$(LA-KITCHEN_NAME) install -p $(shell ls -1 $(ABSTRACTIONS_SRC)/La-kitchen/*.pd | \ - grep -v '\-help.pd') $(OBJECTS_DEST)/la-kitchen - install -d $(HELP_DEST)/la-kitchen + grep -v '\-help.pd') $(OBJECTS_DEST)/$(LA-KITCHEN_NAME) + install -d $(HELP_DEST)/$(LA-KITCHEN_NAME) install -p $(ABSTRACTIONS_SRC)/La-kitchen/*-help.pd \ - $(HELP_DEST)/la-kitchen - install -d $(MANUALS_DEST)/la-kitchen + $(HELP_DEST)/$(LA-KITCHEN_NAME) + install -d $(MANUALS_DEST)/$(LA-KITCHEN_NAME) install -p $(ABSTRACTIONS_SRC)/La-kitchen/readme.txt \ - $(MANUALS_DEST)/la-kitchen + $(MANUALS_DEST)/$(LA-KITCHEN_NAME) -#------------------------------ +#------------------------------------------------------------------------------- # memento +MEMENTO_NAME = memento objects_memento: - install -d $(OBJECTS_DEST)/memento + install -d $(OBJECTS_DEST)/$(MEMENTO_NAME) install -p $(shell ls -1 $(ABSTRACTIONS_SRC)/rradical/memento/*.pd | \ - grep -v '\-help.pd') $(OBJECTS_DEST)/memento - install -d $(HELP_DEST)/memento - install -p $(ABSTRACTIONS_SRC)/rradical/memento/*-help.pd $(HELP_DEST)/memento - install -d $(MANUALS_DEST)/memento + grep -v '\-help.pd') $(OBJECTS_DEST)/$(MEMENTO_NAME) + install -d $(HELP_DEST)/$(MEMENTO_NAME) + install -p $(ABSTRACTIONS_SRC)/rradical/memento/*-help.pd \ + $(HELP_DEST)/$(MEMENTO_NAME) + install -d $(MANUALS_DEST)/$(MEMENTO_NAME) install -p $(ABSTRACTIONS_SRC)/rradical/memento/tutorial/*.* \ - $(MANUALS_DEST)/memento - install -d $(APPLICATIONS_DEST)/memento_tutorial + $(MANUALS_DEST)/$(MEMENTO_NAME) + install -d $(APPLICATIONS_DEST)/$(MEMENTO_NAME) install -p $(ABSTRACTIONS_SRC)/rradical/memento/examples/*.* \ - $(APPLICATIONS_DEST)/memento_tutorial + $(APPLICATIONS_DEST)/$(MEMENTO_NAME) -#------------------------------ +#------------------------------------------------------------------------------- # nqpoly -objects_nqpoly: - install -d $(OBJECTS_DEST)/nqpoly~ - install -p $(shell ls -1 $(ABSTRACTIONS_SRC)/nqpoly/nqpoly~/*.pd | \ - grep -v '\-help.pd') $(OBJECTS_DEST)/nqpoly~ - install -d $(OBJECTS_DEST)/nqpoly4 - install -p $(shell ls -1 $(ABSTRACTIONS_SRC)/nqpoly/nqpoly4/*.pd | \ - grep -v '\-help.pd') $(OBJECTS_DEST)/nqpoly4 - install -d $(HELP_DEST)/nqpoly~ - install -p $(ABSTRACTIONS_SRC)/nqpoly/nqpoly~/*.pd $(HELP_DEST)/nqpoly~ - install -d $(HELP_DEST)/nqpoly4 - install -p $(ABSTRACTIONS_SRC)/nqpoly/nqpoly4/*.pd $(HELP_DEST)/nqpoly4 +objects_nqpoly: objects_nqpoly~ objects_nqpoly4 +# make a common target for the manuals so they are in one place install -d $(MANUALS_DEST)/nqpoly install -p $(ABSTRACTIONS_SRC)/nqpoly/*.html $(MANUALS_DEST)/nqpoly install -p $(ABSTRACTIONS_SRC)/nqpoly/nqpoly~/readme.txt \ $(MANUALS_DEST)/nqpoly/nqpoly~.txt - install -d $(APPLICATIONS_DEST)/nqpoly~ + +NQPOLY_NAME = nqpoly~ +objects_nqpoly~: + install -d $(OBJECTS_DEST)/$(NQPOLY_NAME) install -p $(shell ls -1 $(ABSTRACTIONS_SRC)/nqpoly/nqpoly~/*.pd | \ - grep -v '\-help.pd') $(APPLICATIONS_DEST)/nqpoly~ - install -d $(APPLICATIONS_DEST)/nqpoly4 - install -p $(shell ls -1 $(ABSTRACTIONS_SRC)/nqpoly/nqpoly4/*.pd | \ - grep -v '\-help.pd') $(APPLICATIONS_DEST)/nqpoly4 + grep -v '\-help.pd') $(OBJECTS_DEST)/$(NQPOLY_NAME) + install -d $(HELP_DEST)/$(NQPOLY_NAME) +# all of the patches should be installed into help since [nqpoly~] needs to be +# in the same directory as the patches its manipulating + install -p $(ABSTRACTIONS_SRC)/nqpoly/nqpoly~/*.pd \ + $(HELP_DEST)/$(NQPOLY_NAME) + install -d $(APPLICATIONS_DEST)/$(NQPOLY_NAME) + install -p $(shell ls -1 $(ABSTRACTIONS_SRC)/nqpoly/nqpoly~/*.pd | \ + grep -v '\-help.pd') $(APPLICATIONS_DEST)/$(NQPOLY_NAME) -#------------------------------ +NQPOLY4_NAME = nqpoly4 +objects_nqpoly4: + install -d $(OBJECTS_DEST)/$(NQPOLY4_NAME) + install -p $(shell ls -1 $(ABSTRACTIONS_SRC)/nqpoly/nqpoly4/*.pd | \ + grep -v '\-help.pd') $(OBJECTS_DEST)/$(NQPOLY4_NAME) + install -d $(HELP_DEST)/$(NQPOLY4_NAME) +# all of the patches should be installed into help since [nqpoly4] needs to be +# in the same directory as the patches its manipulating + install -p $(ABSTRACTIONS_SRC)/nqpoly/nqpoly4/*.pd $(HELP_DEST)/$(NQPOLY4_NAME) + install -d $(APPLICATIONS_DEST)/$(NQPOLY4_NAME) + install -p $(shell ls -1 $(ABSTRACTIONS_SRC)/nqpoly/nqpoly4/*.pd | \ + grep -v '\-help.pd') $(APPLICATIONS_DEST)/$(NQPOLY4_NAME) + +#------------------------------------------------------------------------------- # nusmuk +NUSMUK_NAME = nusmuk objects_nusmuk: - install -d $(OBJECTS_DEST)/nusmuk + install -d $(OBJECTS_DEST)/$(NUSMUK_NAME) install -p $(shell ls -1 $(ABSTRACTIONS_SRC)/nusmuk/*.* | \ - grep -v '\-help.pd') $(OBJECTS_DEST)/nusmuk - install -d $(HELP_DEST)/nusmuk - install -p $(ABSTRACTIONS_SRC)/nusmuk/*-help.pd $(HELP_DEST)/nusmuk + grep -v '\-help.pd') $(OBJECTS_DEST)/$(NUSMUK_NAME) + install -d $(HELP_DEST)/$(NUSMUK_NAME) + install -p $(ABSTRACTIONS_SRC)/nusmuk/*-help.pd \ + $(HELP_DEST)/$(NUSMUK_NAME) -#------------------------------ +#------------------------------------------------------------------------------- # parazit install -d $(OBJECTS_DEST) install -p $(ABSTRACTIONS_SRC)/parazit/parazit.pd $(OBJECTS_DEST) -#------------------------------ +#------------------------------------------------------------------------------- # RRADical +RRADICAL_NAME = rradical objects_rradical: - install -d $(OBJECTS_DEST)/rradical + install -d $(OBJECTS_DEST)/$(RRADICAL_NAME) applications_rradical: - install -d $(APPLICATIONS_DEST)/RRADical - install -p $(ABSTRACTIONS_SRC)/rradical/usecases/*.* $(APPLICATIONS_DEST)/RRADical - cp -rp $(ABSTRACTIONS_SRC)/rradical/usecases/showcase $(APPLICATIONS_DEST)/RRADical/ + install -d $(APPLICATIONS_DEST)/$(RRADICAL_NAME) + install -p $(ABSTRACTIONS_SRC)/rradical/usecases/*.* \ + $(APPLICATIONS_DEST)/$(RRADICAL_NAME) + cp -rp $(ABSTRACTIONS_SRC)/rradical/usecases/showcase \ + $(APPLICATIONS_DEST)/$(RRADICAL_NAME)/ -#------------------------------------------------------------------------------# +#==============================================================================# +# # DEVELOPER'S TARGETS -#------------------------------------------------------------------------------# +# +#==============================================================================# # make the symlinks necessary to simulate the installed environment devsymlinks: devsymlinks_keyboardkeys @@ -158,9 +189,12 @@ devsymlinks_keyboardkeys: ln -s ../keyboardkeys \ $(ABSTRACTIONS_SRC)/keyboardkeys/doc/keyboardkeys -#------------------------------------------------------------------------------# +#==============================================================================# +# # CLEAN TARGETS -#------------------------------------------------------------------------------# +# +#==============================================================================# + objects_clean: -rm -rf $(OBJECTS_DEST) $(HELP_DEST) @@ -174,9 +208,11 @@ clean: applications_clean objects_clean rmdir $(DOCS_DEST) $(INSTALL_PREFIX) -#------------------------------------------------------------------------------# +#==============================================================================# +# # LEGACY TARGETS -#------------------------------------------------------------------------------# +# +#==============================================================================# # this is a legacy clean target to get rid of cruft darwin_pkg_clean: -sudo rm -Rf installroot/ $(PKG_PREFIX)*.pkg/ diff --git a/abstractions/README b/abstractions/README index e6c16ebf..0864a156 100644 --- a/abstractions/README +++ b/abstractions/README @@ -1,3 +1,4 @@ + Collection of abstractions for Pd ================================= @@ -5,38 +6,98 @@ This is a collection of abstractions for Pd. Pd is a language that is very low-level. There are several concepts that need a certain amount of work in order to be implemented. Instead of reimplementing these higher level concepts again and again, this collection of abstractions try to establish a layer of -Pd abstractions that should grow into a reusable library that can be shared by -Pd users. +Pd abstractions that are reusable libraries that can be shared by Pd users. + What kind of abstractions? ========================== - One of the problems with organizing all this is the vague definition of - "abstraction" and "external". "application" and "object" are much more - useful distinctions. Therefore, there are two sections to the build system, - one for Pd patches which are objects, and another for Pd patches that are - "applications" (also examples, demos, etc.). +One of the problems with organizing all this is the vague definition of +"abstraction" and "external". "application" and "object" are much more useful +distinctions. Therefore, there are two sections to the build system, one for +Pd patches which are objects, and another for Pd patches that are +"applications" (also examples, demos, etc.). -How to add your abstractions ? -============================== -First rule for adding an abstraction is that it is written in Pd, without -using externals whenever possible. Otherwise, it should work with the -Pd-extended builds. +Criteria for Adding Patches +=========================== + +Patches that are added to this section ideally should be written using only +core Pd objects, without using externals whenever possible. If that if not +possible, then it should work with the externals included with the Pd-extended +builds. You can either send your abstraction with the request for adding it to the -pd-dev list, or if you are a Pd developer already, you can add them by -yourself. +pd-dev list, or if you are a member of the SourceForge project already, you +can add them by yourself. + +If you have questions, please post them to the pd-dev list. You can find all +of the mailing lists here: http://puredata.org/community/lists + +We are working on a style guide, you can see the current rendition in CVS in +doc/pddp/pddp_style_guide.pd + + +How to add your library of patches +================================== + +The best way to start is to copy the complete section of an existing library, +like memento. Then do a case-preserving search-and-replace, replacing +"memento" with the name of your library. Editors such as emacs will make the +replacements will preversing the case of the text it is replacing. For +example, replacing "memento" with "mylibrary" will make these changes: + +MEMENTO_NAME = memento +objects_memento: + +to this: + +MYLIBRARY_NAME = mylibrary +objects_mylibrary: + +If your editor does not do this, you will need to do two separate +search-and-replace actions, one for all lowercase, and another for all +uppercase. + +Once you have your section setup after the search-and-replace, you need to +edit the paths of the files that you want to include. The paths will be the +only text written out. All of the installation paths will be Makefile +variables. Check the below example: + + install -d $(HELP_DEST)/$(MEMENTO_NAME) + install -p $(ABSTRACTIONS_SRC)/rradical/memento/*-help.pd \ + $(HELP_DEST)/$(MEMENTO_NAME) + +becomes: + + install -d $(HELP_DEST)/$(MYLIBRARY_NAME) + install -p $(ABSTRACTIONS_SRC)/mylibrary/*-help.pd \ + $(HELP_DEST)/$(MYLIBRARY_NAME) + + +Also, since it is common to store the help patches in the same directory as +the object patchs, you can use this pattern to exclude the help patches from +being copied to $(OBJECTS_DEST): + + install -p $(shell ls -1 $(ABSTRACTIONS_SRC)/mylibrary/*.pd | \ + grep -v '\-help.pd') $(OBJECTS_DEST)/$(MYLIBRARY_NAME) + -If you have questions about how, feel free to ask. -I hope that we can come up with a style guide for abstractions at some point, -but we need to gather experience how this should look like before. Explanations of Terms ===================== +MYLIBRARY_NAME = mylibrary + + At the top of each library's section in the Makefile, you will see a + variable MYLIBRARY_NAME. This variable is the name used to install the + abstractions. This should be all lowercase since its used in the loading + of objects within Pd (e.g. [mylibrary/myobject]). + + $(APPLICATIONS_DEST): + If your project is an application or patch that is meant to be run directly, then it should go into this directory in its own subdirectory. This directory is a browsable collection of applications. If your @@ -45,16 +106,6 @@ $(APPLICATIONS_DEST): good example of this. This is the only place were mixed or upper case is appropriate in directory names. -$(OBJECTS_DEST): - If your project consists of objects that are meant to be reused in other - patches rather than used as a application, then they should go into this - directory. - - They should be in a directory with a distinct name. This will be the name - of your library of objects, which can be added to the path, or called - directly (e.g. [mylibrary/myobject]). - - The subdirectory name (e.g. mylibrary) should always be all lowercase. $(DOCS_DEST): All help patches should go into this directory in a subdirectory with the @@ -63,7 +114,9 @@ $(DOCS_DEST): The subdirectory name (e.g. mylibrary) should always be all lowercase. + $(MANUALS_DEST): + If you have any other kinds of documentation, like a text or HTML manual, or a Pd-based tutorial, then it should go into this directory, again in a subdirectory with the same name as the library or application. Using the @@ -72,14 +125,29 @@ $(MANUALS_DEST): The subdirectory name (e.g. mylibrary) should always be all lowercase. -"objects" target: + +$(OBJECTS_DEST): + + If your project consists of objects that are meant to be reused in other + patches rather than used as a application, then they should go into this + directory. + + They should be in a directory with a distinct name. This will be the name + of your library of objects, which can be added to the path, or called + directly (e.g. [mylibrary/myobject]). + + The subdirectory name (e.g. mylibrary) should always be all lowercase. + + +"objects" targets To add your objects to this build system, first make your own target and add it to the "objects" target. For example: for the RRADical objects, there is a target called "objects_rradical:" which does everything needed to install the RRADical objects. This includes installing help patches and any other documentation. -"applications" target: + +"applications" targets: This target is meant for any patch that is intended to be opened up and used, played, ran, etc. The RRADical showcase is a good example -- cgit v1.2.1