aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/flext/build.txt
blob: 04eb5248052a0d8a04f0f1df0e4c16452eaade72 (plain)
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
248
249
250
251
flext - C++ layer for Max/MSP and pd (pure data) externals

Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.  

----------------------------------------------------------------------------

This document consists of the following parts:

0) Important stuff at the beginning
1) Using the flext build system
1.1) Building and installing flext
1.2) Building externals
1.3) Tested configurations

2) Using autoconf

3) Other ways to compile flext and flext-based externals

----------------------------------------------------------------------------

0) Important stuff at the beginning
===================================

Please be aware that the build system might have difficulties handling paths with spaces.
Under unix you might get along with escaping your\ path or quoting "your path".
Under Windows escaping doesn't work at all and quoting might not work either - therefore it's
best not to use spaced paths at all.

----------------------------------------------------------------------------

1) Using the flext build system
===============================

flext provides a universal build system which supports

- various operating systems
	Windows (win)
	Linux (lnx)
	MacOSX (mac)
- various real-time systems
	Pure Data (pd)
	Max/MSP (max)
- various make programs
	GNU make (gnumake)
	Microsoft nmake (nmake)
	Borland make (bmake)
- various compilers
	Microsoft Visual C/C++ 6.0 or .NET 2002/2003 (msvc)
	GNU gcc 2.95 and above (gcc,cygwin,mingw)
	Borland bcc32 (bcc)

Useful combinations of the above are

under Windows:
pd msvc, using nmake
pd cygwin, using GNU make
pd mingw, using GNU make (from the CMD prompt, not msys!)
max msvc, using nmake
max cygwin, using GNU make
max mingw, using GNU make (from the CMD prompt, not msys!)
pd bcc, using Borland make

under Linux or MacOSX:
pd gcc, using GNU make

under MacOSX:
max gcc, using GNU make - Mach-O externals only (Max 4.5 upwards)


There are two central scripts in the flext folder which invoke the building process:
- build.sh for bash shells (Linux, MacOSX, cygwin)
- build.bat for the Windows command prompt

A project needs to provide some information in order to be built properly.
By default, this resides in a file called package.txt


Please note, that the build system is shell-oriented, which means, that you'll have
to launch a command prompt (cmd.exe under Windows) and probably also set some
environment variables for your development system (e.g. run vcvars32.bat included with Microsoft Visual Studio)

By invoking one of the build scripts (e.g. with "bash build.sh" under unix, 
or just "build" unter Windows) you'll get some lines of help.
Operating System, real-time system and compiler need to be provided as arguments.


See buildsys/readme.txt for developer-centered information.


1.1) Prerequisites
==================

Linux:
- A gnu g/g++ compiler should be present on any system. 
  The command "g++ --version" should show version 2.95 at least. Compiler version >= 3.3 is recommended.

OSX:
- The developer package must be installed which contains all necessary parts.

Windows:
- Microsoft Visual Studio 6, .NET 2002, .NET 2003 or .NET 2005
  be sure to use the VCVARS32.BAT (or probably SDKVARS.BAT) command on the prompt to set up the environment variables
or
- cygwin with binutils, gcc and make packages



1.2) Building and installing flext
==================================

Flext can build itself using the build system.
From the flext main directory, run the build script

e.g. under Windows
	build pd msvc
or under unix with
	bash build.sh pd gcc

When you run it for the first time, one or more configuration files will be created 
from templates - you will get a message on the console. 
You should edit the files to adapt it to your system.

Depending on your platform these will have name like
buildsys/config-win-pd-msvc.txt
or
buildsys/config-lnx-pd-gcc.txt
or
buildsys/config-mac-max-gcc.txt


After editing the files you will have to run the build script again to ensure that flext is built.

After successfully building everything, you can install flext with (under Windows)
	build pd msvc install
or (under unix)
	bash build.sh pd gcc install


You will probably have to have superuser rights in order to install things 
into the default location.
(try "sudo" or "su -c" prefixes, or log in as root)


1.3) Building externals
=======================

The flext build system can be used to compile flext-based externals or also
native PD and Max/MSP externals, provided there is a package.txt file in the project folder.

In the shell, change to the project folder.
Then, simply run the flext build script, 

e.g. under Windows
	..\flext\build pd msvc
Then install your newly built external with
	..\flext\build pd msvc install
You can clean up the intermediate build folders with
	..\flext\build pd msvc clean

or under unix with
	bash ../flext/build.sh pd gcc
Then install your external with
	bash ../flext/build.sh pd gcc install
You can clean up the intermediate build folders with
	bash ../flext/build.sh pd gcc clean


1.4) Tested configurations
==========================

Both flext and flext-based externals have been successfully built with the 
following combination of platform-system-compiler, build type.
A missing combination does not necessarily mean that it won't work.

win-pd-msvc, single/multi/shared
win-pd-bcc, single/multi/shared
win-pd-mingw, single/multi/shared (from CMD prompt, not MSYS)
win-pd-cygwin, single/multi/shared
win-max-msvc, single/multi/shared
win-max-cygwin, single/multi/shared
win-max-mingw, single/multi/shared


mac-pd-gcc, single/multi/shared
mac-max-gcc, single/multi/shared

lnx-pd-gcc, single/multi/shared

----------------------------------------------------------------------------

2) Using autoconf
=================

Thanks to Tim Blechmann, flext can also be built using autoconf.
This only works under unix shells.

When starting from a fresh cvs-based copy of flext first run
./bootstrap.sh

then you can run
./configure --help 
to get a page of options.

You need to pass the path to the PD source files to the ./configure script, e.g. with
./configure --with-sysdir=/usr/local/src/pd/src

Then build flext with
make
and install it with
su -c "make install"

----------------------------------------------------------------------------

3) Other ways to compile flext and flext-based externals
========================================================

- Windows - Microsoft Visual Studio projects (.vcproj files)

    Please have a look at the projects delivered with flext and flext-based externals.

- MacOSX - Apple Xcode projects (.xcode bundles)

    Please have a look at the projects delivered with flext and flext-based externals.

    Xcode projects often use some Source Trees (definable in the Xcode Preferences).
    - Flext - the flext main folder
    - PD - the PD installation
    - Max SDK - the Max SDK (path ending with "c74support")
    - Max Common - Max common files (normally /Library/Application\ Support/Cycling\ \'74 )

- MacOSX - Metrowerks Codewarrior (.mcp files)

    You should have the following "Source Trees" (CW preferences, not project specific!) defined:
    "OS X Volume" - Pointing to your OSX boot drive
    "flext" - Pointing to the flext main directory
    "Cycling74 OSX" - Pointing to the SDK for Max/MSP - the path should end with /c74support

    With your project using flext use the prefix file "flcwmax-x.h" or, 
    alternatively "flcwmax-x-thr.h" for threading support.

- MacOS9 - Metrowerks Codewarrior (.mcp files)

    You should have the following "Source Trees" (CW preferences, not project specific!) defined:
    "flext" - Pointing to the flext main directory
    "Cycling74" - Pointing to the Cycling 74 SDK
    "MP SDK" - Pointing to the Multiprocessing SDK (for threading support)

    With your project using flext use the prefix file "flcwmax.h" or, 
    alternatively "flcwmax-thr.h" for threading support.