[PD-dev] [PATCH] made automake system kind-of work
Hans-Christoph Steiner
hans at at.or.at
Thu Jul 15 16:06:07 CEST 2010
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 at iem.at
> http://lists.puredata.info/listinfo/pd-dev
----------------------------------------------------------------------------
There is no way to peace, peace is the way. -A.J. Muste
More information about the Pd-dev
mailing list