diff options
Diffstat (limited to 'externals')
-rw-r--r-- | externals/Makefile | 219 | ||||
-rw-r--r--[-rwxr-xr-x] | externals/Makefile.buildlayout (renamed from externals/build/Makefile.buildlayout) | 25 | ||||
-rw-r--r-- | externals/build/TODO | 20 | ||||
-rw-r--r-- | externals/build/doc/makefile | 108 |
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 - |