From 518cfd25c5e6d58e6eb0bfc25c59c3488723d6d5 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 18 Nov 2005 07:08:35 +0000 Subject: it builds everything that the previous one did, plus the doc/makefile was folded into this one; next, make it actually do the C compiling instead of having the separate makefiles for each platform svn path=/trunk/; revision=3961 --- externals/Makefile | 219 +++++++++++++++++++++++++++++++++++ externals/Makefile.buildlayout | 90 ++++++++++++++ externals/build/Makefile.buildlayout | 67 ----------- externals/build/TODO | 20 +++- externals/build/doc/makefile | 108 ----------------- 5 files changed, 323 insertions(+), 181 deletions(-) create mode 100644 externals/Makefile create mode 100644 externals/Makefile.buildlayout delete mode 100755 externals/build/Makefile.buildlayout delete mode 100644 externals/build/doc/makefile 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 +# +#==============================================================================# + +# 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/Makefile.buildlayout b/externals/Makefile.buildlayout new file mode 100644 index 00000000..5a2ec76c --- /dev/null +++ b/externals/Makefile.buildlayout @@ -0,0 +1,90 @@ + +## Makefile.buildlayout + +# This file should be exactly the same in each section of the CVS. A copy is +# kept in each section of the CVS so that each section will be self-contained. +# To use it, you need to include it in your Makefile (i.e. "include +# Makefile.buildlayout") and then define $(INSTALL_PREFIX) and $(SRC_ROOT_DIR). +# +# $(SRC_ROOT_DIR) is the base directory of src tree, equivalent to the root +# level of the pure-data CVS. +# +# $(INSTALL_PREFIX) is the base directory to where all of the resulting files +# will be copied. +# +# This file is currently located in these places: +# abstractions +# externals/build +# packages +# +# it will be going here too: +# doc +# extensions +# gem +# pd +# +# + +#------------------------------------------------------------------------------# +# 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 +EXTERNALS_SRC = $(SRC_ROOT_DIR)/externals +FLEXT_SRC = $(SRC_ROOT_DIR)/externals/grill/flext +GEM_SRC = $(SRC_ROOT_DIR)/Gem +GEMLIBS_SRC = $(SRC_ROOT_DIR)/GemLibs +PD_SRC = $(SRC_ROOT_DIR)/pd +SCRIPTS_SRC = $(SRC_ROOT_DIR)/scripts + + +# destinations +APPLICATIONS_DEST = $(DOCS_DEST)/examples +DOCS_DEST = $(INSTALL_PREFIX)/doc +OBJECTS_DEST = $(INSTALL_PREFIX)/extra +HELP_DEST = $(DOCS_DEST)/5.reference +MANUALS_DEST = $(DOCS_DEST)/manuals + +#------------------------------------------------------------------------------# +# DIRECTORY STRUCTURE TARGETS +#------------------------------------------------------------------------------# +# first make sure that the directory structure is setup +$(INSTALL_PREFIX): + install -d $(INSTALL_PREFIX) + +$(APPLICATIONS_DEST): $(INSTALL_PREFIX) + install -d $(APPLICATIONS_DEST) + +$(DOCS_DEST): $(INSTALL_PREFIX) + install -d $(DOCS_DEST) + +$(HELP_DEST): $(INSTALL_PREFIX) + install -d $(HELP_DEST) + +$(MANUALS_DEST): $(INSTALL_PREFIX) + install -d $(MANUALS_DEST) + +$(OBJECTS_DEST): $(INSTALL_PREFIX) + install -d $(OBJECTS_DEST) diff --git a/externals/build/Makefile.buildlayout b/externals/build/Makefile.buildlayout deleted file mode 100755 index a2e6ef06..00000000 --- a/externals/build/Makefile.buildlayout +++ /dev/null @@ -1,67 +0,0 @@ - -## Makefile.buildlayout - -# This file should be exactly the same in each section of the CVS. A copy is -# kept in each section of the CVS so that each section will be self-contained. -# To use it, you need to include it in your Makefile (i.e. "include -# Makefile.buildlayout") and then define $(INSTALL_PREFIX) and $(SRC_ROOT_DIR). -# -# $(SRC_ROOT_DIR) is the base directory of src tree, equivalent to the root -# level of the pure-data CVS. -# -# $(INSTALL_PREFIX) is the base directory to where all of the resulting files -# will be copied. -# -# This file is currently located in these places: -# abstractions -# externals/build -# packages -# -# it will be going here too: -# doc -# extensions -# gem -# pd -# -# - -# sources -ABSTRACTIONS_SRC = $(SRC_ROOT_DIR)/abstractions -DOC_SRC = $(SRC_ROOT_DIR)/doc -EXTERNALS_SRC = $(SRC_ROOT_DIR)/externals -FLEXT_SRC = $(SRC_ROOT_DIR)/externals/grill/flext -GEM_SRC = $(SRC_ROOT_DIR)/Gem -GEMLIBS_SRC = $(SRC_ROOT_DIR)/GemLibs -PD_SRC = $(SRC_ROOT_DIR)/pd -SCRIPTS_SRC = $(SRC_ROOT_DIR)/scripts - - -# destinations -APPLICATIONS_DEST = $(DOCS_DEST)/examples -DOCS_DEST = $(INSTALL_PREFIX)/doc -OBJECTS_DEST = $(INSTALL_PREFIX)/extra -HELP_DEST = $(DOCS_DEST)/5.reference -MANUALS_DEST = $(DOCS_DEST)/manuals - -#------------------------------------------------------------------------------# -# DIRECTORY STRUCTURE TARGETS -#------------------------------------------------------------------------------# -# first make sure that the directory structure is setup -$(INSTALL_PREFIX): - install -d $(INSTALL_PREFIX) - -$(APPLICATIONS_DEST): $(INSTALL_PREFIX) - install -d $(APPLICATIONS_DEST) - -$(DOCS_DEST): $(INSTALL_PREFIX) - install -d $(DOCS_DEST) - -$(HELP_DEST): $(INSTALL_PREFIX) - install -d $(HELP_DEST) - -$(MANUALS_DEST): $(INSTALL_PREFIX) - install -d $(MANUALS_DEST) - -$(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 - -- cgit v1.2.1