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