1
## Pd library template version 1.0.3
2
# For instructions on how to use this template, see:
3
# http://puredata.info/docs/developer/MakefileTemplate
6
# add your .c source files to the SOURCES variable, help files will be
7
# included automatically
8
SOURCES = bp.c decimator.c deltas.c hip.c hist.c itov.c lavg.c lhist.c lhisti.c linspace.c lmax.c lmin.c lrange.c lstd.c prevl.c threshold.c vabs.c vclip.c vcog.c vdbtorms.c vdelta.c vfmod.c vftom.c vlavg.c vlmax.c vlmin.c vlrange.c vmax.c vmin.c vmtof.c vnmax.c vpow.c vrms.c vrmstodb.c vstd.c vsum.c vthreshold.c vvconv.c vvminus.c vvplus.c
10
# list all pd objects (i.e. myobject.pd) files here, and their helpfiles will
11
# be included automatically
14
# example patches and related files, in the 'examples' subfolder
15
EXAMPLES = beattracker.pd normalizer.pd resonate-beat.pd
17
# manuals and related files, in the 'manual' subfolder
20
# if you want to include any other files in the source and binary tarballs,
21
# list them here. This can be anything from header files, test patches,
22
# documentation, etc. README.txt and LICENSE.txt are required and therefore
23
# automatically included
24
EXTRA_DIST = SMLib.c SMLib-help.pd SMLib.dsp SMLib.dsw SMLib.opt SMLib.plg defines.h
28
#------------------------------------------------------------------------------#
30
# things you might need to edit if you are using other C libraries
32
#------------------------------------------------------------------------------#
34
CFLAGS = -DPD -I"$(PD_INCLUDE)" -Wall -W -g
38
#------------------------------------------------------------------------------#
40
# you shouldn't need to edit anything below here, if we did it right :)
42
#------------------------------------------------------------------------------#
44
# get library version from meta file
45
LIBRARY_VERSION = $(shell sed -n 's|^\#X text [0-9][0-9]* [0-9][0-9]* VERSION \(.*\);|\1|p' $(LIBRARY_NAME)-meta.pd)
47
CFLAGS += -DVERSION='"$(LIBRARY_VERSION)"'
49
PD_INCLUDE = $(PD_PATH)/include
50
# where to install the library, overridden below depending on platform
52
libdir = $(prefix)/lib
53
pkglibdir = $(libdir)/pd-externals
54
objectsdir = $(pkglibdir)
57
INSTALL_PROGRAM = $(INSTALL) -p -m 644
58
INSTALL_DATA = $(INSTALL) -p -m 644
59
INSTALL_DIR = $(INSTALL) -p -m 755 -d
61
ALLSOURCES := $(SOURCES) $(SOURCES_android) $(SOURCES_cygwin) $(SOURCES_macosx) \
62
$(SOURCES_iphoneos) $(SOURCES_linux) $(SOURCES_windows)
64
DISTDIR=$(LIBRARY_NAME)-$(LIBRARY_VERSION)
65
ORIGDIR=pd-$(LIBRARY_NAME)_$(LIBRARY_VERSION)
67
UNAME := $(shell uname -s)
68
ifeq ($(UNAME),Darwin)
69
CPU := $(shell uname -p)
70
ifeq ($(CPU),arm) # iPhone/iPod Touch
71
SOURCES += $(SOURCES_iphoneos)
74
PD_PATH = /Applications/Pd-extended.app/Contents/Resources
75
IPHONE_BASE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin
77
CPP=$(IPHONE_BASE)/cpp
78
CXX=$(IPHONE_BASE)/g++
79
ISYSROOT = -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk
80
IPHONE_CFLAGS = -miphoneos-version-min=3.0 $(ISYSROOT) -arch armv6
81
OPT_CFLAGS = -fast -funroll-loops -fomit-frame-pointer
82
CFLAGS := $(IPHONE_CFLAGS) $(OPT_CFLAGS) $(CFLAGS)
83
LDFLAGS += -arch armv6 -bundle -undefined dynamic_lookup $(ISYSROOT)
86
DISTBINDIR=$(DISTDIR)-$(OS)
88
SOURCES += $(SOURCES_macosx)
91
PD_PATH = /Applications/Pd-extended.app/Contents/Resources
92
OPT_CFLAGS = -ftree-vectorize -ftree-vectorizer-verbose=2 -fast
93
# build universal 32-bit on 10.4 and 32/64 on newer
94
ifeq ($(shell uname -r | sed 's|\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*|\1|'), 8)
95
FAT_FLAGS = -arch ppc -arch i386 -mmacosx-version-min=10.4
97
FAT_FLAGS = -arch ppc -arch i386 -arch x86_64 -mmacosx-version-min=10.4
98
SOURCES += $(SOURCES_iphoneos)
100
CFLAGS += $(FAT_FLAGS) -fPIC -I/sw/include
101
LDFLAGS += $(FAT_FLAGS) -bundle -undefined dynamic_lookup -L/sw/lib
102
# if the 'pd' binary exists, check the linking against it to aid with stripping
103
LDFLAGS += $(shell test -e $(PD_PATH)/bin/pd && echo -bundle_loader $(PD_PATH)/bin/pd)
106
DISTBINDIR=$(DISTDIR)-$(OS)
107
# install into ~/Library/Pd on Mac OS X since /usr/local isn't used much
108
pkglibdir=$(HOME)/Library/Pd
111
ifeq ($(UNAME),Linux)
112
CPU := $(shell uname -m)
113
SOURCES += $(SOURCES_linux)
117
OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer
119
LDFLAGS += -Wl,--export-dynamic -shared -fPIC
121
STRIP = strip --strip-unneeded -R .note -R .comment
122
DISTBINDIR=$(DISTDIR)-$(OS)-$(shell uname -m)
124
ifeq (CYGWIN,$(findstring CYGWIN,$(UNAME)))
125
CPU := $(shell uname -m)
126
SOURCES += $(SOURCES_cygwin)
129
PD_PATH = $(cygpath $(PROGRAMFILES))/pd
130
OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer
132
LDFLAGS += -Wl,--export-dynamic -shared -L"$(PD_PATH)/src" -L"$(PD_PATH)/bin"
134
STRIP = strip --strip-unneeded -R .note -R .comment
135
DISTBINDIR=$(DISTDIR)-$(OS)
137
ifeq (MINGW,$(findstring MINGW,$(UNAME)))
138
CPU := $(shell uname -m)
139
SOURCES += $(SOURCES_windows)
142
PD_PATH = $(shell cd "$(PROGRAMFILES)"/pd && pwd)
143
OPT_CFLAGS = -O3 -funroll-loops -fomit-frame-pointer
144
CFLAGS += -mms-bitfields
145
LDFLAGS += -s -shared -Wl,--enable-auto-import
146
LIBS += -L"$(PD_PATH)/src" -L"$(PD_PATH)/bin" -L"$(PD_PATH)/obj" -lpd -lwsock32 -lkernel32 -luser32 -lgdi32
147
STRIP = strip --strip-unneeded -R .note -R .comment
148
DISTBINDIR=$(DISTDIR)-$(OS)
151
# in case somebody manually set the HELPPATCHES above
152
HELPPATCHES ?= $(SOURCES:.c=-help.pd) $(PDOBJECTS:.pd=-help.pd)
154
CFLAGS += $(OPT_CFLAGS)
157
.PHONY = install libdir_install single_install install-doc install-exec install-examples install-manual clean dist etags $(LIBRARY_NAME)
159
all: $(SOURCES:.c=.$(EXTENSION))
162
$(CC) $(CFLAGS) -o "$*.o" -c "$*.c"
165
$(CC) $(LDFLAGS) -o "$*.$(EXTENSION)" "$*.o" $(LIBS)
166
chmod a-x "$*.$(EXTENSION)"
168
# this links everything into a single binary file
169
$(LIBRARY_NAME): $(SOURCES:.c=.o) $(LIBRARY_NAME).o
170
$(CC) $(LDFLAGS) -o $(LIBRARY_NAME).$(EXTENSION) $(SOURCES:.c=.o) $(LIBRARY_NAME).o $(LIBS)
171
chmod a-x $(LIBRARY_NAME).$(EXTENSION)
173
install: libdir_install
175
# The meta and help files are explicitly installed to make sure they are
176
# actually there. Those files are not optional, then need to be there.
177
libdir_install: $(SOURCES:.c=.$(EXTENSION)) install-doc install-examples install-manual
178
$(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
179
$(INSTALL_DATA) $(LIBRARY_NAME)-meta.pd \
180
$(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
181
test -z "$(strip $(SOURCES))" || (\
182
$(INSTALL_PROGRAM) $(SOURCES:.c=.$(EXTENSION)) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) && \
183
$(STRIP) $(addprefix $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/,$(SOURCES:.c=.$(EXTENSION))))
184
test -z "$(strip $(PDOBJECTS))" || \
185
$(INSTALL_DATA) $(PDOBJECTS) \
186
$(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
188
# install library linked as single binary
189
single_install: $(LIBRARY_NAME) install-doc install-exec
190
$(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
191
$(INSTALL_PROGRAM) $(LIBRARY_NAME).$(EXTENSION) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
192
$(STRIP) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/$(LIBRARY_NAME).$(EXTENSION)
195
$(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
196
test -z "$(strip $(SOURCES) $(PDOBJECTS))" || \
197
$(INSTALL_DATA) $(HELPPATCHES) \
198
$(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
199
$(INSTALL_DATA) README.txt $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/README.txt
200
$(INSTALL_DATA) LICENSE.txt $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/LICENSE.txt
203
test -z "$(strip $(EXAMPLES))" || \
204
$(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/examples && \
205
for file in $(EXAMPLES); do \
206
$(INSTALL_DATA) examples/$$file $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/examples; \
210
test -z "$(strip $(MANUAL))" || \
211
$(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/manual && \
212
for file in $(MANUAL); do \
213
$(INSTALL_DATA) manual/$$file $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/manual; \
218
-rm -f -- $(SOURCES:.c=.o) $(SOURCES_LIB:.c=.o)
219
-rm -f -- $(SOURCES:.c=.$(EXTENSION))
220
-rm -f -- $(LIBRARY_NAME).o
221
-rm -f -- $(LIBRARY_NAME).$(EXTENSION)
224
-rm -f -- $(DISTBINDIR).tar.gz
225
-rm -rf -- $(DISTBINDIR)
226
-rm -f -- $(DISTDIR).tar.gz
227
-rm -rf -- $(DISTDIR)
228
-rm -f -- $(ORIGDIR).tar.gz
229
-rm -rf -- $(ORIGDIR)
233
$(INSTALL_DIR) $(DISTBINDIR)
235
libdir: all $(DISTBINDIR)
236
$(INSTALL_DATA) $(LIBRARY_NAME)-meta.pd $(DISTBINDIR)
237
$(INSTALL_DATA) $(SOURCES) $(DISTBINDIR)
238
$(INSTALL_DATA) $(HELPPATCHES) $(DISTBINDIR)
239
test -z "$(strip $(EXTRA_DIST))" || \
240
$(INSTALL_DATA) $(EXTRA_DIST) $(DISTBINDIR)
241
# tar --exclude-vcs -czpf $(DISTBINDIR).tar.gz $(DISTBINDIR)
244
$(INSTALL_DIR) $(DISTDIR)
247
$(INSTALL_DIR) $(ORIGDIR)
250
$(INSTALL_DATA) Makefile $(DISTDIR)
251
$(INSTALL_DATA) README.txt $(DISTDIR)
252
$(INSTALL_DATA) LICENSE.txt $(DISTDIR)
253
$(INSTALL_DATA) $(LIBRARY_NAME)-meta.pd $(DISTDIR)
254
test -z "$(strip $(ALLSOURCES))" || \
255
$(INSTALL_DATA) $(ALLSOURCES) $(DISTDIR)
256
test -z "$(strip $(PDOBJECTS))" || \
257
$(INSTALL_DATA) $(PDOBJECTS) $(DISTDIR)
258
test -z "$(strip $(HELPPATCHES))" || \
259
$(INSTALL_DATA) $(HELPPATCHES) $(DISTDIR)
260
test -z "$(strip $(EXTRA_DIST))" || \
261
$(INSTALL_DATA) $(EXTRA_DIST) $(DISTDIR)
262
test -z "$(strip $(EXAMPLES))" || \
263
$(INSTALL_DIR) $(DISTDIR)/examples && \
264
for file in $(EXAMPLES); do \
265
$(INSTALL_DATA) examples/$$file $(DISTDIR)/examples; \
267
test -z "$(strip $(MANUAL))" || \
268
$(INSTALL_DIR) $(DISTDIR)/manual && \
269
for file in $(MANUAL); do \
270
$(INSTALL_DATA) manual/$$file $(DISTDIR)/manual; \
272
tar --exclude-vcs -czpf $(DISTDIR).tar.gz $(DISTDIR)
274
# make a Debian source package
278
mv $(DISTDIR) $(ORIGDIR)
279
tar --exclude-vcs -czpf ../$(ORIGDIR).orig.tar.gz $(ORIGDIR)
280
rm -f -- $(DISTDIR).tar.gz
281
rm -rf -- $(DISTDIR) $(ORIGDIR)
282
cd .. && dpkg-source -b $(LIBRARY_NAME)
285
etags *.h $(SOURCES) ../../pd/src/*.[ch] /usr/include/*.h /usr/include/*/*.h
288
@echo "CFLAGS: $(CFLAGS)"
289
@echo "LDFLAGS: $(LDFLAGS)"
290
@echo "LIBS: $(LIBS)"
291
@echo "PD_INCLUDE: $(PD_INCLUDE)"
292
@echo "PD_PATH: $(PD_PATH)"
293
@echo "objectsdir: $(objectsdir)"
294
@echo "LIBRARY_NAME: $(LIBRARY_NAME)"
295
@echo "LIBRARY_VERSION: $(LIBRARY_VERSION)"
296
@echo "SOURCES: $(SOURCES)"
297
@echo "PDOBJECTS: $(PDOBJECTS)"
298
@echo "ALLSOURCES: $(ALLSOURCES)"
299
@echo "UNAME: $(UNAME)"
301
@echo "pkglibdir: $(pkglibdir)"
302
@echo "DISTDIR: $(DISTDIR)"
303
@echo "ORIGDIR: $(ORIGDIR)"