1INTRODUCTION
2============
3
4Evolvotron is interactive "generative art" software to evolve
5images/textures/patterns through an iterative process of random
6mutation and user-selection driven evolution.  If you like lava-lamps,
7and still think the Mandelbrot set is cool, this could be the software
8for you.
9
10It uses C++ (and STL+Boost) & Qt (which is Qt Group's GUI
11toolkit; it's ABSOLUTELY NOTHING TO DO WITH APPLE'S QUICKTIME!).
12It's multithreaded (using Qt's threading API).
13
14Home page: http://www.bottlenose.net/share/evolvotron
15
16Author: timday at timday dot com
17
18This file describes how to build evolvotron.
19See the USAGE file for details of what the built executable can do.
20
21If you manage to make practical use of evolvotron, especially
22if evolvotron derived imagery makes it into print or other
23mass media, I'd love to hear about it: please email!
24
25Have fun
26Tim
27
28LICENSE
29=======
30This program is free software; you can redistribute it and/or
31modify it under the terms of the GNU General Public License
32as published by the Free Software Foundation; either version 2
33of the License, or (at your option) any later version.
34
35This program is distributed in the hope that it will be useful,
36but WITHOUT ANY WARRANTY; without even the implied warranty of
37MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
38GNU General Public License for more details.
39
40You should have received a copy of the GNU General Public License
41along with this program; if not, write to the Free Software
42Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
43
44[The license should be in the LICENSE file in the same directory as this
45README]
46
47BUILDING
48========
49There's no reason it shouldn't work on any platform with a correctly
50set up qmake.  You do NOT need to be root (there is no install stage).
51
52In the top level directory, you can either do
53
54  qmake "VERSION_NUMBER=x.x.x" main.pro
55  make
56
57or just have both done for you by doing
58
59  ./BUILD.sh
60
61which will pick up the VERSION_NUMBER from the file VERSION in this directory.
62
63Make will recurse into and build the libfunction & libevolvotron directories
64(which is 99% of the work) and some additional subdirectories with
65executables.
66
67Among other things, this will give you an "evolvotron"
68executable which you can run immediately with
69  ./evolvotron/evolvotron
70and/or copy where you like (there are no shared libs or "resource files"
71needing additional attention).
72
73See the USAGE file (or in-app manual) for instructions.
74
75The author mainly tracks Debian stable.
76
77Non-linux platform issues
78-------------------------
79On the whole, Qt does an excellent job of insulating code from
80platform specific details.  However, there is a little bit of
81linux-specific code in evolvotron.
82
83If you don't have a PLATFORM_... define set, you'll get some warnings
84about no default implementations of functions in platform_specific.cpp,
85but should still get a working evolvotron (although missing some functionality
86with regard to automatically choosing how many threads to run and controlling
87thread priority).
88
89All the platform specific code should live in
90  libevolvtron/platform_specific.cpp
91and is selected by compile options
92  -DPLATFORM_LINUX or -DPLATFORM_BSD
93(with more potentially addable for other platforms).
94
95Setting the appropriate build options is most easily set by editing
96an appropriate
97  DEFINES+=PLATFORM_LINUX
98or
99  DEFINES+=PLATFORM_BSD
100near the top of the
101  common.pro
102file.  Qt doesn't make a fine enough distinction between unix platforms
103to decide completely automatically, and the situation is further complicated
104by e.g Fink's Qt not considering itself to be a Qt 'macx' build.
105
106Debugging builds
107----------------
108
109Many build failures are simply because the necessary Qt build tools
110aren't in your path:
111  which qmake
112  which moc
113should both find something.
114
115If you have gcc/c++ compile problems problems:
116
117If you have to change anything, the chances are it should be changed in
118common.pro.  Remember that any Makefiles you can see are generated
119by qmake from .pro files and therefore hacking on the Makefiles is
120generally a fruitless exercise.
121
122Some source releases have had problems with other versions of gcc than
123the ones I test on.  A COMPLETE record of a failed build would be
124appreciated (including the initial display of the gcc version).
125If you can fix it, then patches would be even better!
126
127
128INSTALL
129=======
130The evolvotron sources don't try to provide an installer.
131The assumption is that packagers will have a better idea of where
132files should be copied to on their systems, and the tools to do it.
133Doing
134  make install
135will recursively descend into the various build directories, but
136does nothing in each one.
137
138The things you're likely to want to install are
139(in order of interest):
140
141The main executable and man page:
142  ./evolvotron/evolvotron
143  ./man/man1/evolvotron.1
144
145User documentation (standalone version of the builtin manual):
146  USAGE
147An HTML version of the above:
148  ./evolvotron.html
149
150Command-line driven tools and their man pages:
151  ./evolvotron_render/evolvotron_render
152  ./man/man1/evolvotron_render.1
153  ./evolvotron_mutate/evolvotron_mutate
154  ./man/man1/evolvotron_mutate.1
155
156There are NO extra supporting files built
157(e.g shared libraries, config files, "resource" files)
158which need to be in special places for the software to work.
159
160PACKAGING
161=========
162There are a few things which might be useful to packagers:
163
164mkdeb
165 - script to build .deb files (using the strangely unpopular
166"yada", and pbuilder).  This is used to build the .debs put
167up on sourceforge, but the "official" Debian ones (and Ubuntu
168derivatives) are more conventionally packaged by Gurkan Sengun.
169Yada is obsoleted as of Debian's "Wheezy" release however.
170
171rpm/
172 - directory for contributed RPM related resources.
173
174BUILDING CODE DOCUMENTATION
175===========================
176If you have doxygen (and graphviz too) and want to build
177the source code documentation, execute
178  ./mkdoc
179at the top level.
180The code documentation then appears in ./doc/html/
181This hasn't been tested in a long while now, although the
182doxygen commenting style has been kept up.
183