FYI: if you remove all makefiles in 'extra' you can replace it with the extra/Makefile from pd-gui-rewrite-0.43 which builds all objects in 'extra'. It has the added advantage of working on GNU/Linux, Mac OS X, MinGW and Cygwin, plus is based on the Makefile template for libraries. The existing 'extra' makefiles have always been problematic when it comes to anything but GNU/Linux.
.hc
On Jul 15, 2010, at 5:19 AM, IOhannes m zmoelnig wrote:
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:=~)
-- 1.7.1
Pd-dev mailing list Pd-dev@iem.at http://lists.puredata.info/listinfo/pd-dev
----------------------------------------------------------------------------
There is no way to peace, peace is the way. -A.J. Muste