forked from grame-cncm/faust
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
247 lines (195 loc) · 8.91 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
version := 0.9.93
DESTDIR ?=
PREFIX ?= /usr/local
CROSS=i586-mingw32msvc-
MAKEFILE := Makefile.unix
system ?= $(shell uname -s)
ifeq ($(system), Darwin)
LIB_EXT = dylib
else
ifneq ($(findstring MINGW32, $(system)),)
LIB_EXT = dll
EXE = .exe
else
LIB_EXT = so
endif
endif
prefix := $(DESTDIR)$(PREFIX)
arch := $(wildcard architecture/*.*)
mfiles := $(wildcard examples/Makefile.*)
vname := faust-$(version)-$(shell date +%y%m%d.%H%M%S)
zname := faust-$(version)
.PHONY: all world dynamic httpd win32 sound2faust
all :
$(MAKE) -C compiler -f $(MAKEFILE) prefix=$(prefix)
$(MAKE) -C architecture/osclib
# make world: This builds all the common targets for a fairly complete Faust
# installation: Faust compiler, sound2faust utility, OSC and HTTPD libraries
# (both static and dynamic). Most of the extra targets require additional
# dependencies and hence aren't built by default; please check the Faust
# README for details. This target may be built in parallel (make -j).
world : all sound2faust httpd dynamic
dynamic : all httpd
$(MAKE) -C architecture/httpdlib/src dynamic PREFIX=$(PREFIX)
$(MAKE) -C architecture/osclib dynamic PREFIX=$(PREFIX)
httpd :
$(MAKE) -C architecture/httpdlib/src
win32 :
$(MAKE) -C compiler -f $(MAKEFILE) prefix=$(prefix) CXX=$(CROSS)g++
$(MAKE) -C architecture/osclib CXX=$(CROSS)g++ system=Win32
sound2faust:
$(MAKE) -C tools/sound2faust
.PHONY: clean depend install ininstall dist parser help
help :
@echo "Usage : 'make; sudo make install'"
@echo "For http support : 'make httpd; make; sudo make install' (requires GNU libmicrohttpd)"
@echo "make or make all : compile the Faust compiler and osc support library"
@echo "make httpd : compile httpdlib (requires GNU libmicrohttpd)"
@echo "make dynamic : compile httpd & osc supports as dynamic libraries"
@echo "make sound2faust : compile sound to DSP file converter"
@echo "make parser : generate the parser from the lex and yacc files"
@echo "make clean : remove all object files"
@echo "make doc : generate the documentation using doxygen"
@echo "make doclib : generate the documentation of the faust libraries"
@echo "make install : install the compiler, tools and the architecture files in $(prefix)/bin $(prefix)/share/faust $(prefix)/include/faust"
@echo "make uninstall : undo what install did"
@echo "make dist : make a Faust distribution as a .zip file"
@echo "make log : make a changelog file"
parser :
$(MAKE) -C compiler -f $(MAKEFILE) parser
clean :
$(MAKE) -C compiler -f $(MAKEFILE) clean
$(MAKE) -C architecture/osclib clean
$(MAKE) -C architecture/httpdlib/src clean
$(MAKE) -C tools/sound2faust clean
depend :
$(MAKE) -C compiler -f $(MAKEFILE) depend
$(MAKE) -C architecture/osclib depend
$(MAKE) -C architecture/httpdlib/src depend
doc :
$(MAKE) -C compiler -f $(MAKEFILE) doc
doclib :
./libraries/generateDoc
install :
# install faust itself
mkdir -p $(prefix)/bin/
mkdir -p $(prefix)/include/
mkdir -p $(prefix)/include/faust/
mkdir -p $(prefix)/include/faust/osc/
install compiler/faust $(prefix)/bin/
# install architecture and faust library files
mkdir -p $(prefix)/share/faust
cp architecture/*.cpp $(prefix)/share/faust/
cp libraries/old/*.lib $(prefix)/share/faust/
cp libraries/*.lib $(prefix)/share/faust/
# This is needed by faust2lv2 -gui / lv2ui.cpp.
cp architecture/lv2qtgui.h $(prefix)/share/faust/
# This is needed by faust2faustvst -gui / faustvst.cpp.
cp architecture/faustvstqt.h $(prefix)/share/faust/
# install iOS
rm -rf $(prefix)/share/faust/iOS
cp -r architecture/iOS $(prefix)/share/faust/
cp -r architecture/osclib $(prefix)/share/faust/iOS
rm -rf $(prefix)/share/faust/iOS/DerivedData/
rm -rf $(prefix)/share/faust/iOSKeyboard
cp -r architecture/iOSKeyboard $(prefix)/share/faust/
# install AU
rm -rf $(prefix)/share/faust/AU/
cp -r architecture/AU $(prefix)/share/faust/
cp -r architecture/android $(prefix)/share/faust/
cp -r architecture/max-msp $(prefix)/share/faust/
# install math documentation files
cp architecture/mathdoctexts-*.txt $(prefix)/share/faust/
cp architecture/latexheader.tex $(prefix)/share/faust/
# install additional binary libraries (osc, http,...)
([ -e architecture/httpdlib/libHTTPDFaust.a ] && cp architecture/httpdlib/libHTTPDFaust.a $(prefix)/lib/) || echo libHTTPDFaust.a not available
([ -e architecture/httpdlib/libHTTPDFaust.$(LIB_EXT) ] && cp architecture/httpdlib/libHTTPDFaust.$(LIB_EXT) $(prefix)/lib/) || echo libHTTPDFaust.$(LIB_EXT) not available
([ -e architecture/osclib/libOSCFaust.a ] && cp architecture/osclib/libOSCFaust.a $(prefix)/lib/) || echo libOSCFaust.a not available
([ -e architecture/osclib/libOSCFaust.$(LIB_EXT) ] && cp -a architecture/osclib/libOSCFaust*.$(LIB_EXT)* $(prefix)/lib/) || echo libOSCFaust.$(LIB_EXT) not available
cp -r architecture/httpdlib/html/js $(prefix)/share/faust/js
([ -e architecture/httpdlib/src/hexa/stylesheet ] && cp architecture/httpdlib/src/hexa/stylesheet $(prefix)/share/faust/js/stylesheet.js) || echo stylesheet not available
([ -e architecture/httpdlib/src/hexa/jsscripts ] && cp architecture/httpdlib/src/hexa/jsscripts $(prefix)/share/faust/js/jsscripts.js) || echo jsscripts not available
# install includes files for architectures
cp -r architecture/faust $(prefix)/include/
# install additional includes files for binary libraries (osc, http,...)
cp architecture/osclib/faust/faust/OSCControler.h $(prefix)/include/faust/gui/
cp architecture/osclib/faust/faust/osc/*.h $(prefix)/include/faust/osc/
cp architecture/httpdlib/src/include/*.h $(prefix)/include/faust/gui/
# install faust2xxx tools
make -C tools/faust2appls install
# install sound2faust converter
[ -e tools/sound2faust/sound2faust ] && make -C tools/sound2faust install || echo sound2faust not compiled
# install webaudio
cp -r architecture/webaudio $(prefix)/share/faust/
# install Max/MSP
cp -r architecture/max-msp $(prefix)/share/faust/
uninstall :
rm -f $(addprefix $(prefix)/lib/, libHTTPDFaust.a libHTTPDFaust.$(LIB_EXT) libOSCFaust.a libOSCFaust*.$(LIB_EXT)*)
rm -rf $(prefix)/share/faust/
rm -rf $(prefix)/include/faust/
rm -f $(prefix)/bin/faust$(EXE)
make -C tools/faust2appls uninstall
rm -f $(prefix)/bin/sound2faust$(EXE)
# make a faust distribution .zip file
dist :
git archive --format=tar.gz -o faust-$(version).tgz --prefix=faust-$(version)/ HEAD
log :
git log --oneline --date-order --reverse --after={2014-05-19} master >log-$(version)
# Make Debian packages. This builds a package from the current HEAD in a
# subdirectory named $(debdist). It also creates the source archive that goes
# along with it. All files will be created in the toplevel Faust source
# directory.
# To make this work, you need to have the Debian package toolchain (debuild
# and friends) installed. Also make sure you have your DEBEMAIL and
# DEBFULLNAME environment variables set up as explained in the debchange(1)
# manual page. These are needed to create changelog entries and in order to
# sign the Debian packages created with 'make deb' and 'make debsrc'.
# The typical workflow is as follows:
# 1. Run 'make debchange' once to create a new debian/changelog entry. You
# *must* do this once so that debuild knows about the proper version number of
# the package.
# 2. Run 'make deb' to build a signed binary package. Or 'make deb-us' for an
# unsigned one.
# If you only need the binary package for local deployment then you're done.
# Otherwise proceed to step 3.
# 3. Run 'make debsrc' to create a signed Debian source package which can be
# uploaded, e.g, to Launchpad using 'dput'. Or 'make debsrc-us' for an
# unsigned package.
# 4. Run 'make debclean' to get rid of any files that were created in steps 2
# and 3.
# The Debian version gets derived from the package version $(version) as well
# as the date and serial number of the last commit.
debversion = $(version)+git$(shell git log -1 --format=%cd --date=short 2>/dev/null | sed -e 's/-//g')+$(shell git rev-list --count HEAD 2>/dev/null)
# Debian revision number of the package.
debrevision = 1
# Source tarball and folder.
debsrc = faust_$(debversion).orig.tar.gz
debdist = faust-$(debversion)
# This is used for automatically generated debian/changelog entries (cf. 'make
# debchange'). Adjust as needed.
debmsg = "Build from latest upstream source."
debprio = "low"
.PHONY: debversion debchange debclean deb debsrc deb-us debsrc-us
debversion:
@echo $(debversion)
debchange:
dch -u $(debprio) -v $(debversion)-$(debrevision) $(debmsg) && dch -r ""
debclean: $(debsrc)
rm -rf $(debdist)
rm -f faust_$(version)+git*
deb: $(debsrc)
rm -rf $(debdist)
tar xfz $(debsrc)
# Here we just copy debian/ from the working copy since it might have changes
# that haven't been committed yet.
cd $(debdist) && cp -R ../debian . && debuild $(DEBUILD_FLAGS)
rm -rf $(debdist)
debsrc:
$(MAKE) deb DEBUILD_FLAGS=-S
deb-us:
$(MAKE) deb DEBUILD_FLAGS="-us -uc"
debsrc-us:
$(MAKE) deb DEBUILD_FLAGS="-S -us -uc"
$(debsrc) :
git archive --format=tar.gz -o $(debsrc) --prefix=$(debdist)/ HEAD
# DO NOT DELETE