aboutsummaryrefslogtreecommitdiff
path: root/externals
diff options
context:
space:
mode:
Diffstat (limited to 'externals')
-rw-r--r--externals/Makefile219
-rw-r--r--[-rwxr-xr-x]externals/Makefile.buildlayout (renamed from externals/build/Makefile.buildlayout)25
-rw-r--r--externals/build/TODO20
-rw-r--r--externals/build/doc/makefile108
4 files changed, 257 insertions, 115 deletions
diff --git a/externals/Makefile b/externals/Makefile
new file mode 100644
index 00000000..5da699bf
--- /dev/null
+++ b/externals/Makefile
@@ -0,0 +1,219 @@
+#==============================================================================#
+#
+# Centralized build system for "externals".
+#
+# see README for instructions <hans@at.or.at>
+#
+#==============================================================================#
+
+# TODO: maybe this should be moved to the root like all the others
+
+CWD := $(shell pwd)
+
+# these are setup to be overridden by the packages/Makefile
+SRC_ROOT_DIR = $(CWD)/..
+INSTALL_PREFIX = $(CWD)/build
+BUILDLAYOUT_DIR = $(CWD)
+
+# default target
+all: objects
+
+.SUFFIXES: .$(EXTENSION)
+
+
+include $(BUILDLAYOUT_DIR)/Makefile.buildlayout
+
+
+# these are sent to all of the various Makefiles so that they all copy their
+# output to the same directory tree
+DEST_PATHS = BUILDLAYOUT_DIR=$(BUILDLAYOUT_DIR) \
+ SRC_ROOT_DIR=$(SRC_ROOT_DIR) \
+ INSTALL_PREFIX=$(INSTALL_PREFIX)
+
+#==============================================================================#
+#
+# COMPILE TARGETS
+#
+#==============================================================================#
+
+objects: objects_$(OS_NAME)
+ @echo "Compiling objects for $(OS_NAME) aka $(UNAME)"
+# try it this way so that it'll recognize files that have already been built
+ cd $(EXTERNALS_SRC)/build/$(OS_NAME) && make -k
+
+# these targets are for platform-specific needs
+objects_darwin:
+
+objects_linux:
+
+objects_win:
+
+objects_unknown:
+# this target is for "everything else"
+
+#==============================================================================#
+#
+# INSTALL TARGETS
+#
+#==============================================================================#
+
+IEMABS_NAME = iemabs
+IEMLIB_NAME = iemlib
+PMPD_NAME = pmpd
+applications_install: $(APPLICATIONS_DEST)
+# iemlib
+ install -d $(APPLICATIONS_DEST)/$(IEMLIB_NAME)
+ install -p $(EXTERNALS_SRC)/iemlib/examples/*.* \
+ $(APPLICATIONS_DEST)/$(IEMLIB_NAME)
+# PMDP examples
+ install -d $(APPLICATIONS_DEST)/$(PMPD_NAME)
+ install -p $(EXTERNALS_SRC)/pmpd/exemples/*.pd $(APPLICATIONS_DEST)/$(PMPD_NAME)
+
+
+docs_install: $(HELP_DEST)
+#------------------------------------------------------------------------------#
+# all standard objs' help files
+# it had to be broken up because the list is soo long
+ install -p \
+ $(EXTERNALS_SRC)/OSCx/doc/*.pd \
+ $(EXTERNALS_SRC)/aenv~/*.pd \
+ $(EXTERNALS_SRC)/arraysize/*.pd \
+ $(EXTERNALS_SRC)/beatpipe/*.pd \
+ $(EXTERNALS_SRC)/control/*/*.pd \
+ $(EXTERNALS_SRC)/bbogart/chaos/tools/*.pd \
+ $(EXTERNALS_SRC)/bbogart/*/*.pd \
+ $(EXTERNALS_SRC)/creb/doc/*.pd \
+ $(HELP_DEST)
+ install -p \
+ $(EXTERNALS_SRC)/creb/doc/examples/*.pd \
+ $(EXTERNALS_SRC)/cxc/reference/*.pd \
+ $(EXTERNALS_SRC)/dfx/*/*.pd \
+ $(EXTERNALS_SRC)/ext13/doc/*.pd \
+ $(EXTERNALS_SRC)/ggee/*/*-help.pd \
+ $(EXTERNALS_SRC)/gem2pdp/*.pd \
+ $(EXTERNALS_SRC)/ff/*.pd \
+ $(EXTERNALS_SRC)/freeverb~/*.pd \
+ $(EXTERNALS_SRC)/hcs/*-help.pd \
+ $(HELP_DEST)
+ install -p \
+ $(EXTERNALS_SRC)/hcs/*/doc/*.pd \
+ $(EXTERNALS_SRC)/hcs/hid/examples/*.pd \
+ $(EXTERNALS_SRC)/hcs/pan/*-help.pd \
+ $(EXTERNALS_SRC)/iem/*/*/*-help.pd \
+ $(EXTERNALS_SRC)/markex/*.pd \
+ $(EXTERNALS_SRC)/motex/*.pd \
+ $(EXTERNALS_SRC)/nusmuk/line3/*.pd\
+ $(HELP_DEST)
+ install -p \
+ $(EXTERNALS_SRC)/pdogg/*/*.pd \
+ $(EXTERNALS_SRC)/plugin~/*.pd \
+ $(EXTERNALS_SRC)/pmpd/help/*.pd\
+ $(EXTERNALS_SRC)/rhythm_estimator/*.p? \
+ $(EXTERNALS_SRC)/signal/*/*.pd \
+ $(EXTERNALS_SRC)/sprinkler/sprinkler-help.pd \
+ $(EXTERNALS_SRC)/susloop~/*.pd \
+ $(EXTERNALS_SRC)/svf~/*.pd \
+ $(EXTERNALS_SRC)/vbap/*.pd \
+ $(EXTERNALS_SRC)/vst/*.pd \
+ $(EXTERNALS_SRC)/zhzxh~/*.pd \
+ $(HELP_DEST)
+#------------------------------------------------------------------------------#
+# IEMlib uses its own dir and since its not maintained in CVS
+# its best not to change the objects
+ install -d $(HELP_DEST)/iemhelp
+ install -p $(EXTERNALS_SRC)/iemlib/iemhelp/*.* $(HELP_DEST)/iemhelp
+#------------------------------------------------------------------------------#
+# zexy uses its own dir
+ install -d $(HELP_DEST)/zexy
+ install -p $(EXTERNALS_SRC)/zexy/zexy.pd $(HELP_DEST)
+ install -p $(EXTERNALS_SRC)/zexy/examples/*.* $(HELP_DEST)/zexy
+#------------------------------------------------------------------------------#
+# iemmatrix uses its own dir
+ install -d $(HELP_DEST)/iemmatrix
+ install -p $(EXTERNALS_SRC)/iem/iemmatrix/doc/*.pd $(HELP_DEST)/iemmatrix
+#------------------------------------------------------------------------------#
+# mjlib [prob] conflicts with cyclone's [prob] so filter it
+ install -p $(shell ls -1 $(EXTERNALS_SRC)/mjlib/doc/*.* | \
+ grep -v 'prob') $(HELP_DEST)
+#------------------------------------------------------------------------------#
+# maxlib [split] conflicts with cyclone so filter it
+ install -p $(shell ls -1 $(EXTERNALS_SRC)/maxlib/help/*.* | \
+ grep -v 'split') $(HELP_DEST)
+
+
+manuals_install: $(MANUALS_DEST)
+# pmpd
+ install -d $(MANUALS_DEST)/$(PMPD_NAME)
+ install -p $(EXTERNALS_SRC)/pmpd/doc/pmpd.pdf/pmpd.pdf \
+ $(MANUALS_DEST)/$(PMPD_NAME)
+
+
+objects_install: objects
+ install -p $(EXTERNALS_SRC)/build/$(OS_NAME)/*.$(EXTENSION) $(OBJECTS_DEST)
+#------------------------------------------------------------------------------#
+# abstractions (i.e. objects written in Pd)
+# iemmatrix
+ install -p $(shell ls -1 $(EXTERNALS_SRC)/iem/iemmatrix/abs/*.* | \
+ grep -v '\-help.pd') $(OBJECTS_DEST)
+# IEMlib
+# iemabs still has the help patches in the old help-*.pd style
+ install -d $(OBJECTS_DEST)/$(IEMABS_NAME)
+ install -p $(shell ls -1 $(EXTERNALS_SRC)/iemlib/iemabs/*.pd | \
+ grep -v 'help') $(OBJECTS_DEST)/$(IEMABS_NAME)
+ install -d $(HELP_DEST)/$(IEMABS_NAME)
+ install -p $(EXTERNALS_SRC)/iemlib/iemabs/*help*.pd \
+ $(HELP_DEST)/$(IEMABS_NAME)
+ install -p $(EXTERNALS_SRC)/iemlib/iemabs/*.mp3 $(HELP_DEST)/$(IEMABS_NAME)
+ install -p $(EXTERNALS_SRC)/iemlib/iemabs/*.wav $(HELP_DEST)/$(IEMABS_NAME)
+ install -d $(MANUALS_DEST)/$(IEMABS_NAME)
+ install -p $(EXTERNALS_SRC)/iemlib/iemabs/*.txt \
+ $(MANUALS_DEST)/$(IEMABS_NAME)
+# vbap
+ install -p $(EXTERNALS_SRC)/vbap/graph-to-aziele.pd $(OBJECTS_DEST)
+
+
+
+install: $(OBJECTS_DEST) docs_install applications_install objects_install
+install: manuals_install
+
+#==============================================================================#
+#
+# DEVELOPER'S TARGETS
+#
+#==============================================================================#
+
+# make the symlinks necessary to simulate the installed environment
+devsymlinks:
+
+
+#==============================================================================#
+#
+# CLEAN TARGETS
+#
+#==============================================================================#
+
+applications_clean:
+ rm $(APPLICATIONS_DEST)/*/*.*
+ rmdir $(APPLICATIONS_DEST)/*
+ rmdir $(APPLICATIONS_DEST)
+
+docs_clean:
+ -rm $(HELP_DEST)/*.* $(HELP_DEST)/*/*.*
+ rmdir $(HELP_DEST)/*
+
+manuals_clean:
+ rm $(MANUALS_DEST)/*/*.*
+ rmdir $(MANUALS_DEST)/*
+ rmdir $(MANUALS_DEST)
+
+objects_clean:
+ rm $(OBJECTS_DEST)/*.pd
+ rm $(OBJECTS_DEST)/*/*.pd
+ rm $(OBJECTS_DEST)/*.$(EXTENSION)
+# for upcoming lib directory structure
+ -rm $(OBJECTS_DEST)/*/*.$(EXTENSION)
+ rmdir $(OBJECTS_DEST)/*
+
+clean: applications_clean docs_clean manuals_clean objects_clean
+ rmdir $(DOCS_DEST)/*
+ rmdir $(DOCS_DEST)
diff --git a/externals/build/Makefile.buildlayout b/externals/Makefile.buildlayout
index a2e6ef06..5a2ec76c 100755..100644
--- a/externals/build/Makefile.buildlayout
+++ b/externals/Makefile.buildlayout
@@ -25,6 +25,30 @@
#
# <hans@at.or.at>
+#------------------------------------------------------------------------------#
+# PLATFORM-SPECIFIC SETTINGS
+#------------------------------------------------------------------------------#
+# which OS to compile for
+UNAME := $(shell uname -s)
+ifeq ($(UNAME),Linux)
+ OS_NAME = linux
+ EXTENSION = pd_linux
+else
+ ifeq ($(UNAME),Darwin)
+ OS_NAME = darwin
+ EXTENSION = pd_darwin
+ else
+ ifeq (MINGW,$(findstring MINGW,$(UNAME)))
+ OS_NAME = win
+ EXTENSION = dll
+ else
+ OS_NAME = unknown
+ EXTENSION = so
+ $(warning WARNING: unknown environment "$(UNAME)".)
+ endif
+ endif
+endif
+
# sources
ABSTRACTIONS_SRC = $(SRC_ROOT_DIR)/abstractions
DOC_SRC = $(SRC_ROOT_DIR)/doc
@@ -64,4 +88,3 @@ $(MANUALS_DEST): $(INSTALL_PREFIX)
$(OBJECTS_DEST): $(INSTALL_PREFIX)
install -d $(OBJECTS_DEST)
-
diff --git a/externals/build/TODO b/externals/build/TODO
index 2f643ccd..e80174c8 100644
--- a/externals/build/TODO
+++ b/externals/build/TODO
@@ -1,4 +1,14 @@
+- fold externals/build/doc/makefile into externals/build/Makefile
+
+- get externals/build/src/prepend.c to compile in Pd mode, which means it will
+ have a right inlet when created without an argument
+
+- add in mtx_ objects with special characters using setup functions and
+ filenames with 0x escapes (mtx_/ and mtx_./ for example). Make sure to have
+ the objects call the correct setup function since it can change the
+ functionality
+
- fix compilation of netclient, netrec, netserver, piperead~, pipewrite~
- include mp3 externals from iem_mp3 and unauthorized and make mp3*.libs files
@@ -17,9 +27,7 @@
externals/build/PLATFORM directory. The makefiles will use both:
`test -f $*.libs && cat $*.libs` `test -f ../src/$*.libs && cat ../src/$*.libs`
-- make MinGW makefile for "win" so that the GNU Makefile method will be
- standard on all platforms.
-
-- do symlink aliases in externals/build/src/makefile.common
-
-- write externals/build/doc/standardize-help.sh
+- add these to the build system:
+ PDContainer
+ ann
+ grh
diff --git a/externals/build/doc/makefile b/externals/build/doc/makefile
deleted file mode 100644
index 23a66929..00000000
--- a/externals/build/doc/makefile
+++ /dev/null
@@ -1,108 +0,0 @@
-
-#
-# makefile for copying all of the help docs into this folder for
-# inclusion into the externals packages
-#
-
-CWD := $(shell pwd)
-
-# these are setup to be overridden by the packages/Makefile
-SRC_ROOT_DIR := $(CWD)/../../..
-INSTALL_PREFIX = .
-BUILDLAYOUT_DIR = $(CWD)/..
-
-all: install
- echo "Completed externals/doc build!"
-
-include $(BUILDLAYOUT_DIR)/Makefile.buildlayout
-
-
-install: $(HELP_DEST)
-#----------------------------------------------------------------------------
-# all standard objs' help files
-# it had to be broken up because the list is soo long
- install -p \
- $(EXTERNALS_SRC)/OSCx/doc/*.pd \
- $(EXTERNALS_SRC)/control/*/*.pd \
- $(EXTERNALS_SRC)/signal/*/*.pd \
- $(EXTERNALS_SRC)/aenv~/*.pd \
- $(EXTERNALS_SRC)/arraysize/*.pd \
- $(EXTERNALS_SRC)/beatpipe/*.pd \
- $(EXTERNALS_SRC)/build/*.pd \
- $(EXTERNALS_SRC)/bbogart/chaos/tools/*.pd \
- $(EXTERNALS_SRC)/bbogart/*/*.pd \
- $(EXTERNALS_SRC)/creb/doc/*.pd \
- $(HELP_DEST)
- install -p \
- $(EXTERNALS_SRC)/creb/doc/examples/*.pd \
- $(EXTERNALS_SRC)/cxc/reference/*.pd \
- $(EXTERNALS_SRC)/dfx/*/*.pd \
- $(EXTERNALS_SRC)/ext13/doc/*.pd \
- $(EXTERNALS_SRC)/ggee/*/*-help.pd \
- $(EXTERNALS_SRC)/gem2pdp/*.pd \
- $(EXTERNALS_SRC)/ff/*.pd \
- $(EXTERNALS_SRC)/freeverb~/*.pd \
- $(EXTERNALS_SRC)/hcs/*-help.pd \
- $(HELP_DEST)
- install -p \
- $(EXTERNALS_SRC)/hcs/*/doc/*.pd \
- $(EXTERNALS_SRC)/hcs/hid/examples/*.pd \
- $(EXTERNALS_SRC)/hcs/pan/*-help.pd \
- $(EXTERNALS_SRC)/iem/*/*/*-help.pd \
- $(EXTERNALS_SRC)/markex/*.pd \
- $(EXTERNALS_SRC)/maxlib/help/*.* \
- $(EXTERNALS_SRC)/mjlib/doc/*.pd \
- $(EXTERNALS_SRC)/motex/*.pd \
- $(EXTERNALS_SRC)/nusmuk/line3/*.pd\
- $(HELP_DEST)
- install -p \
- $(EXTERNALS_SRC)/pdogg/*/*.pd \
- $(EXTERNALS_SRC)/plugin~/*.pd \
- $(EXTERNALS_SRC)/pmpd/help/*.pd\
- $(EXTERNALS_SRC)/rhythm_estimator/*.p? \
- $(EXTERNALS_SRC)/sprinkler/sprinkler-help.pd \
- $(EXTERNALS_SRC)/susloop~/*.pd \
- $(EXTERNALS_SRC)/svf~/*.pd \
- $(EXTERNALS_SRC)/vbap/*.pd \
- $(EXTERNALS_SRC)/vst/*.pd \
- $(EXTERNALS_SRC)/zhzxh~/*.pd \
- $(HELP_DEST)
-#----------------------------------------------------------------------------
-# IEMlib uses its own dir and since its not maintained in CVS
-# its best not to change the objects
- install -d $(HELP_DEST)/iemhelp
- install -p $(EXTERNALS_SRC)/iemlib/iemhelp/*.* $(HELP_DEST)/iemhelp
-#----------------------------------------------------------------------------
-# PMDP examples
- install -d $(HELP_DEST)/pmpd
-# pmpd exemples files has to go in an other directory
- install -p $(EXTERNALS_SRC)/pmpd/exemples/*.pd $(HELP_DEST)/pmpd
-# pmpd documentation
- cp -Rp $(EXTERNALS_SRC)/pmpd/doc $(HELP_DEST)/pmpd/doc
-#----------------------------------------------------------------------------
-# zexy uses its own dir
- install -d $(HELP_DEST)/zexy
- install -p $(EXTERNALS_SRC)/zexy/zexy.pd $(HELP_DEST)
- install -p $(EXTERNALS_SRC)/zexy/examples/*.* $(HELP_DEST)/zexy
-#----------------------------------------------------------------------------
-# iemmatrix uses its own dir
- install -d $(HELP_DEST)/iemmatrix
- install -p $(EXTERNALS_SRC)/iem/iemmatrix/doc/*.pd $(HELP_DEST)/iemmatrix
-
-
-#----------------------------------------------------------------------------
-# remove help files for objects that are not included due to conflicts, etc.
-#
-# mjlib [prob] conflicts with cyclone's [prob]
- rm $(HELP_DEST)/prob-help.pd
-# maxlib conflicts with cyclone
- rm $(HELP_DEST)/split-help.pd
-
-
-#----------------------------------------------------------------------------
-# this is mildly dangerous, since it just deletes everything
-clean:
- cd $(HELP_DEST) && rm -f -- *.pd *.ps *.txt test.som *~
- rm -Rf -- $(HELP_DEST)/iemhelp $(HELP_DEST)/zexy \
- $(HELP_DEST)/pmpd $(HELP_DEST)/iemmatrix
-