[SCM] pd-ableton-link/master: Use system-provided pd-lib-builder Makefile

umlaeute at users.alioth.debian.org umlaeute at users.alioth.debian.org
Wed Nov 23 21:45:21 UTC 2016


The following commit has been merged in the master branch:
commit 84c2eb86c83a110036286c2ec755f890cbadb65b
Author: IOhannes m zmölnig <zmoelnig at umlautQ.umlaeute.mur.at>
Date:   Wed Nov 23 22:45:05 2016 +0100

    Use system-provided pd-lib-builder Makefile

diff --git a/debian/build/Makefile b/debian/build/Makefile
index 45a7577..26b0522 100644
--- a/debian/build/Makefile
+++ b/debian/build/Makefile
@@ -13,5 +13,5 @@ cflags += -DLINK_PLATFORM_LINUX=1
 suppress-wunused = yes
 
 # include Makefile.pdlibbuilder
-PDLIBBUILDER_DIR=debian/build/
+PDLIBBUILDER_DIR=/usr/share/pd-lib-builder/
 include $(PDLIBBUILDER_DIR)Makefile.pdlibbuilder
diff --git a/debian/build/Makefile.pdlibbuilder b/debian/build/Makefile.pdlibbuilder
deleted file mode 100644
index 8be6339..0000000
--- a/debian/build/Makefile.pdlibbuilder
+++ /dev/null
@@ -1,1212 +0,0 @@
-# Makefile.pdlibbuilder dated 2016-10-27
-version = 0.4.1
-
-# Helper makefile for Pure Data external libraries.
-# Written by Katja Vetter March-June 2015 for the public domain. No warranties.
-# Inspired by Hans Christoph Steiner's Makefile Template and Stephan Beal's
-# ShakeNMake.
-#
-# GNU make version >= 3.81 required.
-#
-#
-#=== characteristics ===========================================================
-#
-#
-# - defines build settings based on autodetected OS and architecture
-# - defines rules to build Pd class- or lib executables from C or C++ sources
-# - defines rules for libdir installation
-# - defines convenience targets for developer and user
-# - evaluates implicit dependencies for non-clean builds
-#
-#
-#=== basic usage ===============================================================
-#
-#
-# In your Makefile, define your Pd lib name and class files, and include
-# Makefile.pdlibbuilder at the end of the Makefile. Like so:
-#
-#    ________________________________________________________________________
-#
-#     # Makefile for mylib
-#
-#     lib.name = mylib
-#
-#     class.sources = myclass1.c myclass2.c
-#
-#     datafiles = myclass1-help.pd myclass2-help.pd README.txt LICENSE.txt
-#
-#     include Makefile.pdlibbuilder
-#    ________________________________________________________________________
-#
-#
-# For files in class.sources it is assumed that class basename == source file
-# basename. The default target builds all classes as individual executables
-# with Pd's default extension for the platform. For anything more than the
-# most basic usage, continue reading.
-#
-#
-#=== list of Makefile.pdlibbuilder API variables ===============================
-#
-#
-# Variables available for definition in your library Makefile:
-#
-# - lib.name
-# - lib.setup.sources
-# - class.sources
-# - common.sources
-# - shared.sources
-# - <classname>.class.sources
-# - <classname>.class.ldflags
-# - <classname>.class.ldlibs
-# - cflags
-# - ldflags
-# - ldlibs
-# - datafiles
-# - datadirs
-# - makefiles
-# - makefiledirs
-# - externalsdir
-#
-# Optional multiline defines evaluated per operating system:
-#
-# - forLinux
-# - forDarwin
-# - forWindows
-#
-# Variables available for your makefile or make command line:
-#
-# - make-lib-executable
-# - suppress-wunused
-#
-# Path variables for make command line or environment:
-#
-# - PDDIR
-# - PDINCLUDEDIR
-# - PDBINDIR
-# - PDLIBDIR
-#
-# Standard make variables for make command line or environment:
-#
-# - CPPFLAGS
-# - CFLAGS
-# - LDFLAGS
-# - CC
-# - CXX
-# - INSTALL
-# - DESTDIR
-#
-# Deprecated path variables:
-#
-# - PD_PATH
-# - pdincludepath
-# - pdbinpath
-# - objectsdir
-#
-#
-#=== descriptions of Makefile.pdlibbuilder API variables =======================
-#
-#
-# lib.name: 
-# Name of the library directory as it will be installed / distributed. Also the
-# name of the lib executable in the case where all classes are linked into
-# a single binary.
-#
-# lib.setup.sources:
-# Source file(s) (C or C++) which must be compiled only when linking all classes
-# into a single lib binary.
-#
-# class.sources:
-# All sources files (C or C++) for which the condition holds that 
-# class name == source file basename.
-#
-# <classname>.class.sources:
-# Source file(s) (C or C++) specific to class <classname>. Use this for
-# multiple-source classes or when class name != source file basename.
-#
-# common.sources:
-# Source file(s) which must be statically linked to each class in the library.
-#
-# shared.sources:
-# Source file(s) (C or C++) to build a shared dynamic link lib, to be linked
-# with all class executables.
-#
-# cflags, ldflags, ldlibs:
-# Define cflags (preprocessor&compiler), ldflags (linker) and ldlibs (dynamic
-# link libs) for the whole library. These flags are added to platform-specific
-# flags defined by Makefile.pdlibbuilder.
-#
-# <classname>.class.ldflags and <classname>.class.ldlibs: 
-# Define ldflags resp. ldlibs specific to class <classname>. These flags are
-# added to platform-specific flags defined by Makefile.pdlibbuilder, and flags
-# defined in your Makefile for the whole library. Note: cflags can not be
-# defined per class in the current implementation.
-#
-# datafiles and datadirs: 
-# All extra files you want to include in binary distributions of the
-# library: abstractions and help patches, example patches, meta patch, readme
-# and license texts, manuals, sound files, etcetera. Use 'datafiles' for all
-# files that should go into your lib rootdir and 'datadirs' for complete
-# directories you want to copy from source to distribution.
-#
-# forLinux, forDarwin, forWindows:
-# Shorthand for 'variable definitions for Linux only' etc. Use like:
-#    define forLinux
-#      cflags += -DLINUX
-#      class.sources += linuxthing.c
-#    endef
-#
-# makefiles and makefiledirs: 
-# Extra makefiles or directories with makefiles that should be made in sub-make
-# processes.
-#
-# make-lib-executable:
-# When this variable is defined 'yes' in your makefile or as command argument,
-# Makefile.pdlibbuilder will try to build all classes into a single library
-# executable (but it will force exit if lib.setup.sources is undefined).
-# If your makefile defines 'make-lib-executable=yes' as the library default,
-# this can still be overriden with 'make-lib-executable=no' as command argument 
-# to build individual class executables (the Makefile.pdlibbuilder default.)
-#
-# suppress-wunused:
-# When this variable is defined ('yes' or any other value), -Wunused-variable,
-# -Wunused-parameter, -Wunused-value and -Wunused-function are suppressed,
-# but the other warnings from -Wall are retained.
-#
-# PDDIR:
-# Root directory of 'portable' pd package. When defined, PDINCLUDEDIR and 
-# PDBINDIR will be evaluated as $(PDDIR)/src and $(PDDIR)/bin.
-#
-# PDINCLUDEDIR:
-# Directory where Pd API m_pd.h should be found, and other Pd header files.
-# Overrides the default search path.
-#
-# PDBINDIR:
-# Directory where pd.dll should be found for linking (Windows only). Overrides
-# the default search path.
-#
-# PDLIBDIR:
-# Root directory for installation of Pd library directories. Overrides the
-# default install location.
-#
-# DESTDIR:
-# Prepended path component for staged install.
-#
-# CPPFLAGS:
-# Preprocessor flags which are not strictly required for building.
-#
-# CFLAGS:
-# Compiler flags which are not strictly required for building. Compiler flags
-# defined by Makefile.pdlibbuilder for warning, optimization and architecture
-# specification are overriden by CFLAGS.
-#
-# LDFLAGS:
-# Linker flags which are not strictly required for building. Linker flags
-# defined by Makefile.pdlibbuilder for architecture specification are overriden
-# by LDFLAGS.
-#
-# CC and CXX:
-# C and C++ compiler programs as defined in your build environment.
-#
-# INSTALL
-# Definition of install program.
-#
-# PD_PATH:
-# Equivalent to PDDIR. Supported for compatibility with pd-extended central
-# makefile, but deprecated otherwise.
-#
-# objectsdir:
-# Root directory for installation of Pd library directories, like PDLIBDIR but
-# not overridable by environment. Supported for compatibility with pd-extended
-# central makefile, but deprecated otherwise.
-#
-# pdincludepath, pdbinpath:
-# As PDINCLUDEDIR and PDBINDIR but not overridable by environment. Deprecated
-# as user variables.
-#
-#
-#=== paths =====================================================================
-#
-#
-# Source files in directories other than current working directory must be
-# prefixed with their relative path. Do not rely on VPATH or vpath.
-# Object (.o) files are built in the directory of their source files.
-# Executables are built in current working directory. 
-#
-# Default search path for m_pd.h and other API header files is platform 
-# dependent, and overridable by PDINCLUDEDIR:
-#
-# Linux:    /usr/include/pd
-#
-# OSX:      /Applications/Pd*.app/Contents/Resources/src
-#
-# Windows:  %PROGRAMFILES%/pd/src
-#
-# Default location to install pd libraries is platform dependent, and
-# overridable by PDLIBDIR:
-#
-# Linux:    /usr/local/lib/pd-externals
-# OSX:      ~/Library/Pd
-# Windows:  %APPDATA%/Pd
-#
-# https://puredata.info/docs/faq/how-do-i-install-externals-and-help-files
-# The rationale for not installing to ~/pd-externals by default on Linux
-# is that some people share the home dir between 32 and 64 bit installations.
-#
-#
-#=== targets ===================================================================
-#
-#
-# all: build $(executables) plus optional post target
-# post: target to build after $(executables)
-# alldebug: build all with -g option turned on for debug symbols
-# <classname>: force clean build of an individual class
-# <sourcefile>.pre: make preprocessor output file in current working directory
-# <sourcefile>.lst: make asm/source output file in current working directory
-#
-# install: install executables and data files
-# clean: remove build products from source tree
-#
-# help: print help text
-# vars: print makefile variables
-# allvars: print all variables
-# depend: print generated prerequisites
-# coffee: dummy target
-#
-# Variable $(executables) expands to class executables plus optional shared lib,
-# or alternatively to single lib executable when make-lib-executable=true.
-# Targets pre and post can be defined by library makefile. Make sure to include
-# Makefile.pdlibbuilder first so default target all will not be redefined.
-#
-#
-#=== Pd-extended libdir concept ================================================
-#
-#
-# For libdir layout as conceived by Hans-Christoph Steiner, see:
-#
-# https://puredata.info/docs/developer/Libdir
-#
-# Files README.txt, LICENSE.txt and <lib.name>-meta.pd are part of the libdir
-# convention. Help patches for each class and abstraction are supposed to be
-# available. Makefile.pdlibbuilder does not force the presence of these files
-# however. It does not automatically include such files in libdir installations.
-# Data files you want to include in distributions must be defined explicitly in
-# your Makefile.
-#
-#
-#=== Makefile.pdlibbuilder syntax conventions ==================================
-#
-#
-# Makefile.pdlibbuilder variable names are lower case. Default make variables,
-# environment variables, and standard user variables (CC, CXX, CFLAGS, DESTDIR)
-# are upper case. Use target 'allvars' to print all variables and their values.
-#
-# 'Fields' in data variables are separated by dots, like in 'foo.class.sources'.
-# Words in variables expressing a function or command are separated by dashes, 
-# like in 'make-lib-executable'.
-#
-#
-#=== useful make options =======================================================
-#
-#
-# Use 'make -d <target>' to print debug details of the make process.
-# Use 'make -p <target>' to print make's database.
-#
-#
-#=== TODO ======================================================================
-#
-#
-# - decide whether to use -static-libgcc or shared dll in MinGW
-# - cygwin support
-# - android support
-# - Windows 64 bit support
-# - figure out how to handle '$' in filenames
-# - add makefile template targets dpkg-source dist libdir distclean tags?
-#
-#
-#=== end of documentation sections =============================================
-#
-# 
-################################################################################
-################################################################################
-################################################################################
-
-
-# GNU make version 3.81 (2006) or higher is required because of the following:
-# - function 'info'
-# - variable '.DEFAULT_GOAL'
-
-# force exit when make version is < 3.81
-ifneq ($(firstword $(sort 3.81 $(MAKE_VERSION))), 3.81)
-  $(error GNU make version 3.81 or higher is required)
-endif
-
-# Relative path to externals root dir in multi-lib source tree like 
-# pd-extended SVN. Default is parent of current working directory. May be
-# defined differently in including makefile.
-externalsdir ?= ..
-
-# variable you can use to check if Makefile.pdlibbuilder is already included
-Makefile.pdlibbuilder = true
-
-
-################################################################################
-### variables: library name and version ########################################
-################################################################################
-
-
-# strip possibles spaces from lib.name, they mess up calculated file names
-lib.name := $(strip $(lib.name))
-
-# if meta file exists, check library version 
-metafile := $(wildcard $(lib.name)-meta.pd)
-
-ifdef metafile
-  lib.version := $(shell sed -n \
-    's|^\#X text [0-9][0-9]* [0-9][0-9]* VERSION \(.*\);|\1|p' \
-    $(metafile))
-endif
-
-
-################################################################################
-### variables: files ###########################################################
-################################################################################
-
-
-#=== sources ===================================================================
-
-
-# (re)define <classname>.class.sources using file names in class.sources
-
-define add-class-source
-$(notdir $(basename $v)).class.sources += $v
-endef
-
-$(foreach v, $(class.sources), $(eval $(add-class-source)))
-
-# derive class names from <classname>.class.sources variables
-sourcevariables := $(filter %.class.sources, $(.VARIABLES))
-classes := $(basename $(basename $(sourcevariables)))
-
-# accumulate all source files specified in makefile
-classes.sources := $(sort $(foreach v, $(sourcevariables), $($v)))
-all.sources := $(classes.sources) $(lib.setup.sources) \
-  $(shared.sources) $(common.sources)
-
-
-#=== object files ==============================================================
-
-
-# construct object filenames from all C and C++ source file names
-classes.objects := $(addsuffix .o, $(basename $(classes.sources)))
-common.objects := $(addsuffix .o, $(basename $(common.sources)))
-shared.objects := $(addsuffix .o, $(basename $(shared.sources)))
-lib.setup.objects := $(addsuffix .o, $(basename $(lib.setup.sources)))
-all.objects = $(classes.objects) $(common.objects) $(shared.objects) \
-  $(lib.setup.objects)
-
-
-#=== executables ===============================================================
-
-
-# use recursive variables here because executable extension is not yet known
-
-# construct class executable names from class names
-classes.executables = $(addsuffix .$(extension), $(classes))
-
-# construct shared lib executable name if shared sources are defined
-ifdef shared.sources
-  shared.lib = lib$(lib.name).$(shared.extension)
-else
-  shared.lib =
-endif
-
-
-################################################################################
-### variables per platform #####################################################
-################################################################################
-
-
-#=== flags per architecture ====================================================
-
-
-# Set architecture-dependent cflags, mainly for Linux. For Mac and Windows, 
-# arch.c.flags are overriden below.
-
-machine := $(shell uname -m)
-
-# Raspberry Pi 1st generation
-ifeq ($(machine), armv6l)
-  arch.c.flags = -march=armv6 -mfpu=vfp -mfloat-abi=hard
-endif
-
-# Beagle, Udoo, RPi2 etc.
-ifeq ($(machine), armv7l)
-  arch.c.flags = -march=armv7-a -mfpu=vfpv3 -mfloat-abi=hard
-endif
-
-# Intel 32 bit, build with SSE and SSE2 instructions
-ifeq ($(findstring $(machine), i386 i686), $(machine))
-  arch.c.flags = -march=pentium4 -mfpmath=sse -msse -msse2
-endif
-
-# Intel/AMD 64 bit, build with SSE, SSE2 and SSE3 instructions
-ifeq ($(findstring $(machine), ia64 x86_64), $(machine))
-  arch.c.flags = -march=core2 -mfpmath=sse -msse -msse2 -msse3 
-endif
-
-
-#=== operating system ==========================================================
-
-
-# The following systems are defined: Linux, Darwin, Windows. GNU and
-# GNU/kFreeBSD are treated as Linux to get the same options. System-specific
-# multiline defines (optionally set in library makefile) are conditionally
-# evaluated here.
-
-uname := $(shell uname)
-
-ifeq ($(findstring $(uname), Linux GNU GNU/kFreeBSD), $(uname))
-  system = Linux
-  $(eval $(forLinux))
-endif
-
-ifeq ($(uname), Darwin)
-  system = Darwin
-  $(eval $(forDarwin))
-endif
-
-ifeq ($(findstring MINGW, $(uname)), MINGW)
-  system = Windows
-  $(eval $(forWindows))
-endif
-
-# TODO: Cygwin, Android
-
-
-#=== flags and paths for Linux =================================================
-
-
-ifeq ($(system), Linux)
-  prefix = /usr/local
-  libdir := $(prefix)/lib
-  pkglibdir = $(libdir)/pd-externals
-  pdincludepath := $(wildcard /usr/include/pd)
-  extension = pd_linux
-  cpp.flags := -DUNIX
-  c.flags := -fpic
-  c.ldflags := -rdynamic -shared -fpic -Wl,-rpath,"\$$ORIGIN",--enable-new-dtags
-  c.ldlibs := -lc -lm
-  cxx.flags := -fpic -fcheck-new
-  cxx.ldflags := -rdynamic -shared -fpic -Wl,-rpath,"\$$ORIGIN",--enable-new-dtags
-  cxx.ldlibs := -lc -lm -lstdc++
-  shared.extension = so
-  shared.ldflags := -rdynamic -fpic -shared -Wl,-soname,$(shared.lib)
-  stripflags = --strip-unneeded -R .note -R .comment
-endif
-
-
-#=== flags and paths for Darwin ================================================
-
-
-# On OSX we try to build fat binaries by default. It is assumed that OSX i386
-# can build for ppc and OSX x86_64 can't. TODO: try to refine this condition.
-# LLVM-clang doesn't support -fcheck-new, therefore this flag is omitted for
-# OSX x86_64.
-
-
-ifeq ($(system), Darwin)
-  pkglibdir = $(HOME)/Library/Pd
-  pdincludepath := $(firstword $(wildcard \
-    /Applications/Pd*.app/Contents/Resources/src))
-  extension = pd_darwin
-  cpp.flags := -DUNIX -DMACOSX -I /sw/include
-  c.flags := 
-  c.ldflags := -undefined suppress -flat_namespace -bundle
-  c.ldlibs := -lc
-  cxx.ldflags := -undefined suppress -flat_namespace -bundle
-  cxx.ldlibs := -lc
-  shared.extension = dylib
-  shared.ldflags = -dynamiclib -undefined dynamic_lookup \
-    -install_name @loader_path/$(shared.lib) \
-    -compatibility_version 1 -current_version 1.0
-  stripflags = -x
-  version.flag := $(filter $(cflags), -mmacosx-version-min=%)
-  ifeq ($(machine), i386)
-    cxx.flags := -fcheck-new
-    arch := ppc i386 x86_64
-    version.flag ?= -mmacosx-version-min=10.4
-  endif
-  ifeq ($(machine), x86_64)
-    arch := i386 x86_64
-    version.flag ?= -mmacosx-version-min=10.5
-  endif
-  arch.c.flags := $(addprefix -arch , $(arch)) $(version.flag)
-  arch.ld.flags := $(arch.c.flags)
-endif
-
-
-#=== flags and paths for Windows ===============================================
-
-
-# Standard paths on Windows contain spaces, and GNU make functions treat such
-# paths as lists, with unintended effects. Therefore we must use shell function
-# ls instead of make's wildcard, and probe for each standard path individually.
-# Using double quotes around paths with spaces is obligatory. Since some path
-# variables are assembled or re-expanded later, great care must be taken to put
-# quotes at appropriate points throughout the makefile. Thanks, Bill.
-
-# paths for 32-bit executables on 64-bit Windows aren't yet defined here (TODO)
-ifeq ($(system), Windows)
-  pkglibdir := $(APPDATA)/Pd
-  ifndef pdbinpath
-    pdbinpath := $(shell ls -d "$(PROGRAMFILES)/pd/bin")
-  endif
-  ifndef pdincludepath
-    pdincludepath := $(shell ls -d "$(PROGRAMFILES)/pd/src")
-  endif
-endif
-
-# On Windows we build 32 bit by default to match Pd(-extended) binary 
-# distributions. This may change in the future.
-# TODO: decide whether -mms-bitfields should be specified.
-ifeq ($(system), Windows)
-  extension = dll
-  CC = gcc
-  CXX = g++
-  arch.c.flags := -march=pentium4 -msse -msse2 -mfpmath=sse
-  cpp.flags := -DMSW -DNT
-  c.flags :=
-  c.ldflags = -static-libgcc -shared \
-    -Wl,--enable-auto-import "$(pdbinpath)/pd.dll"
-  c.ldlibs :=
-  cxx.flags := -fcheck-new
-  cxx.ldflags = -static-libstdc++ -shared \
-    -Wl,--enable-auto-import "$(pdbinpath)/pd.dll"
-  cxx.ldlibs :=
-  shared.extension = dll
-  shared.ldflags = -static-libgcc -shared "$(pdbinpath)/pd.dll"
-  stripflags = --strip-unneeded -R .note -R .comment
-endif
-
-
-#=== paths =====================================================================
-
-
-# Platform-dependent default paths are specified above, but overridable.
-# Path variables in upper case can be defined as make command argument or in the
-# environment. 'PD_PATH' and 'objectsdir' are supported for compatibility with
-# the build system that pd-l2ork has inherited from pd-extended.
-
-PDDIR ?= $(PD_PATH)
-PDINCLUDEDIR ?= $(pdincludepath)
-PDBINDIR ?= $(pdbinpath)
-PDLIBDIR ?= $(firstword $(objectsdir) $(pkglibdir))
-
-ifneq ($(PDDIR),)
-  PDINCLUDEDIR := $(wildcard $(PDDIR)/src)
-  PDBINDIR := $(wildcard $(PDDIR)/bin)
-endif
-
-# base path where all components of the lib will be installed by default
-installpath := $(DESTDIR)$(PDLIBDIR)/$(lib.name)
-
-# check if include path contains spaces (as is often the case on Windows)
-# if so, store the path so we can later do checks with it
-pdincludepathwithspaces := $(if $(word 2, $(PDINCLUDEDIR)), $(PDINCLUDEDIR))
-
-
-#=== accumulated build flags ===================================================
-
-
-# From GNU make docs: 'Users expect to be able to specify CFLAGS freely
-# themselves.' So we use CFLAGS to define options which  are not strictly
-# required for compilation: optimizations, architecture specifications, and 
-# warnings. CFLAGS can be safely overriden using a make command argument.
-# Variables cflags, ldflags and ldlibs may be defined in including makefile.
-
-optimization.flags = -O3 -ffast-math -funroll-loops -fomit-frame-pointer
-warn.flags = -Wall -Wextra -Wshadow -Winline -Wstrict-aliasing
-
-# suppress -Wunused-variable & Co if you don't want to clutter a build log
-ifdef suppress-wunused
-  warn.flags += $(addprefix -Wno-unused-, function parameter value variable)
-endif
-
-CFLAGS = $(warn.flags) $(optimization.flags) $(arch.c.flags)
-
-# preprocessor flags
-cpp.flags := -DPD -I "$(PDINCLUDEDIR)" $(cpp.flags) $(CPPFLAGS)
-
-# flags for dependency checking (cflags from makefile may define -I options)
-depcheck.flags := $(cpp.flags) $(cflags)
-
-# architecture specifications for linker are overridable by LDFLAGS
-LDFLAGS := $(arch.ld.flags)
-
-# now add the same ld flags to shared dynamic lib
-shared.ldflags := $(shared.ldflags) $(LDFLAGS)
-
-# accumulated flags for C compiler / linker
-c.flags := $(cpp.flags) $(c.flags) $(cflags) $(CFLAGS)
-c.ldflags := $(c.ldflags) $(ldflags) $(LDFLAGS)
-c.ldlibs := $(c.ldlibs) $(ldlibs)
-
-# accumulated flags for C++ compiler / linker
-cxx.flags := $(cpp.flags) $(cxx.flags) $(cflags) $(CFLAGS)
-cxx.ldflags := $(cxx.ldflags) $(ldflags) $(LDFLAGS)
-cxx.ldlibs := $(cxx.ldlibs) $(ldlibs)
-
-
-################################################################################
-### variables: tools ###########################################################
-################################################################################
-
-
-# aliases so we can later define 'compile-$1' and set 'c' or 'cxx' as argument
-compile-c := $(CC)
-compile-cxx := $(CXX)
-
-
-################################################################################
-### checks #####################################################################
-################################################################################
-
-
-# At this point most variables are defined. Now do some checks and info's
-# before rules begin.
-
-# 'forward declaration' of default target, needed to do checks
-all:
-
-# To avoid unpredictable results, make sure the default target is not redefined
-# by including makefile. 
-ifneq ($(.DEFAULT_GOAL), all)
-  $(error Default target must be 'all'.)
-endif
-
-# find out which target(s) will be made
-ifdef MAKECMDGOALS
-  goals := $(MAKECMDGOALS)
-else
-  goals := all
-endif
-
-# store path to Pd API m_pd.h if it is found
-ifdef pdincludepath
-  mpdh := $(shell ls "$(PDINCLUDEDIR)/m_pd.h")
-endif
-
-# print Makefile.pdlibbuilder version
-$(info ++++ info: using Makefile.pdlibbuilder version $(version))
-
-# when making target all, check if m_pd.h is found and print info about it
-ifeq ($(goals), all)
-  $(if $(mpdh), \
-    $(info ++++ info: using Pd API $(mpdh)), \
-    $(warning Where is Pd API m_pd.h? Do 'make help' for info.))
-endif
-
-# print target info
-$(info ++++ info: making target $(goals) $(if $(lib.name),in lib $(lib.name)))
-
-# when installing, print installpath info
-$(if $(filter install install-lib, $(goals)), $(info ++++ info: \
-  installpath is '$(installpath)'))
-
-
-#=== define executables ========================================================
-
-
-# By default we build class executables, and optionally a shared dynamic link
-# lib. When make-lib-executable=yes we build all classes into a single lib
-# executable, on the condition that variable lib.setup.sources is defined.
-
-ifeq ($(make-lib-executable),yes)
-  $(if $(lib.setup.sources), ,\
-    $(error Can not build library blob because lib.setup.sources is undefined))
-  executables := $(lib.name).$(extension)
-else
-  executables := $(classes.executables) $(shared.lib)
-endif
-
-
-################################################################################
-### rules: special targets #####################################################
-################################################################################
-
-
-# Disable built-in rules. If some target can't be built with the specified
-# rules, it should not be built at all.
-MAKEFLAGS += --no-builtin-rules
-
-.PRECIOUS:
-.SUFFIXES:
-.PHONY: all post build-lib \
-        $(classes) $(makefiledirs) $(makefiles) \
-        install install-executables install-datafiles install-datadirs \
-        force clean vars allvars depend help
-
-
-################################################################################
-### rules: build targets #######################################################
-################################################################################
-
-
-# Target all forces the build of targets [$(executables) post] in
-# deterministic order. Target $(executables) builds class executables plus 
-# optional shared lib or alternatively a single lib executable when 
-# make-lib-executable=true. Target post is optionally defined by
-# library makefile.
-
-all: post
-post: $(executables)
-
-all:
-	$(info ++++info: target all in lib $(lib.name) completed)
-
-# build all with -g option turned on for debug symbols
-alldebug: c.flags += -g
-alldebug: cxx.flags += -g
-alldebug: all
-
-
-#=== class executable ==========================================================
-
-
-# recipe for linking objects in class executable
-# argument $1 = compiler type (c or cxx)
-# argument $2 = class basename
-define link-class
-  $(compile-$1) \
-  $($1.ldflags) $($2.class.ldflags) \
-  -o $2.$(extension) \
-  $(addsuffix .o, $(basename $($2.class.sources))) \
-  $(addsuffix .o, $(basename $(common.sources))) \
-  $($1.ldlibs) $($2.class.ldlibs) $(shared.lib)
-endef
-
-# general rule for linking object files in class executable
-%.$(extension): $(shared.lib)
-	$(info ++++ info: linking objects in $@ for lib $(lib.name))
-	$(if $(filter %.cc %.cpp, $($*.class.sources)), \
-        $(call link-class,cxx,$*), \
-        $(call link-class,c,$*))
-
-
-#=== library blob ==============================================================
-
-
-# build all classes into single executable
-build-lib: $(lib.name).$(extension)
-	$(info ++++ info: library blob $(lib.name).$(extension) completed)
-
-# recipe for linking objects in lib executable
-# argument $1 = compiler type (c or cxx)
-define link-lib
-  $(compile-$1) \
-  $($1.ldflags) $(lib.ldflags) \
-  -o $(lib.name).$(extension) $(all.objects) \
-  $($1.ldlibs) $(lib.ldlibs)
-endef
-
-# rule for linking objects in lib executable
-# declared conditionally to avoid name clashes
-ifeq ($(make-lib-executable),yes)
-$(lib.name).$(extension): $(all.objects)
-	$(if $(filter %.cc %.cpp, $(all.sources)), \
-        $(call link-lib,cxx), \
-        $(call link-lib,c))
-endif
-
-
-#=== shared dynamic lib ========================================================
-
-
-# recipe for linking objects in shared executable
-# argument $1 = compiler type (c or cxx)
-define link-shared
-  $(compile-$1) \
-  $(shared.ldflags) \
-  -o lib$(lib.name).$(shared.extension) $(shared.objects) \
-  $($1.ldlibs) $(shared.ldlibs)
-endef
-
-# rule for linking objects in shared executable
-# build recipe is in macro 'link-shared'
-lib$(lib.name).$(shared.extension): $(shared.objects)
-	$(info ++++ info: linking objects in shared lib $@)
-	$(if $(filter %.cc %.cpp, $(shared.sources)), \
-        $(call link-shared,cxx), \
-        $(call link-shared,c))
-
-
-#=== object files ==============================================================
-
-
-# recipe to make .o file from source
-# argument $1 is compiler type (c or cxx)
-define make-object-file
-  $(info ++++ info: making $@ in lib $(lib.name))
-  $(compile-$1) \
-  $($1.flags) \
-  -o $@ -c $<
-endef
-
-# Three rules to create .o files. These are double colon 'terminal' rules,
-# meaning they are the last in a rules chain.
-
-%.o:: %.c
-	$(call make-object-file,c)
-
-%.o:: %.cc
-	$(call make-object-file,cxx)
-
-%.o:: %.cpp
-	$(call make-object-file,cxx)
-
-
-#=== explicit prerequisites for class executables ==============================
-
-
-# For class executables, prerequisite rules are declared in run time. Target
-# 'depend' prints these rules for debugging purposes.
-
-# declare explicit prerequisites rule like 'class: class.extension'
-# argument $v is class basename
-define declare-class-target
-$v: $v.$(extension)
-endef
-
-# declare explicit prerequisites rule like 'class.extension: object1.o object2.o'
-# argument $v is class basename
-define declare-class-executable-target
-$v.$(extension): $(addsuffix .o, $(basename $($v.class.sources))) \
-  $(addsuffix .o, $(basename $(common.sources)))
-endef
-
-# evaluate explicit prerequisite rules for all classes
-$(foreach v, $(classes), $(eval $(declare-class-target)))
-$(foreach v, $(classes), $(eval $(declare-class-executable-target)))
-
-
-#=== implicit prerequisites for class executables ==============================
-
-
-# Evaluating implicit prerequisites (header files) with help from the
-# preprocessor is 'expensive' so this is done conditionally and selectively.
-# Note that it is also possible to trigger a build via install targets, in
-# which case implicit prerequisites are not checked.
-
-# When the Pd include path contains spaces it will mess up the implicit
-# prerequisites rules.
-disable-dependency-tracking := $(strip $(pdincludepathwithspaces))
-
-ifndef disable-dependency-tracking
-  must-build-everything := $(filter all, $(goals))
-  must-build-class := $(filter $(classes), $(goals))
-  must-build-sources := $(foreach v, $(must-build-class), $($v.class.sources))
-endif
-
-# declare implicit prerequisites rule like 'object.o: header1.h header2.h ...'
-# argument $1 is input source file(s)
-# dir is explicitly added because option -MM strips it by default
-define declare-object-target
-$(dir $1)$(filter %.o: %.h, $(shell $(CPP) $(depcheck.flags) -MM $1)) $(MAKEFILE_LIST)
-endef
-
-# evaluate implicit prerequisite rules when rebuilding everything
-ifdef must-build-everything
-  $(if $(wildcard $(all.objects)), \
-  $(info ++++ info: evaluating implicit prerequisites in lib $(lib.name).....) \
-  $(foreach v, $(all.sources), $(eval $(call declare-object-target, $v))))
-endif
-
-# evaluate implicit prerequisite rules when selectively building classes
-ifdef must-build-class
-  $(foreach v, $(must-build-sources), \
-  $(eval $(call declare-object-target, $v)))
-  $(foreach v, $(shared.sources), \
-  $(eval $(call declare-object-target, $v)))
-endif
-
-
-################################################################################
-### rules: preprocessor and assembly files #####################################
-################################################################################
-
-
-# Preprocessor and assembly output files for bug tracing etc. They are not part
-# of the build processes for executables. By default these files are created in
-# the current working directory. Dependency tracking is not performed, the build
-# is forced instead to make sure it's up to date.
-
-force:
-
-
-#=== preprocessor file =========================================================
-
-
-# make preprocessor output file with extension .pre
-# argument $1 = compiler type (c or cxx)
-define make-preprocessor-file
-  $(info ++++ info: making preprocessor output file $(notdir $*.pre) \
-  in current working directory)
-  $(compile-$1) -E $< $(c.flags) $($1.flags) -o $(notdir $*.pre)
-endef
-
-%.pre:: %.c force
-	$(call make-preprocessor-file,c)
-
-%.pre:: %.cc force
-	$(call make-preprocessor-file,cxx)
-
-%.pre:: %.cpp force 
-	$(call make-preprocessor-file,cxx)
-
-
-#=== assembly file =============================================================
-
-
-# make C / assembly interleaved output file with extension .lst
-# argument $1 = compiler type (c or cxx)
-define make-assembly-file
-  $(info ++++ info: making assembly output file $(notdir $*.lst) \
-  in current working directory)
-  $(compile-$1) \
-  -c -Wa,-a,-ad -fverbose-asm \
-  $($1.flags) \
-  $< > $(notdir $*.lst)
-endef
-
-%.lst:: %.c force
-	$(call make-assembly-file,c)
-
-%.lst:: %.cc force
-	$(call make-assembly-file,cxx)
-
-%.lst:: %.cpp force
-	$(call make-assembly-file,cxx)
-
-
-################################################################################
-### rules: installation targets ################################################
-################################################################################
-
-
-# Install targets depend on successful exit status of target all because nothing
-# must be installed in case of a build error.
-
-
-# -p = preserve time stamps
-# -m = set permission mode (as in chmod)
-# -d = create all components of specified directories
-INSTALL = install
-INSTALL_PROGRAM := $(INSTALL) -p -m 644
-INSTALL_DATA := $(INSTALL) -p -m 644
-INSTALL_DIR := $(INSTALL) -m 755 -d
-
-# strip spaces from file names
-executables := $(strip $(executables))
-datafiles := $(strip $(datafiles))
-datadirs := $(strip $(datadirs))
-
-# Do not make any install sub-target with empty variable definition because the
-# install program would exit with an error.
-install: $(if $(executables), install-executables)
-install: $(if $(datafiles), install-datafiles)
-install: $(if $(datadirs), install-datadirs)
-
-install-executables: all
-	$(INSTALL_DIR) -v "$(installpath)"
-	$(foreach v, $(executables), \
-	$(INSTALL_PROGRAM) '$v' "$(installpath)";)
-	$(info ++++ info: executables of lib $(lib.name) installed \
-        from $(CURDIR) to $(installpath))
-
-install-datafiles: all
-	$(INSTALL_DIR) -v "$(installpath)"
-	$(foreach v, $(datafiles), \
-	$(INSTALL_DATA) '$(v)' "$(installpath)";)
-	$(info ++++ info: data files of lib $(lib.name) installed \
-        from $(CURDIR) to $(installpath))
-
-install-datadirs: all
-	$(foreach v, $(datadirs), $(INSTALL_DIR) "$(installpath)/$v";)
-	$(foreach v, $(datadirs), \
-        $(INSTALL_DATA) $(wildcard $v/*) "$(installpath)/$v";)
-	$(info ++++ info: data directories of lib $(lib.name) installed \
-        from $(CURDIR) to $(installpath))
-
-
-################################################################################
-### rules: distribution targets ################################################
-################################################################################
-
-
-# TODO
-# These targets are implemented in Makefile Template, but I have to figure out
-# how to do it under the not-so-strict conditions of Makefile.pdlibbuilder.
-
-# make source package
-dist:
-	@echo "target dist not yet implemented"
-
-# make Debian source package
-dpkg-source:
-	@echo "target dpkg-source not yet implemented"
-
-$(ORIGDIR):
-
-$(DISTDIR):
-
-
-################################################################################
-### rules: clean targets #######################################################
-################################################################################
-
-
-# delete build products from build tree
-clean:
-	rm -f $(all.objects)
-	rm -f $(classes.executables) $(lib.name).$(extension) $(shared.lib)
-	rm -f *.pre *.lst
-
-# remove distribution directories and tarballs from build tree
-distclean: clean
-	@echo "target distclean not yet implemented"
-
-
-################################################################################
-### rules: submake targets #####################################################
-################################################################################
-
-
-# Iterate over sub-makefiles or makefiles in other directories.
-
-# When 'continue-make=yes' is set, sub-makes will report 'true' to the parent
-# process regardless of their real exit status. This prevents the parent make
-# from being aborted by a sub-make error. Useful when you want to quickly find
-# out which sub-makes from a large set will succeed.
-ifeq ($(continue-make),yes)
-  continue = || true
-endif
-
-# These targets will trigger sub-make processes for entries in 'makefiledirs'
-# and 'makefiles'.
-all alldebug install clean distclean dist dkpg-source: \
-        $(makefiledirs) $(makefiles)
-
-# this expands to identical rules for each entry in 'makefiledirs'
-$(makefiledirs):
-	$(MAKE) --directory=$@ $(MAKECMDGOALS) $(continue)
-
-# this expands to identical rules for each entry in 'makefiles'
-$(makefiles):
-	$(MAKE) --directory=$(dir $@) --makefile=$(notdir $@) $(MAKECMDGOALS) $(continue)
-
-
-################################################################################
-### rules: convenience targets #################################################
-################################################################################
-
-
-#=== show variables ============================================================
-
-
-# Several 'function' macro's cause errors when expanded within a rule or without
-# proper arguments. Variables which are set with the define directive are only
-# shown by name for that reason.
-functions = \
-add-class-source \
-declare-class-target \
-declare-class-executable-target \
-declare-object-target \
-link-class \
-link-lib \
-link-shared \
-make-object-file \
-make-preprocessor-file \
-make-assembly-file
-
-
-# show variables from makefiles
-vars:
-	$(info ++++ info: showing makefile variables:)
-	$(foreach v,\
-        $(sort $(filter-out $(functions) functions, $(.VARIABLES))),\
-        $(if $(filter file, $(origin $v)),\
-        $(info variable $v = $($v))))
-	$(foreach v, $(functions), $(info 'function' name: $v))
-	@echo
-
-# show all variables
-allvars:
-	$(info ++++ info: showing default, automatic and makefile variables:)
-	$(foreach v, \
-        $(sort $(filter-out $(functions) functions, $(.VARIABLES))), \
-        $(info variable ($(origin $v)) $v = $($v)))
-	$(foreach v, $(functions), $(info 'function' name: $v))
-	@echo
-
-
-#=== show dependencies =========================================================
-
-
-# show generated prerequisites rules
-depend:
-	$(info ++++ info: generated prerequisite rules)
-	$(foreach v, $(classes), $(info $(declare-class-target)))
-	$(foreach v, $(classes), $(info $(declare-class-executable-target)))
-	$(foreach v, $(all.sources), $(info $(call declare-object-target, $v)))
-	@echo
-
-
-#=== show help text ============================================================
-
-
-# brief info about targets and paths
-
-ifdef mpdh
-  mpdhinfo := $(mpdh)
-else
-  mpdhinfo := m_pd.h was not found. Is Pd installed?
-endif
-
-help:
-	@echo
-	@echo "  Main targets:"
-	@echo "    all:     build executables (default target)"
-	@echo "    install: install all components of the library"
-	@echo "    vars:    print makefile variables for troubleshooting"
-	@echo "    allvars: print all variables for troubleshooting"
-	@echo "    help:    print this help text"
-	@echo
-	@echo "  Pd API m_pd.h:"
-	@echo "    $(mpdhinfo)"
-	@echo "  You may specify your preferred Pd include directory as argument"
-	@echo "  to the make command, like 'PDINCLUDEDIR=path/to/pd/src'."
-	@echo
-	@echo "  Path for installation of your libdir(s):"
-	@echo "    $(PDLIBDIR)"
-	@echo "  Alternatively you may specify your path for installation as argument"
-	@echo "  to the make command, like 'PDLIBDIR=path/to/pd-externals'."
-	@echo
-	@echo "  Default paths are listed in the doc sections in Makefile.pdlibbuilder."
-	@echo
-
-
-#=== dummy target ==============================================================
-
-
-coffee:
-	@echo "Makefile.pdlibbuilder: Can not make coffee. Sorry."
-
-
-################################################################################
-### end of rules sections ######################################################
-################################################################################
-
-
-# for syntax highlighting in vim and github
-# vim: set filetype=make:
-
diff --git a/debian/control b/debian/control
index 13abf5d..bec646d 100644
--- a/debian/control
+++ b/debian/control
@@ -5,6 +5,7 @@ Maintainer: Debian Multimedia Maintainers <pkg-multimedia-maintainers at lists.alio
 Uploaders: IOhannes m zmölnig (Debian/GNU) <umlaeute at debian.org>
 Build-Depends: debhelper (>= 9),
  ableton-link-dev,
+ pd-lib-builder,
  puredata-dev,
 Standards-Version: 3.9.8
 Homepage: https://www.ableton.com/en/link/

-- 
pd-ableton-link packaging



More information about the pkg-multimedia-commits mailing list