1 These are instructions for how to compile Quat 1.20 for Linux/Unix, 2Windows and Mac OSX. 3 4In general you will need FLTK 1.1 (1.0.x doesn't work) and ZLIB 1.1.4. 5You can get FLTK 1.1 at http://www.fltk.org/ 6Currently, FLTK 1.1 is still in beta. FLTK 1.1.0b13 is tested and works 7well. 8ZLIB is available at http://www.zlib.org/ 9It's always possible to compile a console (text-mode-only) version which 10doesn't require FLTK and C++. 11 12How to compile Quat 1.20 under Linux/Unix 13========================================= 14 15 Before you can compile Quat, you need to have FLTK 1.1 and 16ZLIB 1.1.4 compiled and installed. 17Compiling Quat should then be as easy as: 18 19./configure 20make 21make install 22 23 Fluid, the user interface designer of FLTK, is only required if you 24plan to modify the user interface (the *.fl files). Fluid is part 25of the FLTK library and should be installed on every system that 26has FLTK installed. 27 28 To configure FLTK, ./configure looks for 'fltk-config'. If it can't 29find it, it compiles as a console version only (without a user 30interface). In this case, if FLTK is installed but could not be 31found, invoke ./configure like this: 32./configure FLTK=<pathname of fltk-config> 33for example: 34./configure FLTK=/usr/local/fltk-1.1/bin/fltk-config 35All information needed about FLTK is read from fltk-config. 36 37 If you want to compile a text-only version (without a user 38interface), you can pass the option '--disable-gui' to 'configure'. 39In that case you don't need FLTK. The C++ compiler is not needed 40for the text-only version. 41 42How to compile Quat 1.20 under Windows 43====================================== 44 45 Generally, you must have ZLIB 1.1.4 and FLTK 1.1 compiled with the 46compiler you want to also compile Quat. 47 48Using MinGW 49------------- 50 51 In short: All should work the same as under Unix. So see 52description above. 53 54 MinGW is a port of the GNU gcc C/C++ compiler to Windows. It's 55open source and available for free: 56http://www.mingw.org/ 57 58 A tested configuration is MinGW 1.1 and MSys 1.0.6. 59(MSys is a 'Minimal System' for gcc, it includes a shell, and 60common Unix tools like 'grep' for example.) 61 62 Other links that may help: 63http://www.xraylith.wisc.edu/~khan/software/gnu-win32/ 64http://agnes.dida.physik.uni-essen.de/~janjaap/mingw32/index.html 65(The second link is more informative, but a bit outdated the last 66time I visited.) 67 68 If you've downloaded and installed MinGW and MSys, compiled ZLIB and 69FLTK you can start compiling Quat. 70The advantage of MinGW is that the configure script runs as under 71Unix. So please see the section above for invoking ./configure 72Everything said there also applies to MinGW. 73 74CYGWIN Environment 75------------------ 76 77 Compilation should work with the 'configure' script as under 78Unix. 79 80 Quat doesn't need the 'cygwin.dll', so it's best to compile it 81using '-mno-cygwin' (which is the default). However, Cygwin seems 82to lack the C++ headers and libraries in no-cygwin mode, so if you 83get errors that 'iostream' or 'string' cannot be found, you have 84to install these headers and libstdc++.a from the Mingw distribution. 85See also 86http://www.xraylith.wisc.edu/~khan/software/gnu-win32/mno-cygwin-howto.txt 87 88Other compilers 89--------------- 90 91 I don't have any information about other compilers, sorry. But 92maybe there's a Project file for your compiler in the 'Makefiles' 93directory. 94 95 If you manage to compile Quat using another compiler, I would be 96glad to hear from you! You can send me the project file you used, and 97I can put it in future distributions of Quat. 98 99How to compile Quat 1.20 under Macintosh OS X 100============================================= 101 102 In theory, this should be possible now. FLTK 1.1 is portable to the 103Mac, and there's a gcc distribution for OS X. 104 105 However, as I don't have access to a Mac, and I even don't know it, 106I can't say any further. If you get it to run on a Mac, please send me 107an email. It would be great if somebody would offer binaries for Mac! 108 109Optimizing for Athlon using gcc 110=============================== 111 112 I received this information from Marco Pfatschbacher (many thanks!) 113He writes that he tried many variants of gcc's optimization options 114on his Athlon 500, and had the best results with the following flags: 115---- 116CFLAGS = -s -static -O3 -fomit-frame-pointer -Wall -mpentiumpro 117 -march=pentiumpro -fforce-addr -fforce-mem -malign-functions=4 118 -funroll-loops -fexpensive-optimizations -malign-double 119 -fschedule-insns2 -mwide-multiply 120---- 121 122 123--------------------------------------------------------------------- 124 125Basic Installation 126================== 127 128 These are generic installation instructions. 129 130 The `configure' shell script attempts to guess correct values for 131various system-dependent variables used during compilation. It uses 132those values to create a `Makefile' in each directory of the package. 133It may also create one or more `.h' files containing system-dependent 134definitions. Finally, it creates a shell script `config.status' that 135you can run in the future to recreate the current configuration, a file 136`config.cache' that saves the results of its tests to speed up 137reconfiguring, and a file `config.log' containing compiler output 138(useful mainly for debugging `configure'). 139 140 If you need to do unusual things to compile the package, please try 141to figure out how `configure' could check whether to do them, and mail 142diffs or instructions to the address given in the `README' so they can 143be considered for the next release. If at some point `config.cache' 144contains results you don't want to keep, you may remove or edit it. 145 146 The file `configure.in' is used to create `configure' by a program 147called `autoconf'. You only need `configure.in' if you want to change 148it or regenerate `configure' using a newer version of `autoconf'. 149 150The simplest way to compile this package is: 151 152 1. `cd' to the directory containing the package's source code and type 153 `./configure' to configure the package for your system. If you're 154 using `csh' on an old version of System V, you might need to type 155 `sh ./configure' instead to prevent `csh' from trying to execute 156 `configure' itself. 157 158 Running `configure' takes awhile. While running, it prints some 159 messages telling which features it is checking for. 160 161 2. Type `make' to compile the package. 162 163 3. Optionally, type `make check' to run any self-tests that come with 164 the package. 165 166 4. Type `make install' to install the programs and any data files and 167 documentation. 168 169 5. You can remove the program binaries and object files from the 170 source code directory by typing `make clean'. To also remove the 171 files that `configure' created (so you can compile the package for 172 a different kind of computer), type `make distclean'. There is 173 also a `make maintainer-clean' target, but that is intended mainly 174 for the package's developers. If you use it, you may have to get 175 all sorts of other programs in order to regenerate files that came 176 with the distribution. 177 178Compilers and Options 179===================== 180 181 Some systems require unusual options for compilation or linking that 182the `configure' script does not know about. You can give `configure' 183initial values for variables by setting them in the environment. Using 184a Bourne-compatible shell, you can do that on the command line like 185this: 186 CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure 187 188Or on systems that have the `env' program, you can do it like this: 189 env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure 190 191Compiling For Multiple Architectures 192==================================== 193 194 You can compile the package for more than one kind of computer at the 195same time, by placing the object files for each architecture in their 196own directory. To do this, you must use a version of `make' that 197supports the `VPATH' variable, such as GNU `make'. `cd' to the 198directory where you want the object files and executables to go and run 199the `configure' script. `configure' automatically checks for the 200source code in the directory that `configure' is in and in `..'. 201 202 If you have to use a `make' that does not supports the `VPATH' 203variable, you have to compile the package for one architecture at a time 204in the source code directory. After you have installed the package for 205one architecture, use `make distclean' before reconfiguring for another 206architecture. 207 208Installation Names 209================== 210 211 By default, `make install' will install the package's files in 212`/usr/local/bin', `/usr/local/man', etc. You can specify an 213installation prefix other than `/usr/local' by giving `configure' the 214option `--prefix=PATH'. 215 216 You can specify separate installation prefixes for 217architecture-specific files and architecture-independent files. If you 218give `configure' the option `--exec-prefix=PATH', the package will use 219PATH as the prefix for installing programs and libraries. 220Documentation and other data files will still use the regular prefix. 221 222 In addition, if you use an unusual directory layout you can give 223options like `--bindir=PATH' to specify different values for particular 224kinds of files. Run `configure --help' for a list of the directories 225you can set and what kinds of files go in them. 226 227 If the package supports it, you can cause programs to be installed 228with an extra prefix or suffix on their names by giving `configure' the 229option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. 230 231Optional Features 232================= 233 234 Some packages pay attention to `--enable-FEATURE' options to 235`configure', where FEATURE indicates an optional part of the package. 236They may also pay attention to `--with-PACKAGE' options, where PACKAGE 237is something like `gnu-as' or `x' (for the X Window System). The 238`README' should mention any `--enable-' and `--with-' options that the 239package recognizes. 240 241 For packages that use the X Window System, `configure' can usually 242find the X include and library files automatically, but if it doesn't, 243you can use the `configure' options `--x-includes=DIR' and 244`--x-libraries=DIR' to specify their locations. 245 246Specifying the System Type 247========================== 248 249 There may be some features `configure' can not figure out 250automatically, but needs to determine by the type of host the package 251will run on. Usually `configure' can figure that out, but if it prints 252a message saying it can not guess the host type, give it the 253`--host=TYPE' option. TYPE can either be a short name for the system 254type, such as `sun4', or a canonical name with three fields: 255 CPU-COMPANY-SYSTEM 256 257See the file `config.sub' for the possible values of each field. If 258`config.sub' isn't included in this package, then this package doesn't 259need to know the host type. 260 261 If you are building compiler tools for cross-compiling, you can also 262use the `--target=TYPE' option to select the type of system they will 263produce code for and the `--build=TYPE' option to select the type of 264system on which you are compiling the package. 265 266Sharing Defaults 267================ 268 269 If you want to set default values for `configure' scripts to share, 270you can create a site shell script called `config.site' that gives 271default values for variables like `CC', `cache_file', and `prefix'. 272`configure' looks for `PREFIX/share/config.site' if it exists, then 273`PREFIX/etc/config.site' if it exists. Or, you can set the 274`CONFIG_SITE' environment variable to the location of the site script. 275A warning: not all `configure' scripts look for a site script. 276 277Operation Controls 278================== 279 280 `configure' recognizes the following options to control how it 281operates. 282 283`--cache-file=FILE' 284 Use and save the results of the tests in FILE instead of 285 `./config.cache'. Set FILE to `/dev/null' to disable caching, for 286 debugging `configure'. 287 288`--help' 289 Print a summary of the options to `configure', and exit. 290 291`--quiet' 292`--silent' 293`-q' 294 Do not print messages saying which checks are being made. To 295 suppress all normal output, redirect it to `/dev/null' (any error 296 messages will still be shown). 297 298`--srcdir=DIR' 299 Look for the package's source code in directory DIR. Usually 300 `configure' can determine that directory automatically. 301 302`--version' 303 Print the version of Autoconf used to generate the `configure' 304 script, and exit. 305 306`configure' also accepts some other, not widely useful, options. 307 308