aboutsummaryrefslogtreecommitdiff
path: root/packages/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'packages/Makefile')
-rw-r--r--packages/Makefile322
1 files changed, 313 insertions, 9 deletions
diff --git a/packages/Makefile b/packages/Makefile
index 21d7cb96..72d94f68 100644
--- a/packages/Makefile
+++ b/packages/Makefile
@@ -2,7 +2,8 @@
#
# Centralized cross-platform build system
#
-# see README for instructions <hans@at.or.at>
+# see for instructions: http://puredata.org/docs/developer/build
+# <hans@at.or.at>
#
#==============================================================================#
@@ -14,11 +15,92 @@ BUILDLAYOUT_DIR = $(CWD)
# default target
-all: abstractions doc externals flext gem pd
+all: pd abstractions doc externals
+#all: pd abstractions doc externals flext gem
@echo "Complete build succeeded!"
include $(BUILDLAYOUT_DIR)/Makefile.buildlayout
+#==============================================================================#
+#
+# GET VERSIONS FOR RELEVANT SOFTWARE
+#
+#==============================================================================#
+
+
+PD_MAJOR_VERSION := $(shell /usr/bin/grep 'Pd version' $(PD_SRC)/src/s_main.c | \
+ sed 's/char pd_version\[\] = "Pd version \([0-9]\)\.[0-9]*[. TES]*[0-9]*[0-9extndRC.-]*\\n";/\1/')
+PD_MINOR_VERSION := $(shell /usr/bin/grep 'Pd version' $(PD_SRC)/src/s_main.c | \
+ sed 's/char pd_version\[\] = "Pd version [0-9]\.\([0-9]*\)[. TES]*\([0-9]*\)[0-9extndRC.-]*\\n";/\1/')
+PD_BUGFIX_VERSION := $(shell /usr/bin/grep 'Pd version' $(PD_SRC)/src/s_main.c | \
+ sed 's/char pd_version\[\] = "Pd version [0-9]\.[0-9]*[. TES]*\([0-9]*\)[0-9extndRC.-]*\\n";/\1/')
+PD_VERSION = $(PD_MAJOR_VERSION).$(PD_MINOR_VERSION)-$(PD_BUGFIX_VERSION)
+
+
+# release version for this distro
+PACKAGE_VERSION = extended-RC3
+PACKAGE_NAME = Pd-$(PD_VERSION)-$(PACKAGE_VERSION)
+DMG_NAME = $(PACKAGE_NAME)
+
+
+CYCLONE_MAJOR_VERSION := $(shell grep CYCLONE_VERSION \
+ $(EXTERNALS_SRC)/miXed/cyclone/build_counter | cut -d ' ' -f 3 | \
+ cut -d '"' -f 2)
+CYCLONE_RELEASE := $(shell grep CYCLONE_RELEASE \
+ $(EXTERNALS_SRC)/miXed/cyclone/build_counter | cut -d ' ' -f 3 | \
+ cut -d '"' -f 2)
+CYCLONE_BUILD := $(shell grep CYCLONE_BUILD \
+ $(EXTERNALS_SRC)/miXed/cyclone/build_counter | cut -d ' ' -f 3 | \
+ cut -d '"' -f 2)
+CYCLONE_VERSION := $(CYCLONE_MAJOR_VERSION) $(CYCLONE_RELEASE) $(CYCLONE_BUILD)
+
+
+FLEXT_MAJOR_VERSION := $(shell grep FLEXTMAJOR \
+ $(EXTERNALS_SRC)/grill/flext/buildsys/version.inc | cut -d '=' -f2)
+FLEXT_MINOR_VERSION := $(shell grep FLEXTMINOR \
+ $(EXTERNALS_SRC)/grill/flext/buildsys/version.inc | cut -d '=' -f2)
+FLEXT_MICRO_VERSION := $(shell grep FLEXTMICRO \
+ $(EXTERNALS_SRC)/grill/flext/buildsys/version.inc | cut -d '=' -f2)
+FLEXT_VERSION := $(FLEXT_MAJOR_VERSION).$(FLEXT_MINOR_VERSION).$(FLEXT_MICRO_VERSION)
+
+
+GEM_VERSION := $(shell grep "GEM_VERSION" $(GEM_SRC)/src/Base/GemVersion.h | \
+ cut -d '"' -f 2)
+
+
+MAXLIB_VERSION := $(shell grep "define VERSION" \
+ $(EXTERNALS_SRC)/maxlib/maxlib.c | cut -d '"' -f 2)
+
+
+OSC_VERSION := $(shell grep "define VERSION" $(EXTERNALS_SRC)/OSCx/src/OSC.c | \
+ cut -d '"' -f 2)
+
+
+PDP_VERSION := $(shell grep PDP_VERSION= $(EXTERNALS_SRC)/pdp/configure | \
+ cut -d '=' -f 2)
+
+
+PMPD_VERSION := $(shell grep "define VERSION" \
+ $(EXTERNALS_SRC)/pmpd/src/pmpd.c | cut -d '"' -f 2)
+
+
+TOXY_MAJOR_VERSION := $(shell grep TOXY_VERSION \
+ $(EXTERNALS_SRC)/miXed/toxy/build_counter | cut -d ' ' -f 3 | \
+ cut -d '"' -f 2)
+TOXY_RELEASE := $(shell grep TOXY_RELEASE \
+ $(EXTERNALS_SRC)/miXed/toxy/build_counter | cut -d ' ' -f 3 | \
+ cut -d '"' -f 2)
+TOXY_BUILD := $(shell grep TOXY_BUILD \
+ $(EXTERNALS_SRC)/miXed/toxy/build_counter | cut -d ' ' -f 3 | \
+ cut -d '"' -f 2)
+TOXY_VERSION := $(TOXY_MAJOR_VERSION) $(TOXY_RELEASE) $(TOXY_BUILD)
+
+
+ZEXY_VERSION := $(shell grep VERSION $(EXTERNALS_SRC)/zexy/src/zexy.h | \
+ grep -v _VERSION | cut -d ' ' -f 3 | cut -d '"' -f 2)
+
+
+
# 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) \
@@ -26,6 +108,7 @@ DEST_PATHS = BUILDLAYOUT_DIR=$(BUILDLAYOUT_DIR) \
INSTALL_PREFIX=$(INSTALL_PREFIX) \
UNAME=$(UNAME)
+
#==============================================================================#
#
# BUILD TARGETS
@@ -51,7 +134,13 @@ externals:
#------------------------------------------------------------------------------
# flext
flext:
-
+# nusmuk
+ cd $(EXTERNALS_SRC)/nusmuk/msd && $(EXTERNALS_SRC)/grill/flext/build.sh \
+ pd gcc
+ cd $(EXTERNALS_SRC)/nusmuk/msd2D && $(EXTERNALS_SRC)/grill/flext/build.sh \
+ pd gcc
+ cd $(EXTERNALS_SRC)/nusmuk/msd3D && $(EXTERNALS_SRC)/grill/flext/build.sh \
+ pd gcc
#------------------------------------------------------------------------------
# Gem
@@ -60,7 +149,44 @@ gem:
#------------------------------------------------------------------------------
# pd
+# pd's makefile has some of its own variables that need to be remapped
+# this relies on patches/build_vars_4_makefile.in.patch <hans@at.or.at>
+DESTDIR = ""
+ifeq ($(OS_NAME),darwin)
+ LIBPD_DEST = $(INSTALL_PREFIX)
+ LIBBIN_DEST = $(BIN_DEST)
+else
+ ifeq ($(OS_NAME),win)
+ LIBPD_DEST = $(INSTALL_PREFIX)
+ LIBBIN_DEST = $(BIN_DEST)
+ else
+ LIBPD_DEST = $(INSTDIR)/lib/pd
+ LIBBIN_DEST = $(LIB_DEST)/pd/bin
+ endif
+endif
+
+PD_DEST_PATHS = $(DEST_PATHS) DESTDIR=$(DESTDIR) \
+ LIBPD_DEST=$(LIBPD_DEST) \
+ LIBBIN_DEST=$(LIBBIN_DEST)
+
+PD_CONFIGURE_FLAGS =
+PD_EXTRA_FLAGS =
+
+# Pd sometimes needs a specific autoconf, which is labeled differently on different
+# machines
+#PD_AUTOCONF := ${shell ( test -x "`which autoconf-2.59`" && echo autoconf-2.59 ) || echo autoconf }
+PD_AUTOCONF = autoconf
+
+
pd:
+ echo "DESTDIR $(DESTDIR) LIBBIN_DEST $(LIBBIN_DEST)"
+ echo "DEST_PATHS $(DEST_PATHS)"
+ echo "PD_DEST_PATHS $(PD_DEST_PATHS)"
+ echo "PD_EXTRA_FLAGS $(PD_EXTRA_FLAGS)"
+ cd $(PD_SRC)/src/ && $(PD_AUTOCONF)
+ cd $(PD_SRC)/src && ./configure $(PD_CONFIGURE_FLAGS) && \
+ make $(PD_DEST_PATHS) $(PD_EXTRA_FLAGS)
+
#==============================================================================#
#
@@ -75,7 +201,8 @@ abstractions_install:
#------------------------------------------------------------------------------
# doc
-doc_install:
+doc_install:
+ cd $(DOC_SRC) && make $(DEST_PATHS) install
#------------------------------------------------------------------------------
@@ -87,6 +214,14 @@ externals_install:
#------------------------------------------------------------------------------
# flext_install
flext_install:
+# nusmuk
+ cd $(EXTERNALS_SRC)/nusmuk/msd && $(EXTERNALS_SRC)/grill/flext/build.sh \
+ pd gcc install
+ cd $(EXTERNALS_SRC)/nusmuk/msd2D && $(EXTERNALS_SRC)/grill/flext/build.sh \
+ pd gcc install
+ cd $(EXTERNALS_SRC)/nusmuk/msd3D && $(EXTERNALS_SRC)/grill/flext/build.sh \
+ pd gcc install
+#TODO: need to add nusmuk/editor
#------------------------------------------------------------------------------
@@ -96,17 +231,182 @@ gem_install:
#------------------------------------------------------------------------------
# pd
-pd_install:
+pd_install: pd
+ cd $(PD_SRC)/src && \
+ make $(PD_DEST_PATHS) $(PD_EXTRA_FLAGS) install
#------------------------------------------------------------------------------
# install
-install: abstractions_install doc_install externals_install flext_install
-install: gem_install pd_install
+install: pd_install abstractions_install doc_install externals_install
+#install: flext_install gem_install
@echo "Complete install succeeded!"
+
+
+#==============================================================================#
+#
+# GENERATE TEXT FILES FOR PACKAGE
+#
#==============================================================================#
+
+LICENSE_FILE = $(INSTALL_PREFIX)/License.html
+license:
+ # generate HTML version of License
+ touch $(LICENSE_FILE)
+ echo "<html><body>" >> "$(LICENSE_FILE)"
+ echo "<h3>(Parts of this package can be used under the Pd/BSD license)</h3>" >> "$(LICENSE_FILE)"
+ echo "<font size=\"-1\">" >> "$(LICENSE_FILE)"
+ cat "$(EXTERNALS_SRC)/creb/COPYING" | sed -e 's/^$$/\<P\>/g' >> "$(LICENSE_FILE)"
+ echo "</font></body></html>" >> $(LICENSE_FILE)
+ install -p "$(PD_SRC)/LICENSE.txt" "$(INSTALL_PREFIX)/PD LICENSE.txt"
+
+
+
+WELCOME_FILE = $(INSTALL_PREFIX)/Welcome.html
+welcome:
+ touch $(WELCOME_FILE)
+ echo "<html><body><p><p>" >> $(WELCOME_FILE)
+ echo "<CENTER><IMG SRC=\"logo.jpg\">" >> $(WELCOME_FILE)
+ echo "<h2>Version $(PD_VERSION)</h2>" >> $(WELCOME_FILE)
+ echo "<p>written by Miller S. Puckette</p></CENTER>" >> $(WELCOME_FILE)
+ echo "<FONT SIZE=\"-1\">" >> $(WELCOME_FILE)
+ echo "<p>`grep -A9 ACKNOWLEDG $(PD_SRC)/README.txt`</p>" >> $(WELCOME_FILE)
+ echo "</FONT>" >> $(WELCOME_FILE)
+ echo "</body></html>" >> $(WELCOME_FILE)
+
+
+
+README_FILE = $(INSTALL_PREFIX)/ReadMe.html
+readme:
+ echo $(CYCLONE_RELEASE)
+ -rm $(README_FILE)
+ touch $(README_FILE)
+ echo "<html>" >> $(README_FILE)
+ echo "<head>" >> $(README_FILE)
+ echo "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />" >> $(README_FILE)
+ echo "</head>" >> $(README_FILE)
+ echo "<body>" >> $(README_FILE)
+ echo "<h2>Pure Data $(PD_VERSION)-$(PACKAGE_VERSION)</h2>" >> $(README_FILE)
+ echo "<p>Pd is a free real-time computer music software package resembling Max. It provides a patchable environment for audio analysis, synthesis, and processing, with a rich set of multimedia capabilities. You can get Pd for Linux, Windows, MacOS X, BSD, or IRIX.</p>" >> $(README_FILE)
+ echo "<p>For more information, go to: <a href=\"http://puredata.org\" target=\"pd\">http://puredata.org</a></p>" >> $(README_FILE)
+ echo "<h3>Installation</h3>" >> $(README_FILE)
+ echo "<p>To install Pd, drag the Pd.app to anywhere in your hard disk.</p>" >> $(README_FILE)
+ echo "<p>To install Gem, pmpd, xsample, dyn~, and vasp support, copy <code>org.puredata.pd.plist</code> to <code>~/Library/Preferences</code> (<code>~</code> means your home folder). WARNING: this will overwrite any existing Pd preferences!</p>" >> $(README_FILE)
+ echo "<h3>Pure Data CVS Developers</h3>" >> $(README_FILE)
+# this may seem whack, but it generates the list of developers from the SourceForge site:
+ curl 'http://sourceforge.net/project/memberlist.php?group_id=55736' | grep -A2 -e '<td>' | sed 's|\(href="\)|target="w" \1http://sourceforge.net|' >> $(README_FILE)
+ echo "</p>" >> $(README_FILE)
+ echo "<p>" >> $(README_FILE)
+ echo "Many others not listed have contributed their time and effort, this is just a list of the current developers in the SourceForge project. But really, every Pd user is a developer and is encouraged to contribute to the CVS repository." >> $(README_FILE)
+ echo "</p>" >> $(README_FILE)
+ echo "<h3>License</h3>" >> $(README_FILE)
+ echo "<p>" >> $(README_FILE)
+ echo "The Pd core is licensed under a <a href="PD%20LICENSE.txt">BSD license</a>, almost every other part of this package is available under the <a href="http://www.gnu.org/copyleft/gpl.html" target="gpl">GNU GPL</a>. A couple packages have BSD-style licenses too." >> $(README_FILE)
+ echo "</p>" >> $(README_FILE)
+ echo "<h3>Included Versions</h3>" >> $(README_FILE)
+ echo "<p>These externals are all included from the Pd CVS repository:</p>" >> $(README_FILE)
+ echo "<ul>" >> $(README_FILE)
+ echo "<li>pure data: $(PD_VERSION) " >> $(README_FILE)
+ echo "<li>cyclone: $(CYCLONE_VERSION)" >> $(README_FILE)
+ echo "<li>flext: $(FLEXT_VERSION)" >> $(README_FILE)
+ echo "<li>gem: $(GEM_VERSION)" >> $(README_FILE)
+ echo "<li>iemlib: `date +20%y.%m.%d`" >> $(README_FILE)
+#
+# these cause this error:
+# Makefile:308: *** unterminated call to function `shell': missing `)'. Stop.
+#
+ echo "<li>maxlib: $(MAXLIB_VERSION)" >> $(README_FILE)
+ echo "<li>osc: $(OSC_VERSION)" >> $(README_FILE)
+ echo "<li>pmpd: $(PMPD_VERSION)" >> $(README_FILE)
+ echo "<li>pd-abstractions: `date +20%y.%m.%d`" >> $(README_FILE)
+ echo "<li>pd-doc: `date +20%y.%m.%d`" >> $(README_FILE)
+ echo "<li>pd-externals: `date +20%y.%m.%d`" >> $(README_FILE)
+ echo "<li>pddp: `date +20%y.%m.%d`" >> $(README_FILE)
+ echo "<li>pdp: $(PDP_VERSION)" >> $(README_FILE)
+ echo "<li>toxy: $(TOXY_VERSION)" >> $(README_FILE)
+ echo "<li>unauthorized: `date +20%y.%m.%d`" >> $(README_FILE)
+ echo "<li>zexy: $(ZEXY_VERSION)" >> $(README_FILE)
+ echo "</ul>" >> $(README_FILE)
+ echo "(this package was built on `date`) <BR>" >> $(README_FILE)
+ echo "</body></html>" >> $(README_FILE)
+
+
+
+#==============================================================================#
+#
+## FINAL ASSEMBLY
+#
+#==============================================================================#
+
+
+#----------------------------------------------------------------------------
+# DOC_FORMAT
+doc_format:
+# clean out cruft files
+ -find $(INSTALL_PREFIX) -name .DS_Store -delete
+ -find $(INSTALL_PREFIX) -name '*.*.bak' -delete
+# run script to move help-*.pd files to *-help.pd according to the standard
+ cd $(DOCS_DEST) && \
+ $(SCRIPTS_SRC)/convert-help-to-standard.sh
+#----------------------------------------------------------------------------
+# remove write perms to prevent people form editing the helpfiles by mistake
+ cd $(DOCS_DEST) && chmod a-wx */*.pd */*/*.pd
+ cd $(DOCS_DEST) && chmod a-w ????*/*.* *.txt
+
+
+
+#==============================================================================#
+#
+# DEVELOPER TARGETS
+#
+#==============================================================================#
+
+devsymlinks:
+
+
+
+patch_pd:
+# change Pd's version number to reflect the extended build
+ sed -i.bak 's/\(pd_version\[\] = "Pd version \)[0-9extndRC.-]*/\1$(PD_VERSION)-$(PACKAGE_VERSION)/' $(PD_SRC)/src/s_main.c
+# apply all platform-neutral patches
+ for patch in $(wildcard $(CWD)/patches/*.patch); do \
+ echo "Applying $$patch"; \
+ cd $(PD_SRC)/src/ && patch -p0 < $$patch; \
+ done
+# apply all platform-specific patches
+ for patch in $(wildcard $(CWD)/patches/$(OS_NAME)/*.patch); do \
+ echo "Applying $$patch"; \
+ cd $(PD_SRC)/src/ && patch -p0 < $$patch; \
+ done
+ -rm -f -- $(PD_SRC)/src/configure $(PD_SRC)/src/makefile
+ @echo " "
+ @echo "patching succeeded!"
+
+unpatch_pd:
+# this sed pattern won't work with TEST versions
+ cd $(PD_SRC)/src && \
+ sed -i.bak 's/\(pd_version\[\] = "Pd version [0-9.]*\)[0-9extndRC.-]*/\1/' \
+ s_main.c
+# apply all platform-neutral patches
+ for patch in $(wildcard $(CWD)/patches/*.patch); do \
+ echo "Applying $$patch"; \
+ cd $(PD_SRC)/src/ && patch -p0 -R < $$patch; \
+ done
+# apply all platform-specific patches
+ for patch in $(wildcard $(CWD)/patches/$(OS_NAME)/*.patch); do \
+ echo "Applying $$patch"; \
+ cd $(PD_SRC)/src/ && patch -p0 -R < $$patch; \
+ done
+ -rm -f -- $(PD_SRC)/src/configure $(PD_SRC)/src/makefile
+ @echo " "
+ @echo "unpatching succeeded!"
+
+
+#==============================================================================#
+#
# CLEAN TARGETS
+#
#==============================================================================#
abstractions_clean:
-cd $(ABSTRACTIONS_SRC) && make $(DEST_PATHS) clean
@@ -126,9 +426,13 @@ gem_clean:
pd_clean:
+ -cd $(PD_SRC) && make $(PD_DEST_PATHS) clean
+
-# these targets are all from Makefile.buildlayout:
-# install_clean cruft_clean
+# these targets are all from Makefile.buildlayout: install_clean cruft_clean
clean: abstractions_clean doc_clean externals_clean flext_clean
clean: gem_clean pd_clean
echo "Complete clean finished."
+
+
+distclean: clean cruft_clean