~ubuntu-branches/ubuntu/trusty/pd-smlib/trusty

« back to all changes in this revision

Viewing changes to Makefile

  • Committer: Bazaar Package Importer
  • Author(s): Hans-Christoph Steiner
  • Date: 2010-11-10 15:17:58 UTC
  • Revision ID: james.westby@ubuntu.com-20101110151758-3acjf69kiudo3gh4
Tags: upstream-0.12.1
ImportĀ upstreamĀ versionĀ 0.12.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
4
LIBRARY_NAME = smlib
 
5
 
 
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
 
9
 
 
10
# list all pd objects (i.e. myobject.pd) files here, and their helpfiles will
 
11
# be included automatically
 
12
PDOBJECTS = 
 
13
 
 
14
# example patches and related files, in the 'examples' subfolder
 
15
EXAMPLES = beattracker.pd normalizer.pd resonate-beat.pd
 
16
 
 
17
# manuals and related files, in the 'manual' subfolder
 
18
MANUAL = 
 
19
 
 
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
 
25
 
 
26
 
 
27
 
 
28
#------------------------------------------------------------------------------#
 
29
#
 
30
# things you might need to edit if you are using other C libraries
 
31
#
 
32
#------------------------------------------------------------------------------#
 
33
 
 
34
CFLAGS = -DPD -I"$(PD_INCLUDE)" -Wall -W -g
 
35
LDFLAGS =  
 
36
LIBS = 
 
37
 
 
38
#------------------------------------------------------------------------------#
 
39
#
 
40
# you shouldn't need to edit anything below here, if we did it right :)
 
41
#
 
42
#------------------------------------------------------------------------------#
 
43
 
 
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)
 
46
 
 
47
CFLAGS += -DVERSION='"$(LIBRARY_VERSION)"'
 
48
 
 
49
PD_INCLUDE = $(PD_PATH)/include
 
50
# where to install the library, overridden below depending on platform
 
51
prefix = /usr/local
 
52
libdir = $(prefix)/lib
 
53
pkglibdir = $(libdir)/pd-externals
 
54
objectsdir = $(pkglibdir)
 
55
 
 
56
INSTALL = install
 
57
INSTALL_PROGRAM = $(INSTALL) -p -m 644
 
58
INSTALL_DATA = $(INSTALL) -p -m 644
 
59
INSTALL_DIR     = $(INSTALL) -p -m 755 -d
 
60
 
 
61
ALLSOURCES := $(SOURCES) $(SOURCES_android) $(SOURCES_cygwin) $(SOURCES_macosx) \
 
62
                 $(SOURCES_iphoneos) $(SOURCES_linux) $(SOURCES_windows)
 
63
 
 
64
DISTDIR=$(LIBRARY_NAME)-$(LIBRARY_VERSION)
 
65
ORIGDIR=pd-$(LIBRARY_NAME)_$(LIBRARY_VERSION)
 
66
 
 
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)
 
72
    EXTENSION = pd_darwin
 
73
    OS = iphoneos
 
74
    PD_PATH = /Applications/Pd-extended.app/Contents/Resources
 
75
    IPHONE_BASE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin
 
76
    CC=$(IPHONE_BASE)/gcc
 
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)
 
84
    LIBS += -lc 
 
85
    STRIP = strip -x
 
86
    DISTBINDIR=$(DISTDIR)-$(OS)
 
87
  else # Mac OS X
 
88
    SOURCES += $(SOURCES_macosx)
 
89
    EXTENSION = pd_darwin
 
90
    OS = 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
 
96
    else
 
97
      FAT_FLAGS = -arch ppc -arch i386 -arch x86_64 -mmacosx-version-min=10.4
 
98
      SOURCES += $(SOURCES_iphoneos)
 
99
    endif
 
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)
 
104
    LIBS += -lc 
 
105
    STRIP = strip -x
 
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
 
109
  endif
 
110
endif
 
111
ifeq ($(UNAME),Linux)
 
112
  CPU := $(shell uname -m)
 
113
  SOURCES += $(SOURCES_linux)
 
114
  EXTENSION = pd_linux
 
115
  OS = linux
 
116
  PD_PATH = /usr
 
117
  OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer
 
118
  CFLAGS += -fPIC
 
119
  LDFLAGS += -Wl,--export-dynamic  -shared -fPIC
 
120
  LIBS += -lc
 
121
  STRIP = strip --strip-unneeded -R .note -R .comment
 
122
  DISTBINDIR=$(DISTDIR)-$(OS)-$(shell uname -m)
 
123
endif
 
124
ifeq (CYGWIN,$(findstring CYGWIN,$(UNAME)))
 
125
  CPU := $(shell uname -m)
 
126
  SOURCES += $(SOURCES_cygwin)
 
127
  EXTENSION = dll
 
128
  OS = cygwin
 
129
  PD_PATH = $(cygpath $(PROGRAMFILES))/pd
 
130
  OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer
 
131
  CFLAGS += 
 
132
  LDFLAGS += -Wl,--export-dynamic -shared -L"$(PD_PATH)/src" -L"$(PD_PATH)/bin"
 
133
  LIBS += -lc -lpd
 
134
  STRIP = strip --strip-unneeded -R .note -R .comment
 
135
  DISTBINDIR=$(DISTDIR)-$(OS)
 
136
endif
 
137
ifeq (MINGW,$(findstring MINGW,$(UNAME)))
 
138
  CPU := $(shell uname -m)
 
139
  SOURCES += $(SOURCES_windows)
 
140
  EXTENSION = dll
 
141
  OS = 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)
 
149
endif
 
150
 
 
151
# in case somebody manually set the HELPPATCHES above
 
152
HELPPATCHES ?= $(SOURCES:.c=-help.pd) $(PDOBJECTS:.pd=-help.pd)
 
153
 
 
154
CFLAGS += $(OPT_CFLAGS)
 
155
 
 
156
 
 
157
.PHONY = install libdir_install single_install install-doc install-exec install-examples install-manual clean dist etags $(LIBRARY_NAME)
 
158
 
 
159
all: $(SOURCES:.c=.$(EXTENSION))
 
160
 
 
161
%.o: %.c
 
162
        $(CC) $(CFLAGS) -o "$*.o" -c "$*.c"
 
163
 
 
164
%.$(EXTENSION): %.o
 
165
        $(CC) $(LDFLAGS) -o "$*.$(EXTENSION)" "$*.o"  $(LIBS)
 
166
        chmod a-x "$*.$(EXTENSION)"
 
167
 
 
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)
 
172
 
 
173
install: libdir_install
 
174
 
 
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)
 
187
 
 
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)
 
193
 
 
194
install-doc:
 
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
 
201
 
 
202
install-examples:
 
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; \
 
207
                done
 
208
 
 
209
install-manual:
 
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; \
 
214
                done
 
215
 
 
216
 
 
217
clean:
 
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)
 
222
 
 
223
distclean: clean
 
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)
 
230
 
 
231
 
 
232
$(DISTBINDIR):
 
233
        $(INSTALL_DIR) $(DISTBINDIR)
 
234
 
 
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)
 
242
 
 
243
$(DISTDIR):
 
244
        $(INSTALL_DIR) $(DISTDIR)
 
245
 
 
246
$(ORIGDIR):
 
247
        $(INSTALL_DIR) $(ORIGDIR)
 
248
 
 
249
dist: $(DISTDIR)
 
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; \
 
266
                done
 
267
        test -z "$(strip $(MANUAL))" || \
 
268
                $(INSTALL_DIR) $(DISTDIR)/manual && \
 
269
                for file in $(MANUAL); do \
 
270
                        $(INSTALL_DATA) manual/$$file $(DISTDIR)/manual; \
 
271
                done
 
272
        tar --exclude-vcs -czpf $(DISTDIR).tar.gz $(DISTDIR)
 
273
 
 
274
# make a Debian source package
 
275
dpkg-source:
 
276
        debclean
 
277
        make distclean dist
 
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)
 
283
 
 
284
etags:
 
285
        etags *.h $(SOURCES) ../../pd/src/*.[ch] /usr/include/*.h /usr/include/*/*.h
 
286
 
 
287
showsetup:
 
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)"
 
300
        @echo "CPU: $(CPU)"
 
301
        @echo "pkglibdir: $(pkglibdir)"
 
302
        @echo "DISTDIR: $(DISTDIR)"
 
303
        @echo "ORIGDIR: $(ORIGDIR)"