this is a little addendum to make miller's inclusion of the automake-based build system actually work.
autogen.sh: now creates ./m4 directory if necessary Makefile.am: include tcl tcl/Makefile: installs tcl-files into .../pd/tcl/ po/Makefile: fixed the paths (tcl-files no longer in ./src) src/Makefile: removed tcl-files (no longer here) extra/expr~/makefile: fixed typo in the clean target extra/makefile: added targets to be called directly from ./extra
handcrafted (non-automake) Makefiles now have supprt for rudimentary standard targets, like "install". --- Makefile.am | 3 ++- autogen.sh | 7 +++++++ extra/expr~/makefile | 9 ++++----- extra/makefile | 35 +++++++++++++++++++++++++++++++++-- po/Makefile | 22 ++++++++++++---------- src/Makefile.am | 16 ++++------------ tcl/Makefile | 40 ++++++++++++++++++++++++++++++++++++++++ 7 files changed, 102 insertions(+), 30 deletions(-) create mode 100644 tcl/Makefile
diff --git a/Makefile.am b/Makefile.am index 2cd7bf1..7a626d6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -23,7 +23,7 @@ EXTRA_DIST = LICENSE.txt README.txt INSTALL.txt SUBDIRS = $(EXTRA_SUBDIRS) src extra man
# subdirs that are always included in the dist, etc. -DIST_SUBDIRS = asio extra man po portaudio portmidi src +DIST_SUBDIRS = asio extra man po portaudio portmidi src tcl
# bin and tcl are symlinks for compatibility with the Pd-vanilla source tree. # Symlinks don't work on Windows/MinGW but they do on Cygwin. @@ -56,6 +56,7 @@ clean-local:
install-data-local: make libpddir=$(libpddir) -C po install + make libpddir=$(libpddir) -C tcl install make libpddir=$(libpddir) -C extra install $(INSTALL) -d $(DESTDIR)$(libpddir)/startup $(INSTALL) -d $(DESTDIR)$(libpddir)/startup/disabled diff --git a/autogen.sh b/autogen.sh index 582ecb1..a57907f 100755 --- a/autogen.sh +++ b/autogen.sh @@ -2,6 +2,13 @@
PATH=/sw/bin:$PATH
+PWD=${0%/*} + + +## git cannot really handle empty directories +## so let's create the missing ones +mkdir -p ${PWD}/m4 + case `uname -s` in MINGW*) # autoreconf doesn't always work on MinGW diff --git a/extra/expr~/makefile b/extra/expr~/makefile index 892b0a7..5dee147 100644 --- a/extra/expr~/makefile +++ b/extra/expr~/makefile @@ -6,7 +6,7 @@ install: install_linux
clean: clean_linux
-PDEXTERN=/usr/local/lib/pd/externs +PDEXTERN=/usr/local/lib/pd/extra
# ----------------------- NT -----------------------
@@ -109,12 +109,11 @@ install_linux: install expr.pd_linux $(PDEXTERN) rm -f $(PDEXTERN)/expr~.pd_linux rm -f $(PDEXTERN)/fexpr~.pd_linux - cd $(PDEXTERN); \ - -ln -s expr.pd_linux expr~.pd_linux - -ln -s expr.pd_linux fexpr~.pd_linux + cd $(PDEXTERN); ln -s expr.pd_linux expr~.pd_linux + cd $(PDEXTERN); ln -s expr.pd_linux fexpr~.pd_linux
-linux_clean: +clean_linux: rm -f *.pd_linux_o *.o
# ----------------------- MAC OSX ----------------------- diff --git a/extra/makefile b/extra/makefile index ddbba77..b176f83 100644 --- a/extra/makefile +++ b/extra/makefile @@ -1,3 +1,10 @@ +# this is the UNIX-style complicated layout dir, simple goes to $(prefix)/po +prefix = /usr/local +libpddir = $(prefix)/lib/pd + +EXTERNALS=bonk~ choice expr~ fiddle~ loop~ lrshift~ pd~ pique sigmund~ stdout +.PHONY: $(EXTERNALS) + current: pd_linux
# ----------------------- NT ----------------------- @@ -63,5 +70,29 @@ DARWINCFLAGS = -DPD -O2 -Wall -W -Wshadow -Wstrict-prototypes \
# ----------------------------------------------------------
-clean: - rm -f *.o *.pd_* so_locations +distclean clean: clean-externals + rm -f *.o *.pd_* *.l_* *.d_* *.m_* so_locations + +# ---------------------------------------------------------- +# ---------------------------------------------------------- + +$(EXTERNALS): + if test -d $@; then make -C $@; fi + +$(EXTERNALS:%=%-clean): + if test -d $(@:-clean=); then make -C $(@:-clean=) clean; fi + +$(EXTERNALS:%=%-install): + if test -d $(@:-install=); then make -C $(@:-install=) install; fi + +all: $(EXTERNALS) + +clean-externals: $(EXTERNALS:%=%-clean) + +install: $(EXTERNALS:%=%-install) + install -d $(DESTDIR)$(libpddir)/extra/$(NAME) + install -m644 -p *.*_* $(DESTDIR)$(libpddir)/extra/$(NAME) + install -m644 -p *.pd $(DESTDIR)$(libpddir)/extra/$(NAME) + +test: + @echo prefix: $(prefix) diff --git a/po/Makefile b/po/Makefile index 7a91a7c..9ffd2ff 100644 --- a/po/Makefile +++ b/po/Makefile @@ -8,15 +8,17 @@ ifeq ($(UNAME),Darwin) endif
# these are the files to search for localization strings -SOURCES = ../src/AppMain.tcl ../src/apple_events.tcl ../src/dialog_array.tcl \ - ../src/dialog_audio.tcl ../src/dialog_canvas.tcl ../src/dialog_data.tcl \ - ../src/dialog_find.tcl ../src/dialog_font.tcl ../src/dialog_gatom.tcl \ - ../src/dialog_iemgui.tcl ../src/dialog_message.tcl ../src/dialog_midi.tcl \ - ../src/dialog_path.tcl ../src/dialog_startup.tcl ../src/helpbrowser.tcl \ - ../src/opt_parser.tcl ../src/pd-gui.tcl ../src/pd_bindings.tcl \ - ../src/pd_connect.tcl ../src/pd_menucommands.tcl ../src/pd_menus.tcl \ - ../src/pdtk_canvas.tcl ../src/pdtk_text.tcl ../src/pdwindow.tcl \ - ../src/scrollbox.tcl ../src/scrollboxwindow.tcl ../src/wheredoesthisgo.tcl +TCLSOURCES = AppMain.tcl apple_events.tcl dialog_array.tcl \ + dialog_audio.tcl dialog_canvas.tcl dialog_data.tcl \ + dialog_find.tcl dialog_font.tcl dialog_gatom.tcl \ + dialog_iemgui.tcl dialog_message.tcl dialog_midi.tcl \ + dialog_path.tcl dialog_startup.tcl helpbrowser.tcl \ + opt_parser.tcl pd-gui.tcl pd_bindings.tcl \ + pd_connect.tcl pd_menucommands.tcl pd_menus.tcl \ + pdtk_canvas.tcl pdtk_text.tcl pdwindow.tcl \ + scrollbox.tcl scrollboxwindow.tcl wheredoesthisgo.tcl + +SOURCES=$(addprefix ../tcl/, $(TCLSOURCES))
# these are the supported languages, ALL_LINGUAS = af az be bg de el en_ca eu fr gu he hi hu it pa pt_br pt_pt sq sv vi @@ -69,7 +71,7 @@ distdir: install -m644 -p $(TEMPLATE) $(distdir) install -m644 -p $(POFILES) $(distdir)
-distclean: clean +maintainer-clean distclean: clean
clean: -rm -f -- $(MSGFILES) diff --git a/src/Makefile.am b/src/Makefile.am index 4161a06..60ca008 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -30,20 +30,12 @@ pd_SOURCES = g_canvas.c g_graph.c g_text.c g_rtext.c g_array.c g_template.c \ x_arithmetic.c x_connective.c x_interface.c x_midi.c x_misc.c \ x_time.c x_acoustics.c x_net.c x_qlist.c x_gui.c x_list.c d_soundfile.c
-TCL_FILES = AppMain.tcl apple_events.tcl dialog_array.tcl dialog_audio.tcl \ - dialog_canvas.tcl dialog_data.tcl dialog_find.tcl dialog_font.tcl \ - dialog_gatom.tcl dialog_iemgui.tcl dialog_message.tcl dialog_midi.tcl \ - dialog_path.tcl dialog_startup.tcl helpbrowser.tcl opt_parser.tcl \ - pd-gui.tcl pd_bindings.tcl pd_connect.tcl pd_menucommands.tcl pd_menus.tcl \ - pdtk_canvas.tcl pdtk_text.tcl pdwindow.tcl pkgIndex.tcl scrollbox.tcl \ - scrollboxwindow.tcl wheredoesthisgo.tcl - include_HEADERS = m_pd.h m_imp.h g_canvas.h s_stuff.h noinst_HEADERS = g_all_guis.h s_audio_alsa.h s_audio_pablio.h s_audio_paring.h
# we want these in the dist tarball -EXTRA_DIST = CHANGELOG.txt notes.txt makefile.mingw $(TCL_FILES) +EXTRA_DIST = CHANGELOG.txt notes.txt makefile.mingw
# configurations per library if ALSA @@ -111,7 +103,7 @@ if LINUX pd_CFLAGS += -DUNIX
libpdbindir = $(pkglibdir)/bin -libpdbin_DATA = $(TCL_FILES) +libpdbin_DATA = # this flag has to have a single leading "-" for libtool, even though ld uses # --export-dynamic, and libtool sends -Wl,--export-dynamic to ld... pd_LDFLAGS += -export-dynamic @@ -122,14 +114,14 @@ endif if MACOSX LIBS += -framework Carbon pd_CFLAGS += -DMACOSX #kludge, should use auto macro __APPLE__ -bin_SCRIPTS = $(TCL_FILES) +bin_SCRIPTS = endif
if WINDOWS LIBS += -lwsock32 -lwinmm -lole32 pd_CFLAGS += -DUSEAPI_MMIO -DPD_INTERNAL pd_SOURCES += s_audio_mmio.c s_midi_mmio.c -bin_SCRIPTS = $(TCL_FILES) +bin_SCRIPTS = endif
# Cygwin is not _WIN32 and MSW vaguely means the same thing, so MINGW only diff --git a/tcl/Makefile b/tcl/Makefile new file mode 100644 index 0000000..2e26168 --- /dev/null +++ b/tcl/Makefile @@ -0,0 +1,40 @@ +# this is the UNIX-style complicated layout dir, simple goes to $(prefix)/po +libpddir = $(prefix)/lib/pd + +# these are the files to search for localization strings +APPSOURCES = pd-gui.tcl +MODSOURCES = AppMain.tcl apple_events.tcl dialog_array.tcl \ + dialog_audio.tcl dialog_canvas.tcl dialog_data.tcl \ + dialog_find.tcl dialog_font.tcl dialog_gatom.tcl \ + dialog_iemgui.tcl dialog_message.tcl dialog_midi.tcl \ + dialog_path.tcl dialog_startup.tcl helpbrowser.tcl \ + opt_parser.tcl pd_bindings.tcl \ + pd_connect.tcl pd_menucommands.tcl pd_menus.tcl \ + pdtk_canvas.tcl pdtk_text.tcl pdwindow.tcl \ + scrollbox.tcl scrollboxwindow.tcl wheredoesthisgo.tcl \ + pkgIndex.tcl + +SOURCES = $(APPSOURCES) $(MODSOURCES) + +.SUFFIXES = .tcl +.PHONY = all install clean + +# nothing todo +all: + +install: $(MSGFILES) + install -d $(DESTDIR)$(libpddir)/tcl + install -p $(APPSOURCES) $(DESTDIR)$(libpddir)/tcl + install -m644 -p $(MODSOURCES) $(DESTDIR)$(libpddir)/tcl + +distdir: + install -m644 -p Makefile $(distdir) + install -p $(APPSOURCES) $(distdir) + install -m644 -p $(MODSOURCES) $(distdir) + +maintainer-clean distclean: clean + +clean: + -rm -f -- $(SOURCES:=~) + +