From 6c271c12023d3aff3e5043a456b156b68042738d Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Sat, 26 Nov 2005 01:52:47 +0000 Subject: added in Jamie's dlopn patch so I can use his binaries; fixed a number of bugs reported on the list; added platform-specific noncvs handling svn path=/trunk/; revision=4035 --- abstractions/Makefile | 17 + abstractions/Makefile.buildlayout | 8 +- doc/Makefile | 27 + doc/Makefile.buildlayout | 8 +- doc/TODO | 2 + externals/Makefile | 927 ++++++++++++++-------------- externals/Makefile.buildlayout | 8 +- externals/build/TODO | 5 + packages/Makefile | 58 +- packages/Makefile.buildlayout | 4 +- packages/TODO | 26 +- packages/darwin_app/Info.plist.in | 5 +- packages/darwin_app/Makefile | 56 +- packages/darwin_app/TODO | 9 +- packages/patches/darwin/darwin_dlopen.patch | 65 ++ packages/patches/extended-help-menu.patch | 298 ++++++--- packages/win32_inno/TODO | 2 + 17 files changed, 903 insertions(+), 622 deletions(-) create mode 100644 packages/patches/darwin/darwin_dlopen.patch diff --git a/abstractions/Makefile b/abstractions/Makefile index 3c5e2cc5..a71fff6c 100644 --- a/abstractions/Makefile +++ b/abstractions/Makefile @@ -90,6 +90,7 @@ objects_la-kitchen: install -p $(shell ls -1 $(ABSTRACTIONS_SRC)/La-kitchen/*.pd | \ grep -v '\-help.pd') $(OBJECTS_DEST)/$(LA-KITCHEN_NAME) $(SCRIPTS_SRC)/generate-libdir-metafile.sh $(OBJECTS_DEST) $(LA-KITCHEN_NAME) \ + --author "Charles Verron" \ --description "a collection of objects working with sensors" install -d $(HELP_DEST)/$(LA-KITCHEN_NAME) install -p $(ABSTRACTIONS_SRC)/La-kitchen/*-help.pd \ @@ -204,6 +205,22 @@ objects_pddp: RRADICAL_NAME = rradical objects_rradical: install -d $(OBJECTS_DEST)/$(RRADICAL_NAME) + $(SCRIPTS_SRC)/generate-libdir-metafile.sh $(OBJECTS_DEST) $(RRADICAL_NAME) \ + --author "Frank Barknecht" \ + --license "GNU GPL" + install -d $(OBJECTS_DEST)/$(RRADICAL_NAME)/control + install -p $(shell ls -1 $(ABSTRACTIONS_SRC)/rradical/control/*.* | \ + grep -v '\-help.pd') $(OBJECTS_DEST)/$(RRADICAL_NAME)/control + install -d $(OBJECTS_DEST)/$(RRADICAL_NAME)/effects + install -p $(shell ls -1 $(ABSTRACTIONS_SRC)/rradical/effects/*.* | \ + grep -v '\-help.pd') $(OBJECTS_DEST)/$(RRADICAL_NAME)/effects + install -d $(OBJECTS_DEST)/$(RRADICAL_NAME)/instruments + install -p $(shell ls -1 $(ABSTRACTIONS_SRC)/rradical/instruments/*.* | \ + grep -v '\-help.pd') $(OBJECTS_DEST)/$(RRADICAL_NAME)/instruments + install -d $(OBJECTS_DEST)/$(RRADICAL_NAME)/stuff + install -p $(shell ls -1 $(ABSTRACTIONS_SRC)/rradical/stuff/*.* | \ + grep -v '\-help.pd') $(OBJECTS_DEST)/$(RRADICAL_NAME)/stuff + applications_rradical: install -d $(APPLICATIONS_DEST)/$(RRADICAL_NAME) diff --git a/abstractions/Makefile.buildlayout b/abstractions/Makefile.buildlayout index 921a7959..12df9df5 100755 --- a/abstractions/Makefile.buildlayout +++ b/abstractions/Makefile.buildlayout @@ -19,12 +19,12 @@ # # This file is currently located in these places: # abstractions -# externals/build +# extensions +# externals # packages # doc # # it will be going here too: -# extensions # gem # pd # @@ -65,10 +65,10 @@ endif # sources ABSTRACTIONS_SRC = $(SRC_ROOT_DIR)/abstractions DOC_SRC = $(SRC_ROOT_DIR)/doc +EXTENSIONS_SRC = $(SRC_ROOT_DIR)/extensions 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 PACKAGES_SRC = $(SRC_ROOT_DIR)/packages PD_SRC = $(SRC_ROOT_DIR)/pd SCRIPTS_SRC = $(SRC_ROOT_DIR)/scripts @@ -130,7 +130,7 @@ PD_VERSION = $(PD_MAJOR_VERSION).$(PD_MINOR_VERSION).$(PD_BUGFIX_VERSION) # release version for this distro -PACKAGE_VERSION = extended-RC4 +PACKAGE_VERSION = extended-RC5 PACKAGE_NAME = Pd-$(PD_VERSION)-$(PACKAGE_VERSION) diff --git a/doc/Makefile b/doc/Makefile index 3b3e51a3..e66a73db 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -64,6 +64,33 @@ pd_fileformat_install: $(MANUALS_DEST) curl http://student-kmt.hku.nl/%7Etjeerd/pd/pd_fileformat.html > \ $(MANUALS_DEST)/$(PD_FILEFORMAT_NAME)/Pd_File_Format.html +#------------------------------------------------------------------------------# +# EXTERNALS-HOWTO +EXTERNALS-HOWTO_NAME = Externals-HOWTO +externals-howto_install: $(MANUALS_DEST) + install -d $(MANUALS_DEST)/$(EXTERNALS-HOWTO_NAME) + curl http://iem.kug.ac.at/pd/externals-HOWTO/pd-externals-HOWTO.pdf > \ + $(MANUALS_DEST)/$(EXTERNALS-HOWTO_NAME)/pd-externals-HOWTO.pdf + curl http://iem.kug.ac.at/pd/externals-HOWTO/node1.html > \ + $(MANUALS_DEST)/$(EXTERNALS-HOWTO_NAME)/node1.html + curl http://iem.kug.ac.at/pd/externals-HOWTO/node2.html > \ + $(MANUALS_DEST)/$(EXTERNALS-HOWTO_NAME)/node2.html + curl http://iem.kug.ac.at/pd/externals-HOWTO/node3.html > \ + $(MANUALS_DEST)/$(EXTERNALS-HOWTO_NAME)/node3.html + curl http://iem.kug.ac.at/pd/externals-HOWTO/node4.html > \ + $(MANUALS_DEST)/$(EXTERNALS-HOWTO_NAME)/node.html + curl http://iem.kug.ac.at/pd/externals-HOWTO/node5.html > \ + $(MANUALS_DEST)/$(EXTERNALS-HOWTO_NAME)/node5.html + curl http://iem.kug.ac.at/pd/externals-HOWTO/node6.html > \ + $(MANUALS_DEST)/$(EXTERNALS-HOWTO_NAME)/node6.html + curl http://iem.kug.ac.at/pd/externals-HOWTO/node7.html > \ + $(MANUALS_DEST)/$(EXTERNALS-HOWTO_NAME)/node7.html + curl http://iem.kug.ac.at/pd/externals-HOWTO/node8.html > \ + $(MANUALS_DEST)/$(EXTERNALS-HOWTO_NAME)/node8.html + curl http://iem.kug.ac.at/pd/externals-HOWTO/node9.html > \ + $(MANUALS_DEST)/$(EXTERNALS-HOWTO_NAME)/node9.html + curl http://iem.kug.ac.at/pd/externals-HOWTO/node10.html > \ + $(MANUALS_DEST)/$(EXTERNALS-HOWTO_NAME)/node10.html #------------------------------------------------------------------------------# diff --git a/doc/Makefile.buildlayout b/doc/Makefile.buildlayout index 921a7959..12df9df5 100644 --- a/doc/Makefile.buildlayout +++ b/doc/Makefile.buildlayout @@ -19,12 +19,12 @@ # # This file is currently located in these places: # abstractions -# externals/build +# extensions +# externals # packages # doc # # it will be going here too: -# extensions # gem # pd # @@ -65,10 +65,10 @@ endif # sources ABSTRACTIONS_SRC = $(SRC_ROOT_DIR)/abstractions DOC_SRC = $(SRC_ROOT_DIR)/doc +EXTENSIONS_SRC = $(SRC_ROOT_DIR)/extensions 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 PACKAGES_SRC = $(SRC_ROOT_DIR)/packages PD_SRC = $(SRC_ROOT_DIR)/pd SCRIPTS_SRC = $(SRC_ROOT_DIR)/scripts @@ -130,7 +130,7 @@ PD_VERSION = $(PD_MAJOR_VERSION).$(PD_MINOR_VERSION).$(PD_BUGFIX_VERSION) # release version for this distro -PACKAGE_VERSION = extended-RC4 +PACKAGE_VERSION = extended-RC5 PACKAGE_NAME = Pd-$(PD_VERSION)-$(PACKAGE_VERSION) diff --git a/doc/TODO b/doc/TODO index 94a60cfc..4de5bfae 100644 --- a/doc/TODO +++ b/doc/TODO @@ -1,4 +1,6 @@ +- add externals HOWTO to manuals/Pd + - create Makefile for Pd-extended build system - add pd-fileformat doc: http://student-kmt.hku.nl/%7Etjeerd/pd/pd_fileformat.html diff --git a/externals/Makefile b/externals/Makefile index ee9ce75d..1679d981 100644 --- a/externals/Makefile +++ b/externals/Makefile @@ -1,456 +1,471 @@ -#==============================================================================# -# -# 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 -default: all - -.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 -# -#==============================================================================# - -#------------------------------------------------------------------------------# -# BUILD -all: pre_all_$(OS_NAME) creb cyclone iemabs iemlib iemmatrix pddp pdp pmpd \ - toxy vbap zexy - @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 that run before objects: -pre_all_darwin: - -pre_all_linux: - -pre_all_win: - -pre_all_unknown: -# this target is for "everything else" - - -#------------------------------------------------------------------------------# -# INSTALL -install: $(OBJECTS_DEST) help_install objects_install unfiltered_install \ - creb_install cyclone_install iemabs_install iemabs_install iemmatrix_install \ - pddp_install pdp_install pmpd_install toxy_install vbap_install zexy_install - @echo " " - @echo "externals install succeeded!" - -objects_install: - cd $(EXTERNALS_SRC)/build/$(OS_NAME)/ && \ - install -p *.$(EXTENSION) $(OBJECTS_DEST) - - -#==============================================================================# -# -# INSTALL TARGETS -# -#==============================================================================# - - -help_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)/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) -#------------------------------------------------------------------------------# -# 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) - - - -#==============================================================================# -# -# PROJECT TARGETS -# -#==============================================================================# - - -#------------------------------------------------------------------------------# -# TEMPLATE -TEMPLATE_NAME=template -template: - - -template_install: template - install -d $(OBJECTS_DEST)/$(TEMPLATE_NAME) - install -d $(HELP_DEST)/$(TEMPLATE_NAME) - install -d $(MANUALS_DEST)/$(TEMPLATE_NAME) - install -d $(APPLICATIONS_DEST)/$(TEMPLATE_NAME) - - -#------------------------------------------------------------------------------# -# CREB -CREB_NAME=creb -creb: - - -creb_install: creb - install -d $(OBJECTS_DEST)/$(CREB_NAME) - install -p $(EXTERNALS_SRC)/creb/abs/*.pd $(OBJECTS_DEST)/$(CREB_NAME) - install -d $(HELP_DEST)/$(CREB_NAME) - install -p -m0644 $(EXTERNALS_SRC)/creb/doc/examples/*.* \ - $(HELP_DEST)/$(CREB_NAME) -# install -d $(MANUALS_DEST)/$(CREB_NAME) -# install -d $(APPLICATIONS_DEST)/$(CREB_NAME) - - - -#------------------------------------------------------------------------------# -# CYCLONE -CYCLONE_NAME=cyclone -# cyclone is compiled straight into $(OUT_DIR) -CYCLONE_OUT_DIR=$(OBJECTS_DEST)/$(CYCLONE_NAME) -cyclone: - - -cyclone_install: cyclone - install -d $(OBJECTS_DEST)/$(CYCLONE_NAME) - $(SCRIPTS_SRC)/generate-libdir-metafile.sh $(OBJECTS_DEST) $(CYCLONE_NAME) \ - --author "Kzrysztof Czaja" \ - --license "BSD" \ - --description "a library for porting and running Max/MSP patches in Pd" - cd $(EXTERNALS_SRC)/miXed/cyclone && $(MAKE) OUT_DIR=$(CYCLONE_OUT_DIR) -# install "cyclist" command line app with pd - install -d $(BIN_DEST) -# this doesn't build in the right place yet -# install -p -m0755 $(CYCLONE_OUT_DIR)/cyclist $(BIN_DEST) && \ -# rm $(CYCLONE_OUT_DIR)/cyclist -# rename cyclone lib since it will pre-empt libdir functionality - mv $(CYCLONE_OUT_DIR)/cyclone.$(EXTENSION) \ - $(CYCLONE_OUT_DIR)/cyclonelib.$(EXTENSION) - install -d $(HELP_DEST)/$(CYCLONE_NAME) - install -p $(EXTERNALS_SRC)/miXed/doc/help/cyclone/*.* \ - $(HELP_DEST)/$(CYCLONE_NAME) -# install -d $(MANUALS_DEST)/$(CYCLONE_NAME) - install -d $(APPLICATIONS_DEST)/$(CYCLONE_NAME) - install -p $(EXTERNALS_SRC)/miXed/test/cyclone/*.* \ - $(APPLICATIONS_DEST)/$(CYCLONE_NAME) - - - - - -#------------------------------------------------------------------------------# -# IEMABS -IEMABS_NAME=iemabs -iemabs: - - -iemabs_install: iemabs -# 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) - - - -#------------------------------------------------------------------------------# -# IEMLIB -IEMLIB_NAME=iemlib -iemlib: - - -iemlib_install: iemlib -# install -d $(OBJECTS_DEST)/$(IEMLIB_NAME) -# install -d $(HELP_DEST)/$(IEMLIB_NAME) - install -d $(HELP_DEST)/iemhelp - install -p $(EXTERNALS_SRC)/iemlib/iemhelp/*.* $(HELP_DEST)/iemhelp -# install -d $(MANUALS_DEST)/$(IEMLIB_NAME) - install -d $(APPLICATIONS_DEST)/$(IEMLIB_NAME) - install -p $(EXTERNALS_SRC)/iemlib/examples/*.* \ - $(APPLICATIONS_DEST)/$(IEMLIB_NAME) - - - -#------------------------------------------------------------------------------# -# IEMMATRIX -IEMMATRIX_NAME=iemmatrix -iemmatrix: - - -iemmatrix_install: iemmatrix - install -d $(OBJECTS_DEST)/$(IEMMATRIX_NAME) - install -p $(shell ls -1 $(EXTERNALS_SRC)/iem/iemmatrix/abs/*.* | \ - grep -v '\-help.pd') $(OBJECTS_DEST)/$(IEMMATRIX_NAME) - install -d $(HELP_DEST)/$(IEMMATRIX_NAME) - install -p $(EXTERNALS_SRC)/iem/iemmatrix/doc/*.pd \ - $(HELP_DEST)/$(IEMMATRIX_NAME) - - - -#------------------------------------------------------------------------------# -# PDDP -PDDP_NAME=pddp -# pddp is compiled straight into $(OUT_DIR) -PDDP_OUT_DIR=$(OBJECTS_DEST)/$(PDDP_NAME) -pddp: - - -pddp_install: pddp - install -d $(OBJECTS_DEST)/$(PDDP_NAME) - $(SCRIPTS_SRC)/generate-libdir-metafile.sh $(OBJECTS_DEST) $(PDDP_NAME) \ - --author "PDDP" \ - --license "BSD" \ - --description "objects for working with Tcl and Pd's Tk GUI" - cd $(EXTERNALS_SRC)/miXed/pddp && $(MAKE) OUT_DIR=$(PDDP_OUT_DIR) -# install -d $(HELP_DEST)/$(PDDP_NAME) -# install -d $(MANUALS_DEST)/$(PDDP_NAME) - install -d $(APPLICATIONS_DEST)/$(PDDP_NAME) - install -p $(EXTERNALS_SRC)/miXed/test/pddp/*.* \ - $(APPLICATIONS_DEST)/$(PDDP_NAME) - - - -#------------------------------------------------------------------------------# -# PDP -PDP_NAME=pdp -pdp: -# cd $(EXTERNALS_SRC)/pdp && ./configure && $(MAKE) -#TODO: compile pidip here -#TODO: compile gem2pdp here - -pdp_install: pdp -# install -d $(OBJECTS_DEST)/$(PDP_NAME) -# install -p $(EXTERNALS_SRC)/pdp/*.$(EXTENSION) $(OBJECTS_DEST) -# install -p $(EXTERNALS_SRC)/pidip/*.$(EXTENSION) $(OBJECTS_DEST) -# install -p $(EXTERNALS_SRC)/gem2pdp/*.$(EXTENSION) $(OBJECTS_DEST) - install -p $(EXTERNALS_SRC)/pdp/abstractions/*.pd $(OBJECTS_DEST) -# install -d $(HELP_DEST)/$(PDP_NAME) - install -p $(EXTERNALS_SRC)/pdp/doc/objects/*.* $(HELP_DEST) - install -d $(MANUALS_DEST)/$(PDP_NAME) - install -p $(EXTERNALS_SRC)/pdp/doc/reference.txt $(MANUALS_DEST)/$(PDP_NAME) - install -p $(EXTERNALS_SRC)/pdp/doc/introduction/*.* \ - $(MANUALS_DEST)/$(PDP_NAME) - install -d $(APPLICATIONS_DEST)/$(PDP_NAME) - install -p $(EXTERNALS_SRC)/pdp/doc/examples/*.* \ - $(APPLICATIONS_DEST)/$(PDP_NAME) - - - -#------------------------------------------------------------------------------# -# PMPD -PMPD_NAME=pmpd -pmpd: - - -pmpd_install: pmpd - install -d $(OBJECTS_DEST)/$(PMPD_NAME) - install -d $(HELP_DEST)/$(PMPD_NAME) - install -p $(EXTERNALS_SRC)/pmpd/help/*.pd \ - $(HELP_DEST)/$(PMPD_NAME) - install -d $(MANUALS_DEST)/$(PMPD_NAME) - install -d $(MANUALS_DEST)/$(PMPD_NAME) - install -p $(EXTERNALS_SRC)/pmpd/doc/pmpd.pdf/pmpd.pdf \ - $(MANUALS_DEST)/$(PMPD_NAME) - install -d $(APPLICATIONS_DEST)/$(PMPD_NAME) - install -p $(EXTERNALS_SRC)/pmpd/exemples/*.pd \ - $(APPLICATIONS_DEST)/$(PMPD_NAME) - - - -#------------------------------------------------------------------------------# -# TOXY -TOXY_NAME=toxy -# toxy is compiled straight into $(OUT_DIR) -TOXY_OUT_DIR=$(OBJECTS_DEST)/$(TOXY_NAME) -toxy: - - -toxy_install: toxy - install -d $(OBJECTS_DEST)/$(TOXY_NAME) - $(SCRIPTS_SRC)/generate-libdir-metafile.sh $(OBJECTS_DEST) $(TOXY_NAME) \ - --author "Kzrysztof Czaja" \ - --license "BSD" \ - --description "objects for working with Tcl and Pd's Tk GUI" - cd $(EXTERNALS_SRC)/miXed/toxy && $(MAKE) OUT_DIR=$(TOXY_OUT_DIR) - install -d $(HELP_DEST)/$(TOXY_NAME) - install -p $(EXTERNALS_SRC)/miXed/doc/help/toxy/*.* \ - $(HELP_DEST)/$(TOXY_NAME) -# install -d $(MANUALS_DEST)/$(TOXY_NAME) - install -d $(APPLICATIONS_DEST)/$(TOXY_NAME) - install -p $(EXTERNALS_SRC)/miXed/test/toxy/*.* \ - $(APPLICATIONS_DEST)/$(TOXY_NAME) - - - -#------------------------------------------------------------------------------# -# VBAP -VBAP_NAME=vbap -vbap: - - -vbap_install: vbap - install -d $(OBJECTS_DEST)/$(VBAP_NAME) -# install -d $(HELP_DEST)/$(VBAP_NAME) -# install -d $(MANUALS_DEST)/$(VBAP_NAME) -# install -d $(APPLICATIONS_DEST)/$(VBAP_NAME) - install -p $(EXTERNALS_SRC)/vbap/graph-to-aziele.pd \ - $(OBJECTS_DEST)/$(VBAP_NAME) - - - -#------------------------------------------------------------------------------# -# Zexy -ZEXY_NAME = zexy -zexy: -# zexy's new build system doesn't work with CVS layout, and most of zexy is -# included in the extrnals build system now anyway. But the abstractions -# should still be included -# cd $(EXTERNALS_SRC)/zexy/src && autoconf && ./configure && $(MAKE) - - -zexy_install: zexy - install -d $(OBJECTS_DEST)/$(ZEXY_NAME) -# install -p $(EXTERNALS_SRC)/zexy/src/*.$(EXTENSION) $(OBJECTS_DEST)/$(ZEXY_NAME) - install -p $(shell ls -1 $(EXTERNALS_SRC)/zexy/abs/*.pd | \ - grep -v '-help.pd' | sed 's/\([&<>|~]\)/\\\1/g') \ - $(OBJECTS_DEST)/$(ZEXY_NAME) - install -d $(HELP_DEST)/$(ZEXY_NAME) - install -p $(EXTERNALS_SRC)/zexy/abs/*-help.pd $(HELP_DEST)/$(ZEXY_NAME) - install -p $(EXTERNALS_SRC)/zexy/zexy.pd $(HELP_DEST) - install -p $(EXTERNALS_SRC)/zexy/examples/*.* $(HELP_DEST)/$(ZEXY_NAME) - - - -#==============================================================================# -# -# UNFILTERED PROJECT TARGETS -# -#==============================================================================# -# this is not yet organized into libdirs, but just leftover - -unfiltered_install: -#---------------------------------------------------------------------------- -# hcs - install -p $(shell ls -1 $(EXTERNALS_SRC)/hcs/*.pd | \ - grep -v '\-help.pd') $(OBJECTS_DEST) -# hid -# these don't work on Windows yet - cd $(EXTERNALS_SRC)/hcs/hid && $(MAKE) - install -p $(EXTERNALS_SRC)/hcs/hid/hid.$(EXTENSION) $(OBJECTS_DEST) - install -p $(shell ls -1 $(EXTERNALS_SRC)/hcs/hid/*.pd | \ - grep -v '\-help.pd'| grep -v '\-list.pd') $(OBJECTS_DEST) -# general - install -p $(EXTERNALS_SRC)/hcs/general/*.pd $(OBJECTS_DEST) -# pan - install -p $(shell ls -1 $(EXTERNALS_SRC)/hcs/pan/*.pd | \ - grep -v '\-help.pd') $(OBJECTS_DEST) -#---------------------------------------------------------------------------- -# OSC -# these don't work on Windows yet - cd $(EXTERNALS_SRC)/OSCx && ./configure && $(MAKE) CC=gcc - install -p $(EXTERNALS_SRC)/OSCx/doc/*.* $(HELP_DEST) - install -p $(EXTERNALS_SRC)/OSCx/src/*.$(EXTENSION) $(OBJECTS_DEST) -#---------------------------------------------------------------------------- -# unauthorized -# these don't work on Windows yet - cd $(EXTERNALS_SRC)/unauthorized && $(MAKE) - install -p $(EXTERNALS_SRC)/unauthorized/*/*.$(EXTENSION) $(OBJECTS_DEST) - install -p $(EXTERNALS_SRC)/unauthorized/*/*.pd $(HELP_DEST) - install -p $(EXTERNALS_SRC)/unauthorized/*/*.txt $(HELP_DEST) - install -p $(EXTERNALS_SRC)/unauthorized/*/*.pls $(HELP_DEST) - cp -Rfp $(EXTERNALS_SRC)/unauthorized/blinkenlights/blm $(HELP_DEST) - - -#==============================================================================# -# -# DEVELOPER'S TARGETS -# -#==============================================================================# - -# make the symlinks necessary to simulate the installed environment -devsymlinks: - - -#==============================================================================# -# -# CLEAN TARGETS -# -#==============================================================================# - -# the destination-specific clean targets are in Makefile.buildlayout -clean: install_clean - -distclean: clean cruft_clean +#==============================================================================# +# +# 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 +default: all + +.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 +# +#==============================================================================# + +#------------------------------------------------------------------------------# +# BUILD +all: pre_all_$(OS_NAME) creb cyclone iemabs iemlib iemmatrix pddp pdp pmpd \ + toxy vbap zexy + @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 that run before objects: +pre_all_darwin: + +pre_all_linux: + +pre_all_win: + +pre_all_unknown: +# this target is for "everything else" + + +#------------------------------------------------------------------------------# +# INSTALL +install: all $(OBJECTS_DEST) help_install objects_install unfiltered_install \ + creb_install cyclone_install iemabs_install iemabs_install iemmatrix_install \ + pddp_install pdp_install pmpd_install toxy_install vbap_install zexy_install + @echo " " + @echo "externals install succeeded!" + +objects_install: + cd $(EXTERNALS_SRC)/build/$(OS_NAME)/ && \ + install -p *.$(EXTENSION) $(OBJECTS_DEST) + + +#==============================================================================# +# +# INSTALL TARGETS +# +#==============================================================================# + + +help_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/comport/*/*-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)/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) +#------------------------------------------------------------------------------# +# 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) + + + +#==============================================================================# +# +# PROJECT TARGETS +# +#==============================================================================# + + +#------------------------------------------------------------------------------# +# TEMPLATE +TEMPLATE_NAME=template +template: + + +template_install: template + install -d $(OBJECTS_DEST)/$(TEMPLATE_NAME) + install -d $(HELP_DEST)/$(TEMPLATE_NAME) + install -d $(MANUALS_DEST)/$(TEMPLATE_NAME) + install -d $(APPLICATIONS_DEST)/$(TEMPLATE_NAME) + + +#------------------------------------------------------------------------------# +# CREB +CREB_NAME=creb +creb: + + +creb_install: creb + install -d $(OBJECTS_DEST)/$(CREB_NAME) + install -p $(EXTERNALS_SRC)/creb/abs/*.pd $(OBJECTS_DEST)/$(CREB_NAME) + install -d $(HELP_DEST)/$(CREB_NAME) + install -p -m0644 $(EXTERNALS_SRC)/creb/doc/examples/*.* \ + $(HELP_DEST)/$(CREB_NAME) +# install -d $(MANUALS_DEST)/$(CREB_NAME) +# install -d $(APPLICATIONS_DEST)/$(CREB_NAME) + + + +#------------------------------------------------------------------------------# +# CYCLONE +CYCLONE_NAME=cyclone +# cyclone is compiled straight into $(OUT_DIR) +CYCLONE_OUT_DIR=$(OBJECTS_DEST)/$(CYCLONE_NAME) +cyclone: + + +cyclone_install: cyclone + install -d $(OBJECTS_DEST)/$(CYCLONE_NAME) + $(SCRIPTS_SRC)/generate-libdir-metafile.sh $(OBJECTS_DEST) $(CYCLONE_NAME) \ + --author "Kzrysztof Czaja" \ + --license "BSD" \ + --description "a library for porting and running Max/MSP patches in Pd" + cd $(EXTERNALS_SRC)/miXed/cyclone && $(MAKE) OUT_DIR=$(CYCLONE_OUT_DIR) +# install "cyclist" command line app with pd + install -d $(BIN_DEST) +# this doesn't build in the right place yet +# install -p -m0755 $(CYCLONE_OUT_DIR)/cyclist $(BIN_DEST) && \ +# rm $(CYCLONE_OUT_DIR)/cyclist +# rename cyclone lib since it will pre-empt libdir functionality + mv $(CYCLONE_OUT_DIR)/cyclone.$(EXTENSION) \ + $(CYCLONE_OUT_DIR)/cyclonelib.$(EXTENSION) + install -d $(HELP_DEST)/$(CYCLONE_NAME) + install -p $(EXTERNALS_SRC)/miXed/doc/help/cyclone/*.* \ + $(HELP_DEST)/$(CYCLONE_NAME) +# install -d $(MANUALS_DEST)/$(CYCLONE_NAME) + install -d $(APPLICATIONS_DEST)/$(CYCLONE_NAME) + install -p $(EXTERNALS_SRC)/miXed/test/cyclone/*.* \ + $(APPLICATIONS_DEST)/$(CYCLONE_NAME) + + + + + +#------------------------------------------------------------------------------# +# IEMABS +IEMABS_NAME=iemabs +iemabs: + + +iemabs_install: iemabs +# iemabs still has the help patches in the old help-*.pd style + install -d $(OBJECTS_DEST)/$(IEMABS_NAME) + $(SCRIPTS_SRC)/generate-libdir-metafile.sh $(OBJECTS_DEST) $(IEMABS_NAME) \ + --description "a collection of objects written at IEM/KUG" + 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) + + + +#------------------------------------------------------------------------------# +# IEMLIB +IEMLIB_NAME=iemlib +iemlib: + + +iemlib_install: iemlib +# install -d $(OBJECTS_DEST)/$(IEMLIB_NAME) +# install -d $(HELP_DEST)/$(IEMLIB_NAME) + install -d $(HELP_DEST)/iemhelp + install -p $(EXTERNALS_SRC)/iemlib/iemhelp/*.* $(HELP_DEST)/iemhelp +# install -d $(MANUALS_DEST)/$(IEMLIB_NAME) + install -d $(APPLICATIONS_DEST)/$(IEMLIB_NAME) + install -p $(EXTERNALS_SRC)/iemlib/examples/*.* \ + $(APPLICATIONS_DEST)/$(IEMLIB_NAME) + + + +#------------------------------------------------------------------------------# +# IEMMATRIX +IEMMATRIX_NAME=iemmatrix +iemmatrix: + + +iemmatrix_install: iemmatrix + install -d $(OBJECTS_DEST)/$(IEMMATRIX_NAME) + $(SCRIPTS_SRC)/generate-libdir-metafile.sh $(OBJECTS_DEST) $(IEMMATRIX_NAME) \ + --description "objects for matrix operations and math" + mv $(OBJECTS_DEST)/mtx*.$(EXTENSION) $(OBJECTS_DEST)/$(IEMMATRIX_NAME) + install -p $(shell ls -1 $(EXTERNALS_SRC)/iem/iemmatrix/abs/*.* | \ + grep -v '\-help.pd') $(OBJECTS_DEST)/$(IEMMATRIX_NAME) + install -d $(HELP_DEST)/$(IEMMATRIX_NAME) + install -p $(EXTERNALS_SRC)/iem/iemmatrix/doc/*.pd \ + $(HELP_DEST)/$(IEMMATRIX_NAME) + + + +#------------------------------------------------------------------------------# +# PDDP +PDDP_NAME=pddp +# pddp is compiled straight into $(OUT_DIR) +PDDP_OUT_DIR=$(OBJECTS_DEST)/$(PDDP_NAME) +pddp: + + +pddp_install: pddp + install -d $(OBJECTS_DEST)/$(PDDP_NAME) + $(SCRIPTS_SRC)/generate-libdir-metafile.sh $(OBJECTS_DEST) $(PDDP_NAME) \ + --author "PDDP" \ + --license "BSD" \ + --description "objects for working with Tcl and Pd's Tk GUI" + cd $(EXTERNALS_SRC)/miXed/pddp && $(MAKE) OUT_DIR=$(PDDP_OUT_DIR) +# install -d $(HELP_DEST)/$(PDDP_NAME) +# install -d $(MANUALS_DEST)/$(PDDP_NAME) + install -d $(APPLICATIONS_DEST)/$(PDDP_NAME) + install -p $(EXTERNALS_SRC)/miXed/test/pddp/*.* \ + $(APPLICATIONS_DEST)/$(PDDP_NAME) + + + +#------------------------------------------------------------------------------# +# PDP +PDP_NAME=pdp +pdp: +# cd $(EXTERNALS_SRC)/pdp && ./configure && $(MAKE) +#TODO: compile pidip here +#TODO: compile gem2pdp here + +pdp_install: pdp +# install -d $(OBJECTS_DEST)/$(PDP_NAME) +# install -p $(EXTERNALS_SRC)/pdp/*.$(EXTENSION) $(OBJECTS_DEST) +# install -p $(EXTERNALS_SRC)/pidip/*.$(EXTENSION) $(OBJECTS_DEST) +# install -p $(EXTERNALS_SRC)/gem2pdp/*.$(EXTENSION) $(OBJECTS_DEST) + install -p $(EXTERNALS_SRC)/pdp/abstractions/*.pd $(OBJECTS_DEST) +# install -d $(HELP_DEST)/$(PDP_NAME) + install -p $(EXTERNALS_SRC)/pdp/doc/objects/*.* $(HELP_DEST) + install -d $(MANUALS_DEST)/$(PDP_NAME) + install -p $(EXTERNALS_SRC)/pdp/doc/reference.txt $(MANUALS_DEST)/$(PDP_NAME) + install -p $(EXTERNALS_SRC)/pdp/doc/introduction/*.* \ + $(MANUALS_DEST)/$(PDP_NAME) + install -d $(APPLICATIONS_DEST)/$(PDP_NAME) + install -p $(EXTERNALS_SRC)/pdp/doc/examples/*.* \ + $(APPLICATIONS_DEST)/$(PDP_NAME) + + + +#------------------------------------------------------------------------------# +# PMPD +PMPD_NAME=pmpd +pmpd: + + +pmpd_install: pmpd +# install -d $(OBJECTS_DEST)/$(PMPD_NAME) + install -d $(HELP_DEST)/$(PMPD_NAME) + install -p $(EXTERNALS_SRC)/pmpd/help/*.pd \ + $(HELP_DEST)/$(PMPD_NAME) + install -d $(MANUALS_DEST)/$(PMPD_NAME) + install -d $(MANUALS_DEST)/$(PMPD_NAME) + install -p $(EXTERNALS_SRC)/pmpd/doc/pmpd.pdf/pmpd.pdf \ + $(MANUALS_DEST)/$(PMPD_NAME) + install -d $(APPLICATIONS_DEST)/$(PMPD_NAME) + install -p $(EXTERNALS_SRC)/pmpd/exemples/*.pd \ + $(APPLICATIONS_DEST)/$(PMPD_NAME) + + + +#------------------------------------------------------------------------------# +# TOXY +TOXY_NAME=toxy +# toxy is compiled straight into $(OUT_DIR) +TOXY_OUT_DIR=$(OBJECTS_DEST)/$(TOXY_NAME) +toxy: + + +toxy_install: toxy + install -d $(OBJECTS_DEST)/$(TOXY_NAME) + $(SCRIPTS_SRC)/generate-libdir-metafile.sh $(OBJECTS_DEST) $(TOXY_NAME) \ + --author "Kzrysztof Czaja" \ + --license "BSD" \ + --description "objects for working with Tcl and Pd's Tk GUI" + cd $(EXTERNALS_SRC)/miXed/toxy && $(MAKE) OUT_DIR=$(TOXY_OUT_DIR) + install -d $(HELP_DEST)/$(TOXY_NAME) + install -p $(EXTERNALS_SRC)/miXed/doc/help/toxy/*.* \ + $(HELP_DEST)/$(TOXY_NAME) +# install -d $(MANUALS_DEST)/$(TOXY_NAME) + install -d $(APPLICATIONS_DEST)/$(TOXY_NAME) + install -p $(EXTERNALS_SRC)/miXed/test/toxy/*.* \ + $(APPLICATIONS_DEST)/$(TOXY_NAME) + + + +#------------------------------------------------------------------------------# +# VBAP +VBAP_NAME=vbap +vbap: + + +vbap_install: vbap + install -d $(OBJECTS_DEST)/$(VBAP_NAME) +# install -d $(HELP_DEST)/$(VBAP_NAME) +# install -d $(MANUALS_DEST)/$(VBAP_NAME) +# install -d $(APPLICATIONS_DEST)/$(VBAP_NAME) + install -p $(EXTERNALS_SRC)/vbap/graph-to-aziele.pd \ + $(OBJECTS_DEST)/$(VBAP_NAME) + + + +#------------------------------------------------------------------------------# +# Zexy +ZEXY_NAME = zexy +zexy: +# zexy's new build system doesn't work with CVS layout, and most of zexy is +# included in the extrnals build system now anyway. But the abstractions +# should still be included +# cd $(EXTERNALS_SRC)/zexy/src && autoconf && ./configure && $(MAKE) + + +zexy_install: zexy + install -d $(OBJECTS_DEST)/$(ZEXY_NAME) +# install -p $(EXTERNALS_SRC)/zexy/src/*.$(EXTENSION) $(OBJECTS_DEST)/$(ZEXY_NAME) + install -p $(shell ls -1 $(EXTERNALS_SRC)/zexy/abs/*.pd | \ + grep -v '-help.pd' | sed 's/\([&<>|~]\)/\\\1/g') \ + $(OBJECTS_DEST)/$(ZEXY_NAME) + install -d $(HELP_DEST)/$(ZEXY_NAME) + install -p $(EXTERNALS_SRC)/zexy/abs/*-help.pd $(HELP_DEST)/$(ZEXY_NAME) + install -p $(EXTERNALS_SRC)/zexy/zexy.pd $(HELP_DEST) + install -p $(EXTERNALS_SRC)/zexy/examples/*.* $(HELP_DEST)/$(ZEXY_NAME) + + + +#==============================================================================# +# +# UNFILTERED PROJECT TARGETS +# +#==============================================================================# +# this is not yet organized into libdirs, but just leftover + +unfiltered_install: +#---------------------------------------------------------------------------- +# hcs + install -p $(shell ls -1 $(EXTERNALS_SRC)/hcs/*.pd | \ + grep -v '\-help.pd') $(OBJECTS_DEST) +# hid +# these don't work on Windows yet + cd $(EXTERNALS_SRC)/hcs/hid && $(MAKE) + install -p $(EXTERNALS_SRC)/hcs/hid/hid.$(EXTENSION) $(OBJECTS_DEST) + install -p $(shell ls -1 $(EXTERNALS_SRC)/hcs/hid/*.pd | \ + grep -v '\-help.pd'| grep -v '\-list.pd') $(OBJECTS_DEST) +# general + install -p $(EXTERNALS_SRC)/hcs/general/*.pd $(OBJECTS_DEST) +# pan + install -p $(shell ls -1 $(EXTERNALS_SRC)/hcs/pan/*.pd | \ + grep -v '\-help.pd') $(OBJECTS_DEST) +#---------------------------------------------------------------------------- +# OSC + test -e cd $(EXTERNALS_SRC)/OSCx/Makefile || \ + (cd $(EXTERNALS_SRC)/OSCx && ./configure) +# these don't work on Windows yet + cd $(EXTERNALS_SRC)/OSCx && $(MAKE) CC=gcc + install -p $(EXTERNALS_SRC)/OSCx/doc/*.* $(HELP_DEST) + install -p $(EXTERNALS_SRC)/OSCx/src/*.$(EXTENSION) $(OBJECTS_DEST) +#---------------------------------------------------------------------------- +# unauthorized +# these don't work on Windows yet + cd $(EXTERNALS_SRC)/unauthorized && $(MAKE) + install -p $(EXTERNALS_SRC)/unauthorized/*/*.$(EXTENSION) $(OBJECTS_DEST) + install -p $(EXTERNALS_SRC)/unauthorized/*/*.pd $(HELP_DEST) + install -p $(EXTERNALS_SRC)/unauthorized/*/*.txt $(HELP_DEST) + install -p $(EXTERNALS_SRC)/unauthorized/*/*.pls $(HELP_DEST) + cp -Rfp $(EXTERNALS_SRC)/unauthorized/blinkenlights/blm $(HELP_DEST) + + +#==============================================================================# +# +# DEVELOPER'S TARGETS +# +#==============================================================================# + +# make the symlinks necessary to simulate the installed environment +devsymlinks: + + +#==============================================================================# +# +# CLEAN TARGETS +# +#==============================================================================# + +# the destination-specific clean targets are in Makefile.buildlayout +clean: install_clean + cd $(EXTERNALS_SRC)/build/$(OS_NAME) && make $(DEST_PATHS) clean + cd $(EXTERNALS_SRC)/hcs/hid && make $(DEST_PATHS) clean + cd $(EXTERNALS_SRC)/OSCx && make $(DEST_PATHS) clean + cd $(EXTERNALS_SRC)/mixed/cyclone && make $(DEST_PATHS) clean + cd $(EXTERNALS_SRC)/mixed/pddp && make $(DEST_PATHS) clean + cd $(EXTERNALS_SRC)/mixed/toxy && make $(DEST_PATHS) clean + cd $(EXTERNALS_SRC)/unauthorized && make $(DEST_PATHS) clean + +distclean: clean cruft_clean + rm $(EXTERNALS_SRC)/OSCx Makefile diff --git a/externals/Makefile.buildlayout b/externals/Makefile.buildlayout index 921a7959..12df9df5 100644 --- a/externals/Makefile.buildlayout +++ b/externals/Makefile.buildlayout @@ -19,12 +19,12 @@ # # This file is currently located in these places: # abstractions -# externals/build +# extensions +# externals # packages # doc # # it will be going here too: -# extensions # gem # pd # @@ -65,10 +65,10 @@ endif # sources ABSTRACTIONS_SRC = $(SRC_ROOT_DIR)/abstractions DOC_SRC = $(SRC_ROOT_DIR)/doc +EXTENSIONS_SRC = $(SRC_ROOT_DIR)/extensions 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 PACKAGES_SRC = $(SRC_ROOT_DIR)/packages PD_SRC = $(SRC_ROOT_DIR)/pd SCRIPTS_SRC = $(SRC_ROOT_DIR)/scripts @@ -130,7 +130,7 @@ PD_VERSION = $(PD_MAJOR_VERSION).$(PD_MINOR_VERSION).$(PD_BUGFIX_VERSION) # release version for this distro -PACKAGE_VERSION = extended-RC4 +PACKAGE_VERSION = extended-RC5 PACKAGE_NAME = Pd-$(PD_VERSION)-$(PACKAGE_VERSION) diff --git a/externals/build/TODO b/externals/build/TODO index da3aa827..7f6e5de6 100644 --- a/externals/build/TODO +++ b/externals/build/TODO @@ -1,4 +1,7 @@ +- incorporate %.c building into cross-platform Makefile, and have it work with + subdirectories so that libdirs can be compiled here. + - simplify Makefile, making just "all" and "install" with subsections for each subdir. @@ -32,3 +35,5 @@ PDContainer ann grh + iemstream + iemxmlrpc diff --git a/packages/Makefile b/packages/Makefile index 5316b2e7..ca503f54 100644 --- a/packages/Makefile +++ b/packages/Makefile @@ -130,6 +130,7 @@ flext: #------------------------------------------------------------------------------ # Gem gem: +# cd $(GEM_SRC)/Gem && xcodebuild #------------------------------------------------------------------------------ @@ -180,18 +181,25 @@ pd: #==============================================================================# #------------------------------------------------------------------------------ -# abstractions +# install +install: license_install readme_install welcome_install gem_install +install: pd_install abstractions_install doc_install externals_install +install: noncvs_install + @echo "Complete install succeeded!" + +#------------------------------------------------------------------------------ +# abstractions_install abstractions_install: cd $(ABSTRACTIONS_SRC) && make $(DEST_PATHS) install #------------------------------------------------------------------------------ -# doc +# doc_install doc_install: cd $(DOC_SRC) && make $(DEST_PATHS) install #------------------------------------------------------------------------------ -# externals +# externals_install externals_install: cd $(EXTERNALS_SRC) && make $(DEST_PATHS) install @@ -210,12 +218,38 @@ flext_install: #------------------------------------------------------------------------------ -# Gem -gem_install: +# gem_install +GEM_NAME = gem +gem_install: gem $(HELP_DEST) + install -p $(GEM_SRC)/help/*.* $(HELP_DEST) + install -p $(GEM_SRC)/abstractions/*-help.pd $(HELP_DEST) + install -d $(OBJECTS_DEST)/$(GEM_NAME) + install -p $(shell ls -1 $(GEM_SRC)/abstractions/*.* | \ + grep -v '\-help.pd') $(OBJECTS_DEST) + install -d $(MANUALS_DEST)/$(GEM_NAME) + install -p $(GEM_SRC)/doc/*.* $(MANUALS_DEST)/$(GEM_NAME) + install -d $(MANUALS_DEST)/$(GEM_NAME)/manual + install -p $(GEM_SRC)/manual/*.* $(MANUALS_DEST)/$(GEM_NAME)/manual + for dir in $(shell ls -1 $(GEM_SRC)/examples | grep -v CVS); do \ + echo "installing $$dir"; \ + install -d $(APPLICATIONS_DEST)/$(GEM_NAME)/$$dir ; \ + install -p $(GEM_SRC)/examples/$$dir/*.* $(APPLICATIONS_DEST)/$(GEM_NAME)/$$dir ; \ + done #------------------------------------------------------------------------------ -# pd +# noncvs_install +# this is for including pre-compiled binaries in a build +noncvs_install: + -install -p $(PACKAGES_SRC)/noncvs/$(OS_NAME)/bin/*.* $(BIN_DEST) + -install -p $(PACKAGES_SRC)/noncvs/$(OS_NAME)/doc/5.reference/*.* \ + $(HELP_DEST) + -install -p $(PACKAGES_SRC)/noncvs/$(OS_NAME)/extra/*.* $(OBJECTS_DEST) + + + +#------------------------------------------------------------------------------ +# pd_install PD_NAME=Pd pd_install: pd cd $(PD_SRC)/src && \ @@ -224,14 +258,6 @@ pd_install: pd install -p $(PD_SRC)/src/notes.txt $(MANUALS_DEST)/$(PD_NAME) -#------------------------------------------------------------------------------ -# install -install: license_install readme_install welcome_install -install: pd_install abstractions_install doc_install externals_install -#install: flext_install gem_install - @echo "Complete install succeeded!" - - #==============================================================================# # @@ -340,10 +366,10 @@ doc_format: # 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 + find $(DOCS_DEST) -name '*.pd' -print0 | xargs -0 chmod a-wx + find $(DOCS_DEST) -name '*.txt' -print0 | xargs -0 chmod a-wx diff --git a/packages/Makefile.buildlayout b/packages/Makefile.buildlayout index 32500ae9..12df9df5 100644 --- a/packages/Makefile.buildlayout +++ b/packages/Makefile.buildlayout @@ -65,10 +65,10 @@ endif # sources ABSTRACTIONS_SRC = $(SRC_ROOT_DIR)/abstractions DOC_SRC = $(SRC_ROOT_DIR)/doc +EXTENSIONS_SRC = $(SRC_ROOT_DIR)/extensions 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 PACKAGES_SRC = $(SRC_ROOT_DIR)/packages PD_SRC = $(SRC_ROOT_DIR)/pd SCRIPTS_SRC = $(SRC_ROOT_DIR)/scripts @@ -130,7 +130,7 @@ PD_VERSION = $(PD_MAJOR_VERSION).$(PD_MINOR_VERSION).$(PD_BUGFIX_VERSION) # release version for this distro -PACKAGE_VERSION = extended-RC4 +PACKAGE_VERSION = extended-RC5 PACKAGE_NAME = Pd-$(PD_VERSION)-$(PACKAGE_VERSION) diff --git a/packages/TODO b/packages/TODO index 204e24ac..6544f838 100644 --- a/packages/TODO +++ b/packages/TODO @@ -1,9 +1,8 @@ -- fix scripts/checkout...sh. It doesn't cvs co into the newly created pure-data folder - -- add packages/win32_inno/Makefile to cvs on winky +- move darwin_app_perms to here and make generic prerelease_clean target which + is called separately -- menu_openhtml on Win32 with rundll should be able to open other filetypes like open on MACOSX. +- fix scripts/checkout...sh. It doesn't cvs co into the newly created pure-data folder - rename "applications" to "examples" @@ -11,17 +10,12 @@ - On GNU/Linux, figure out how to deal with build/extra vs. build/lib/pd/extra -- make loaderHEX functions follow Pd standart of object_setup() rather than - setup_object() - - global optimization flags ideally, you would use a version of Pd that is fully optimized for your CPU. In order to do this, a system of optimization flags needs to be developed so that you can specific the target CPU in one place and have everything compile for that CPU. -- document libdir format - - add GRIPD for Anders - add reg keys for Martin Dupras @@ -30,3 +24,17 @@ - make standard targets: distclean (*~, etc.), installdirs (make just the dirs), uninstall instead of install_clean + +- help menu + + - check up on this bug: Opening Help patches from "Pure Documentation" + + - make help menu function check if item exists before trying to make a + menu item so that it doesn't break pd.tk<->pd interaction (i.e. windows + titled x50bf90). (the recursive function might have fixed this) + + - port to Linux/Windows + +- Preferences + + - look at BBogart's LML http://www.ekran.org/ben/research/lml/lml-v0.1-TEST8-osx.tgz diff --git a/packages/darwin_app/Info.plist.in b/packages/darwin_app/Info.plist.in index d2a4201a..4450e8d6 100644 --- a/packages/darwin_app/Info.plist.in +++ b/packages/darwin_app/Info.plist.in @@ -9,7 +9,8 @@ CFBundleTypeExtensions - PD_APP_NAME + pd + pat CFBundleTypeIconFile pd-file.icns @@ -22,7 +23,7 @@ CFBundleExecutable Pd CFBundleIdentifier - org.puredata.pd + org.puredata.pd.wish CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType diff --git a/packages/darwin_app/Makefile b/packages/darwin_app/Makefile index 9ba57465..2aa69bf0 100644 --- a/packages/darwin_app/Makefile +++ b/packages/darwin_app/Makefile @@ -35,7 +35,7 @@ DEST_PATHS = BUILDLAYOUT_DIR=$(BUILDLAYOUT_DIR) \ install: darwin_app #------------------------------------------------------------------------------# -darwin_app: darwin_app_core extended_app_install rez_install +darwin_app: darwin_app_core extended_app_install darwin_app_doc_format rez_install @echo " " @echo "Pd.app build succeeded!" @@ -43,7 +43,7 @@ darwin_app: darwin_app_core extended_app_install rez_install # this target is for when you already have a pre-built Pd.app and you # just want to fill it with goodies from CVS. To do so, place your # Pd.app in $(BUILD_BASE)/Pd.app -extended_app_install: extended_install darwin_app_noncvs darwin_app_doc_format +extended_app_install: extended_install #------------------------------------------------------------------------------# @@ -68,7 +68,7 @@ darwin_app_wrapper: Info.plist install -m0644 -p Info.plist "$(PD_APP_CONTENTS)" install -m0644 -p *.icns "$(PD_APP_CONTENTS)/Resources" mv "$(PD_APP_CONTENTS)/MacOS/Wish Shell" \ - "$(PD_APP_CONTENTS)/MacOS/$(PD_APP_NAME)" + "$(PD_APP_CONTENTS)/MacOS/Pd" # diskutil eject /Volumes/$(TCLTK) @@ -107,6 +107,7 @@ darwin_app_doc_format: cd $(DOCS_DEST) && \ sed -i.bak 's/^\(\#N canvas [0-9]* [0-9]* [0-9]* [0-9]*\) 12/\1 10/' \ */*.pd */*/*.pd */*/*/*.pd + find $(INSTALL_PREFIX) -name '*.pd.bak' -delete #==============================================================================# # @@ -120,19 +121,7 @@ extended_install: #------------------------------------------------------------------------------# darwin_app_externals: darwin_app_externals_standard darwin_app_externals_c++ darwin_app_externals_flext -#darwin_app_externals: darwin_app_externals_standard darwin_app_externals_c++ darwin_app_externals_gem - - -#------------------------------------------------------------------------------# -# GEM -darwin_app_externals_gem: - cd $(GEM_SRC)/Gem && xcodebuild - install -p -m0644 $(GEM_SRC)/Gem/help/*.* $(HELP_DEST) - install -d $(DOCS_DEST)/Gem/doc - install -p -m0644 $(GEM_SRC)/Gem/doc/*.* $(DOCS_DEST)/gem - install -d $(DOCS_DEST)/Gem/00.manual - install -p -m0644 $(GEM_SRC)/Gem/manual/*.* $(DOCS_DEST)/gem/00.manual - cp -Rfp $(GEM_SRC)/Gem/examples/*.* $(GEM_SRC)/Gem/examples/data $(DOCS_DEST)/gem +#darwin_app_externals: darwin_app_externals_standard darwin_app_externals_c++ #------------------------------------------------------------------------------# @@ -270,24 +259,10 @@ darwin_app_externals_c++: # gem2pdp # cd $(EXTERNALS_SRC)/gem2pdp && $(MAKE) -f Makefile.darwin # install -p -m0444 $(EXTERNALS_SRC)/gem2pdp/*.pd_darwin $(OBJECTS_DEST) -#---------------------------------------------------------------------------- -# GridFlow -# cd ../../gridflow && ./configure && $(MAKE) -darwin_app_noncvs: - test -d noncvs/doc/5.reference && \ - install -p noncvs/doc/5.reference/*.* $(HELP_DEST) - test -d noncvs/extra && install -p noncvs/extra/*.* $(OBJECTS_DEST) - test -d noncvs/doc/serendipd && cp -Rp noncvs/doc/serendipd \ - $(APPLICATIONS_DEST) - darwin_app_perms: - chmod a-x $(DOCS_DEST)/*/*.pd $(DOCS_DEST)/*/*/*.pd $(DOCS_DEST)/*/*/*/*.pd chmod -R a-w $(DOCS_DEST) -# serendiPd shared patch - test -d $(APPLICATIONS_DEST)/serendipd && \ - chmod a+w $(APPLICATIONS_DEST)/serendipd/*shared_patch.pd DMG_NAME = $(PACKAGE_NAME) dmg: darwin_app_perms @@ -299,8 +274,7 @@ dmg: darwin_app_perms cd $(CWD) && /bin/sh mkdmg "$(DMG_NAME)" -clean: darwin_app_clean darwin_app_externals_standard_clean \ - darwin_app_externals_gem_clean darwin_app_externals_flext_clean \ +clean: darwin_app_clean darwin_app_externals_flext_clean \ cd $(PACKAGES_SRC) && make clean -rm Info.plist @@ -312,7 +286,7 @@ darwin_app_clean: -darwin_app_externals_gem_clean: + cd $(GEM_SRC)/Gem && xcodebuild clean darwin_app_externals_flext_clean: @@ -331,6 +305,22 @@ darwin_app_externals_flext_clean: # #==============================================================================# +darwin_app_noncvs: + @echo " " + @echo "Deprecated!!" + @echo "cd $(PACKAGES_SRC) && make noncvs_install" + cd $(PACKAGES_SRC) && make $(DEST_PATHS) noncvs_install + +darwin_app_externals_gem_clean: + @echo " " + @echo "Deprecated!!" + @echo "cd $(PACKAGES_SRC) && make gem_clean" + +darwin_app_externals_gem: + @echo " " + @echo "Deprecated!!" + @echo "cd $(PACKAGES_SRC) && make gem_install" + darwin_app_externals_standard_clean: @echo " " @echo "Deprecated!!" diff --git a/packages/darwin_app/TODO b/packages/darwin_app/TODO index a64c8665..38bc6a39 100644 --- a/packages/darwin_app/TODO +++ b/packages/darwin_app/TODO @@ -3,18 +3,11 @@ - in post-clean, rm *.bak -- make Info.plist.in template and have the Makefile create Info.plist - -- check to make sure that Rez mac.r is working in Makefile - - make Pd open a new window when its launched to workaround the bug where the menus don't work until a window is opened. - otool dylib help: http://qin.laya.com/tech_coding_help/dylib_linking.html -- add symbolic link for flext - (cd Pd.app/Contents/Resources/extra && ln -s . lib) - - from Carmen Rocco about [fiddle~] crash: "is fiddle~: * compiled with the same header * linked with the same binary of (lib)pd * compiled with the same compiler? i had very similar issues with bonk on windows (Virtually same stacktrace but s/fiddle/bonk) until fixing the above 3 things..." - review permissions so that you can build on top on existing builds @@ -55,7 +48,7 @@ http://developer.apple.com/documentation/MacOSX/Conceptual/BPFileSystem/Articles - make Cmd-click work like Ctrl-click - write script to convert from -DMACOSX to -D__APPLE__ where ever possible (check out - __gnu_linux__ while I am at it) and submit to miller + __gnu_linux__ and WIN32 while I am at it) and submit to miller - instead of shipping Pd.app with a org.puredata.pd.plist, make a script that uses the "defaults" command to add the desired prefs to any existing diff --git a/packages/patches/darwin/darwin_dlopen.patch b/packages/patches/darwin/darwin_dlopen.patch new file mode 100644 index 00000000..a93ef7ed --- /dev/null +++ b/packages/patches/darwin/darwin_dlopen.patch @@ -0,0 +1,65 @@ +Index: s_loader.c +=================================================================== +RCS file: /cvsroot/pure-data/pd/src/s_loader.c,v +retrieving revision 1.4 +diff -u -w -r1.4 s_loader.c +--- s_loader.c 6 Sep 2004 20:20:35 -0000 1.4 ++++ s_loader.c 26 Nov 2005 00:27:11 -0000 +@@ -2,6 +2,9 @@ + * For information on usage and redistribution, and for a DISCLAIMER OF ALL + * WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ + ++#ifdef __APPLE__ ++#define DL_OPEN ++#endif + #ifdef DL_OPEN + #include + #endif +@@ -13,7 +16,7 @@ + #include + #include + #endif +-#ifdef MACOSX ++#ifdef MACOSX10.2 + #include + #endif + #include +@@ -90,7 +93,7 @@ + if (lastdot = strrchr(nameptr, '.')) + *lastdot = 0; + +-#ifdef MACOSX ++#ifdef MACOSX10.2 + strcpy(symname, "_"); + strcat(symname, nameptr); + #else +@@ -122,7 +125,7 @@ + } + makeout = (t_xxx)GetProcAddress(ntdll, symname); + #endif +-#ifdef MACOSX ++#ifdef MACOSX10.2 + { + NSObjectFileImage image; + void *ret; +@@ -134,8 +137,18 @@ + return 0; + } + ret = NSLinkModule( image, filename, +- NSLINKMODULE_OPTION_BINDNOW + NSLINKMODULE_OPTION_PRIVATE); +- ++ NSLINKMODULE_OPTION_BINDNOW | ++ //NSLINKMODULE_OPTION_PRIVATE | ++ NSLINKMODULE_OPTION_RETURN_ON_ERROR); ++ ++ if (ret == NULL) { ++ int err; ++ const char *fname, *errt; ++ NSLinkEditErrors c; ++ NSLinkEditError(&c, &err, &fname, &errt); ++ post("link error %d %s %s", err, fname, errt); ++ return 0; ++ } + s = NSLookupSymbolInModule(ret, symname); + + if (s) diff --git a/packages/patches/extended-help-menu.patch b/packages/patches/extended-help-menu.patch index 0cabfeaa..192374a5 100644 --- a/packages/patches/extended-help-menu.patch +++ b/packages/patches/extended-help-menu.patch @@ -1,38 +1,136 @@ Index: u_main.tk =================================================================== RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v ---- pd-0.38-4/src/u_main.tk Sun Feb 20 20:03:36 2005 -+++ u_main.tk Wed Nov 16 00:33:02 2005 -@@ -374,22 +374,41 @@ - set help_directory $pd_guidir/doc - set help_top_directory $pd_guidir/doc - -+################## generate_menu_doc_link ######################### -+# This procedure generates a temporary mirror of the documentation directory -+# in /tmp so that it can be opened from the Help->Pure Documentation... menu -+# under Mac OS X. It is meant to be run at startup. -+# Damn you Apple and your "hide stuff from the user" "features". -+# -+proc generate_menu_doc_link {} { -+ global help_directory -+ -+ regsub -all "/" $help_directory "." help_directory_alias -+ set help_directory_alias /tmp/$help_directory_alias -+ set help_directory_tmpdir $help_directory_alias/doc -+ # if something other than a directory exists, delete it -+ if [file exists $help_directory_alias] { -+ file delete -force -- $help_directory_alias -+ } -+ if { ! [ file isdirectory $help_directory_tmpdir ] } { -+ file mkdir $help_directory_tmpdir -+ } -+ foreach file [ lsort [ glob -dir $help_directory * ] ] { -+ regsub -all ".*/" $file "" link_file_name -+ file link -symbolic [file join $help_directory_tmpdir $link_file_name ] $file -+ } -+ set help_directory $help_directory_tmpdir -+} +retrieving revision 1.7.2.4 +diff -u -w -r1.7.2.4 u_main.tk +--- u_main.tk 21 Feb 2005 04:20:20 -0000 1.7.2.4 ++++ u_main.tk 25 Nov 2005 22:47:06 -0000 +@@ -24,6 +24,14 @@ + # Tearoff is set to true by default: + set pd_tearoff 1 + ++ ++# a menu on the main menubar named $whatever.help while be treated ++# as a special menu with specific behaviors on different platforms. ++# See SPECIAL MENUS IN MENUBARS http://www.tcl.tk/man/tcl8.4/TkCmd/menu.htm ++# this is the default name for the Help menu ++set help_menu_name "help" ++ ++#################### init for Windows #################### + if {$pd_nt == 1} { + global pd_guidir + global pd_tearoff +@@ -32,8 +40,12 @@ + set pd_guidir $pd_gui3/.. + load $pd_guidir/bin/pdtcl.dll + set pd_tearoff 1 ++ set help_top_directory $pd_guidir/doc ++ # init last help directory browsed ++ set help_directory $help_top_directory + } + ++##################### init for Mac OS X/Darwin #################### + if {$pd_nt == 2} { + # turn on James Tittle II's fast drawing (wait until I can test this...): + # set tk::mac::useCGDrawing 1 +@@ -43,6 +55,39 @@ + set pd_guidir $pd_gui2/.. + load $pd_guidir/bin/pdtcl + set pd_tearoff 0 ++ set help_top_directory $pd_guidir/doc ++ ++ ++ # This procedure generates a temporary mirror of the documentation directory ++ # in /tmp so that it can be opened from the Help->Pure Documentation... menu ++ # under Mac OS X. It is meant to be run at startup. ++ # Damn you Apple and your hide-stuff-from-the-user "features". ++ # ++ regsub -all "/" $help_top_directory "." help_directory_alias ++ set help_directory_alias /tmp/.pd_help_directory_alias-$help_directory_alias ++ set help_directory_tmpdir $help_directory_alias/doc ++ # if something other than a directory exists, delete it ++ if [file exists $help_directory_alias] { ++ file delete -force -- $help_directory_alias ++ } ++ if { ! [ file isdirectory $help_directory_tmpdir ] } { ++ file mkdir $help_directory_tmpdir ++ } ++ foreach file [ lsort [ glob -dir $help_top_directory * ] ] { ++ regsub -all ".*/" $file "" link_file_name ++ file link -symbolic $help_directory_tmpdir/$link_file_name $file ++ } ++ # init last help directory browsed ++ set help_directory $help_directory_tmpdir ++ ++ ++ # a menu on the main menubar named "$whatever.help" while be treated ++ # as a special menu with specific behaviors on different platforms. ++ # See SPECIAL MENUS IN MENUBARS http://www.tcl.tk/man/tcl8.4/TkCmd/menu.htm ++ # Apple doesn't allow cascading menus in their Help so I had to call this ++ # one "docs" ++ set help_menu_name "docs" ++ + + # tk::mac::OpenDocument is called with the filenames put into the + # var args whenever docs are either dropped on the Pd.app icon or +@@ -60,14 +105,22 @@ + # hack so you can easily test-run this script in linux... define pd_guidir + # (which is normally defined at startup in pd under linux...) + ++#################### init for GNU/Linux #################### + if {$pd_nt == 0} { + if {! [info exists pd_guidir]} { + global pd_guidir + puts stderr {setting pd_guidir to '.'} + set pd_guidir . ++ set help_top_directory $pd_guidir/doc ++ # init last help directory browsed ++ set help_directory $help_top_directory + } + } + ++#################### init for all platforms #################### + ++ ++ + # it's unfortunate but we seem to have to turn off global bindings + # for Text objects to get control-s and control-t to do what we want for + # "text" dialogs below. Also we have to get rid of tab's changing the focus. +@@ -95,25 +148,15 @@ + if {$pd_nt != 2} { + .mbar add cascade -label "Windows" -menu .mbar.windows + .mbar add cascade -label "Media" -menu .mbar.audio +-# a menu on the main menubar named $whatever.help while be treated +-# as a special menu with specific behaviors on different platforms. +-# See SPECIAL MENUS IN MENUBARS http://www.tcl.tk/man/tcl8.4/TkCmd/menu.htm +- menu .mbar.help -tearoff $pd_tearoff +- .mbar add cascade -label "Help" -menu .mbar.help + } else { + menu .mbar.apple -tearoff 0 + .mbar add cascade -label "Apple" -menu .mbar.apple + # arrange menus according to Apple HIG + .mbar add cascade -label "Media" -menu .mbar.audio + .mbar add cascade -label "Window" -menu .mbar.windows +-# a menu on the main menubar named "$whatever.help" while be treated +-# as a special menu with specific behaviors on different platforms. +-# See SPECIAL MENUS IN MENUBARS http://www.tcl.tk/man/tcl8.4/TkCmd/menu.htm +-# Apple doesn't allow cascading menus in their Help so I had to call this +-# one $mbar.docs # +- menu .mbar.docs -tearoff $pd_tearoff +- .mbar add cascade -label "Help" -menu .mbar.docs + } ++menu .mbar.$help_menu_name -tearoff $pd_tearoff ++.mbar add cascade -label "Help" -menu .mbar.$help_menu_name + + set ctrls_audio_on 0 + set ctrls_meter_on 0 +@@ -371,25 +414,15 @@ + } + } + +-set help_directory $pd_guidir/doc +-set help_top_directory $pd_guidir/doc +- +################## menu_documentation ######################### proc menu_documentation {} { global help_directory @@ -47,13 +145,14 @@ RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v - -initialdir /tmp/pd-documentation] - } else { set filename [tk_getOpenFile -defaultextension .pd \ - -filetypes { {{documentation} {.pd .txt .htm}} } \ +- -filetypes { {{documentation} {.pd .txt .htm}} } \ ++ -filetypes { {{documentation} {.pd .txt .htm .html}} } \ -initialdir $help_directory] - } if {$filename != ""} { if {[string first .txt $filename] >= 0} { menu_opentext $filename -@@ -411,35 +430,57 @@ +@@ -411,42 +444,69 @@ set dirname $pd_guidir/$subdir @@ -73,45 +172,47 @@ RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v - pd [concat pd open [pdtk_enquote $basename] \ - [pdtk_enquote $dirname] \;] + menu_openhtml $dirname/$basename -+ } } } ++} ++ -proc doc_submenu {helpmenu subdir} { - global help_top_directory pd_tearoff -- -- set menudir $help_top_directory/$subdir - -- regsub -all "\\\." $subdir "" submenu +################## menu_doc_submenu ######################### - ++ +# this is a recursive function to generation a nested menu in the help menu +# which shows the complete contents of the doc directory +proc menu_doc_submenu {helpmenu base_dir sub_dir} { -+ global pd_tearoff -+ global help_top_directory -+ -+ set menu_dir $help_top_directory/$base_dir/$sub_dir -+ -+ foreach file [ lsort [ glob -nocomplain -dir $menu_dir * ] ] { -+ set file_type [file type $file] -+ regsub {.*/(.*$)} $file {\1} file_name -+ # If links are going to be used then there needs to be a check to see if each -+ # link might cause this function to recurse forever -+ # if { $file_type == "link"} { -+ # puts stderr "LINK: $file" -+ # } -+ if { $file_type == "file" } { -+ # only put certain file types on the menu -+ if {[regexp ".*\.(htm|html|c|pd|txt|tk|pdf|wav|aif|aiff)$" $file]} { -+ $helpmenu add command -label $file_name \ -+ -command "menu_doc_open doc/$base_dir/$sub_dir $file_name" -+ } -+ } elseif { $file_type == "directory" } { -+ regsub -all "\\\." [string tolower $file_name] "" submenu ++ global pd_tearoff ++ global help_top_directory + +- set menudir $help_top_directory/$subdir ++ set menu_dir $help_top_directory/$base_dir/$sub_dir + +- regsub -all "\\\." $subdir "" submenu ++ catch { ++ foreach file [ lsort [ glob -nocomplain -dir $menu_dir * ] ] { ++ set file_type [file type $file] ++ regsub {.*/(.*$)} $file {\1} file_name + ++ # If links are going to be used then there needs to be a check to ++ # see if each link might cause this function to recurse forever ++ # ++ if { $file_type == "link"} { ++ puts stderr "Warning doc_submenu found a link: $file" ++ } ++ if { $file_type == "file" } { ++ # only put certain file types on the menu ++ if {[regexp ".*\.(htm|html|c|pd|txt|tk|pdf|wav|aif|aiff)$" $file]} { ++ $helpmenu add command -label $file_name \ ++ -command "menu_doc_open doc/$base_dir/$sub_dir $file_name" ++ } ++ } elseif { $file_type == "directory" } { ++ regsub -all "\\\." [string tolower $file_name] "" submenu menu $helpmenu.$submenu -tearoff $pd_tearoff - regsub -all "\\\." $subdir " " submenuname -+ regsub -all "\\\." $file_name " " submenuname ++ regsub -all "\\\." $file_name " " submenuname $helpmenu add cascade -label $submenuname \ -menu $helpmenu.$submenu - @@ -122,34 +223,34 @@ RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v - regsub {.*/(.*\..+$)} $file {\1} filename - $helpmenu.$submenu add command -label $filename \ - -command "menu_doc_open doc/$subdir $filename" -+ menu_doc_submenu $helpmenu.$submenu $base_dir/$sub_dir [file tail $file] -+ } ++ menu_doc_submenu $helpmenu.$submenu $base_dir/$sub_dir \ ++ [file tail $file] ++ } ++ } } } -@@ -494,7 +535,18 @@ + ############# routine to add media, help, and apple menu items ############### + + proc menu_addstd {mbar} { +- global pd_apilist pd_nt pd_tearoff ++ global pd_apilist pd_nt pd_tearoff help_menu_name + # the "Audio" menu + $mbar.audio add command -label {audio ON} -accelerator [accel_munge "Ctrl+/"] \ + -command {menu_audio 1} +@@ -494,30 +554,15 @@ # the "Help" menu - if {$pd_nt != 2} { -+ if {$pd_nt == 2} { -+# Apple doesn't allow cascading menus in their Help so I had to call this -+# one "docs" -+ generate_menu_doc_link -+ $mbar.docs add command -label {Browse Documentation...} \ -+ -command {menu_documentation} -+ # the help menu only really works well on Mac OS X -+ $mbar.docs add command -label {Pd HTML Manual...} \ -+ -command {menu_doc_open doc/1.manual index.htm} -+ $mbar.docs add separator -+ menu_doc_submenu $mbar.docs "." "." -+ } else { - # a menu on the main menubar named "$whatever.help" while be treated - # as a special menu with specific behaviors on different platforms. - # See SPECIAL MENUS IN MENUBARS http://www.tcl.tk/man/tcl8.4/TkCmd/menu.htm -@@ -502,22 +554,9 @@ - -command {menu_doc_open doc/1.manual 1.introduction.txt} - $mbar.help add command -label {Pure Documentation...} \ +-# a menu on the main menubar named "$whatever.help" while be treated +-# as a special menu with specific behaviors on different platforms. +-# See SPECIAL MENUS IN MENUBARS http://www.tcl.tk/man/tcl8.4/TkCmd/menu.htm +- $mbar.help add command -label {About Pd} \ +- -command {menu_doc_open doc/1.manual 1.introduction.txt} +- $mbar.help add command -label {Pure Documentation...} \ ++ puts stderr "Starting Menu crap" ++ $mbar.$help_menu_name add command -label {Browse Documentation...} \ -command {menu_documentation} - # add menu items for each section instead of using Pd patches - $mbar.help add separator @@ -161,14 +262,43 @@ RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v - } - - $mbar.$helpmenuname add command -label {1 manual...} \ -+ $mbar.help add command -label {1 manual...} \ ++ # the help menu only really works well on Mac OS X ++ $mbar.$help_menu_name add command -label {Pd HTML Manual...} \ -command {menu_doc_open doc/1.manual index.htm} - doc_submenu $mbar.$helpmenuname 2.control.examples - doc_submenu $mbar.$helpmenuname 3.audio.examples - doc_submenu $mbar.$helpmenuname 4.fft.examples - doc_submenu $mbar.$helpmenuname 5.reference - doc_submenu $mbar.$helpmenuname 6.externs -+ } ++ $mbar.$help_menu_name add separator ++ menu_doc_submenu $mbar.$help_menu_name "." "." ++ puts stderr "Finishing Menu crap" } #################### the "File" menu for the Pd window ############## +@@ -820,6 +865,7 @@ + global pd_opendir + global pd_tearoff + global pd_nt ++ global help_menu_name + + toplevel $name -menu $name.m + # puts stderr [concat geometry: $geometry] +@@ -1078,13 +1124,11 @@ + # as a special menu with specific behaviors on different platforms. + # See SPECIAL MENUS IN MENUBARS http://www.tcl.tk/man/tcl8.4/TkCmd/menu.htm + if {$pd_nt != 2} { +- menu $name.m.help -tearoff $pd_tearoff +- $name.m add cascade -label Help -menu $name.m.help ++ menu $name.m.$help_menu_name -tearoff $pd_tearoff ++ $name.m add cascade -label Help -menu $name.m.$help_menu_name + } else { +- # Apple doesn't allow cascading menus in their Help +- # so I had to call this one "docs". +- menu $name.m.docs -tearoff $pd_tearoff +- $name.m add cascade -label Help -menu $name.m.docs ++ menu $name.m.$help_menu_name -tearoff $pd_tearoff ++ $name.m add cascade -label Help -menu $name.m.$help_menu_name + } + + menu_addstd $name.m diff --git a/packages/win32_inno/TODO b/packages/win32_inno/TODO index f85f3b6b..278207ee 100644 --- a/packages/win32_inno/TODO +++ b/packages/win32_inno/TODO @@ -1,4 +1,6 @@ +- add SMlib from email from Anders + - add Gem to noncvs - get Pd compiling on MinGW:. From Carmen: -- cgit v1.2.1