aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--abstractions/Makefile178
-rw-r--r--abstractions/README126
2 files changed, 204 insertions, 100 deletions
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 <hans@at.or.at>
#
+#==============================================================================#
# 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