aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/flext/build.txt
blob: e489a085fc854310f03771c49936fa8eb6e5134b (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
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:

1) Using the flext build system
1.1) Building flext
1.2) Building externals
1.3) Tested configurations

2) Using autoconf

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

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

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 gnumake
pd mingw, using gnumake
max msvc, using nmake
pd bcc, using bmake

under Linux or MacOSX:
pd gcc, using gnumake

under MacOSX:
max gcc, using gnumake - 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 for 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) Building 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.

Then install flext with (under Windows)
	build pd msvc install
or (under unix)
	bash build.sh pd gcc install


1.2) 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.3) Building externals
=======================

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
win-pd-cygwin, 
win-max-msvc, 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.