4 VisualBoyAdvance is a Nintendo (TM) Gameboy and GameboyAdvance emulator with
5 debugging capabilities.
7 How to compile the source
8 -------------------------
13 ATTENTION: if you extracted the code from CVS, see the README.CVS first or
16 The following software is needed in order to compile:
18 - libpng: http://www.libpng.org/pub/png/libpng.html
19 - zlib: http://www.gzip.org/zlib/
20 - libSDL: http://www.libsdl.org
21 - nasm (optional for x86 MMX support): http://nasm.sourceforge.net/
22 - GCC 3.x: in order to compile VBA, you will GCC 3.x or greater because of
23 a really bad bug in GCC 2.95 where it allocates an immense amount of
24 memory in order to compile GBA.cpp. If you really want to test it with
25 GCC 2.95, try exporting CXXFLAGS=-g to avoid optimizations (or try
26 different levels of optimization like -O1 or -O0)
28 Extra software needed to compile the GTK+ GUI:
30 - gtkmm (>= 2.0): http://www.gtkmm.org/
31 - libglademm (>= 2.1): http://www.gtkmm.org/
33 Unpack the sources from the tar.gz file, then run the configure script.
34 The following extra options may be used to configure the generated executables:
36 --enable-c-core enable C core (default is no on x86 targets)
37 --enable-profiling enable profiling (default is yes)
38 --enable-dev enable development features (default is yes)
39 --with-mmx use MMX (default is yes on x86 targets)
41 GUI selection options:
43 --enable-sdl build the SDL interface (default is yes)
44 --enable-gtk build the GTK+ interface (default is no)
45 --enable-gtk=2.4 build the GTK+ interface with gtkmm 2.4
49 --help display all options
51 After configure completes, just issue the make command. If it all goes well,
52 you will have the emulator compiled in the src directory. Issuing the
53 make install command will install the executables into the /usr/local/bin
54 directory (subject to change).
56 The emulator code should work in both big and little endian computers.
58 See the section after the Windows one for more information on the configure
61 The binaries are called this way:
62 - the SDL interface: VisualBoyAdvance
63 - the GTK+ interface: gvba
68 2.1 Visual C++ 2005 Express Edition
69 -----------------------------------
71 If you want to use the free express edition of Visual C++ 2005,
72 you have to do the following steps prior to the normal setup procedure of Visual C++/Studio 2005:
73 !!! You will not be able to build the MFC (GUI) version of VBA, only the SDL build will succeed !!!
74 - First download and install VC++ 2005 Express from http://msdn.microsoft.com/vstudio/express/visualC/default.aspx
75 - Now follow the guide at http://msdn2.microsoft.com/en-us/library/ms235626.aspx
76 - Now continue with section [2.2]
82 - Microsoft Visual C++ 2005 (buy if not using Express Edition or if MFC build is required)
83 > http://msdn.microsoft.com/visualc/
84 > You do not need the DLL runtimes and the .NET Framework
85 - Microsoft Platform SDK (free, optional, essential only for express edition)
86 > http://www.microsoft.com/downloads/details.aspx?FamilyId=E15438AC-60BE-41BD-AA14-7F1E0F19CA0D&displaylang=en
87 - Microsoft DirectX 9.0 SDK (free, essential)
88 > http://msdn.com/directx/sdk
89 (August 2006 version as I write these lines)
90 - Yasm (free, essential)
91 > http://www.tortall.net/projects/yasm/
92 > Follow the install guide at http://www.tortall.net/projects/yasm/wiki/VisualStudio2005
93 - AMD CodeAnalyst (optional, AMD CPU required)
94 > http://developer.amd.com/cawin.aspx?session_id=FB$37649@DJEBIGID
95 > Free and easy profiling for AMD CPUs (32bit and 64bit), Visual Studio 2005 plugin
97 Those are all packages for now. The VBA source also includes the
98 sources and/or binaries of various free libraries for zip and image support.
99 Those can be accessed through the "dependencies" folder in the main
100 solution file. The main solution file includes references to all files
101 for all platforms. At the moment, only MFC and SDL build targets for
102 32bit Windows are configured. GTK+ and 64bit Windows support are also possible,
103 but are not yet added for several reasons.
105 You can now open the project file: "win32/vba_vs2005.sln".
106 Info: If you use the express edition of VC++ 2005, you will receive three neglectable warnings.
108 2.3 Visual C++ 6.0 and Visual C++ 2002
109 --------------------------------------
112 - nasm: see above for URL. Install it in the default directory
113 - Microsoft Visual C++ 6.0 or greater: to compile
115 The win32 directory contains Microsoft Visual Studio workspace files needed
116 to compile the project with Microsoft Visual C++ 6.0 or greater.
118 The gba.dsp workspace compiles the full Windows version and gba_sdl.dsp
119 compiles the Windows SDL version.
121 Solutions for Visual C++ .NET are also available: gba.sln and gba_sdl.sln
123 The Windows version contains three possible configurations:
124 - Debug: full debugging of the emulator is possible
125 - Release: optimized version for GBA developers
126 - ReleaseNoDev: optimized version without development features
131 These are generic installation instructions.
133 The `configure' shell script attempts to guess correct values for
134 various system-dependent variables used during compilation. It uses
135 those values to create a `Makefile' in each directory of the package.
136 It may also create one or more `.h' files containing system-dependent
137 definitions. Finally, it creates a shell script `config.status' that
138 you can run in the future to recreate the current configuration, a file
139 `config.cache' that saves the results of its tests to speed up
140 reconfiguring, and a file `config.log' containing compiler output
141 (useful mainly for debugging `configure').
143 If you need to do unusual things to compile the package, please try
144 to figure out how `configure' could check whether to do them, and mail
145 diffs or instructions to the address given in the `README' so they can
146 be considered for the next release. If at some point `config.cache'
147 contains results you don't want to keep, you may remove or edit it.
149 The file `configure.in' is used to create `configure' by a program
150 called `autoconf'. You only need `configure.in' if you want to change
151 it or regenerate `configure' using a newer version of `autoconf'.
153 The simplest way to compile this package is:
155 1. `cd' to the directory containing the package's source code and type
156 `./configure' to configure the package for your system. If you're
157 using `csh' on an old version of System V, you might need to type
158 `sh ./configure' instead to prevent `csh' from trying to execute
161 Running `configure' takes awhile. While running, it prints some
162 messages telling which features it is checking for.
164 2. Type `make' to compile the package.
166 3. Optionally, type `make check' to run any self-tests that come with
169 4. Type `make install' to install the programs and any data files and
172 5. You can remove the program binaries and object files from the
173 source code directory by typing `make clean'. To also remove the
174 files that `configure' created (so you can compile the package for
175 a different kind of computer), type `make distclean'. There is
176 also a `make maintainer-clean' target, but that is intended mainly
177 for the package's developers. If you use it, you may have to get
178 all sorts of other programs in order to regenerate files that came
179 with the distribution.
181 Compilers and Options
182 =====================
184 Some systems require unusual options for compilation or linking that
185 the `configure' script does not know about. You can give `configure'
186 initial values for variables by setting them in the environment. Using
187 a Bourne-compatible shell, you can do that on the command line like
189 CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
191 Or on systems that have the `env' program, you can do it like this:
192 env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
194 Compiling For Multiple Architectures
195 ====================================
197 You can compile the package for more than one kind of computer at the
198 same time, by placing the object files for each architecture in their
199 own directory. To do this, you must use a version of `make' that
200 supports the `VPATH' variable, such as GNU `make'. `cd' to the
201 directory where you want the object files and executables to go and run
202 the `configure' script. `configure' automatically checks for the
203 source code in the directory that `configure' is in and in `..'.
205 If you have to use a `make' that does not supports the `VPATH'
206 variable, you have to compile the package for one architecture at a time
207 in the source code directory. After you have installed the package for
208 one architecture, use `make distclean' before reconfiguring for another
214 By default, `make install' will install the package's files in
215 `/usr/local/bin', `/usr/local/man', etc. You can specify an
216 installation prefix other than `/usr/local' by giving `configure' the
217 option `--prefix=PATH'.
219 You can specify separate installation prefixes for
220 architecture-specific files and architecture-independent files. If you
221 give `configure' the option `--exec-prefix=PATH', the package will use
222 PATH as the prefix for installing programs and libraries.
223 Documentation and other data files will still use the regular prefix.
225 In addition, if you use an unusual directory layout you can give
226 options like `--bindir=PATH' to specify different values for particular
227 kinds of files. Run `configure --help' for a list of the directories
228 you can set and what kinds of files go in them.
230 If the package supports it, you can cause programs to be installed
231 with an extra prefix or suffix on their names by giving `configure' the
232 option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
237 Some packages pay attention to `--enable-FEATURE' options to
238 `configure', where FEATURE indicates an optional part of the package.
239 They may also pay attention to `--with-PACKAGE' options, where PACKAGE
240 is something like `gnu-as' or `x' (for the X Window System). The
241 `README' should mention any `--enable-' and `--with-' options that the
244 For packages that use the X Window System, `configure' can usually
245 find the X include and library files automatically, but if it doesn't,
246 you can use the `configure' options `--x-includes=DIR' and
247 `--x-libraries=DIR' to specify their locations.
249 Specifying the System Type
250 ==========================
252 There may be some features `configure' can not figure out
253 automatically, but needs to determine by the type of host the package
254 will run on. Usually `configure' can figure that out, but if it prints
255 a message saying it can not guess the host type, give it the
256 `--host=TYPE' option. TYPE can either be a short name for the system
257 type, such as `sun4', or a canonical name with three fields:
260 See the file `config.sub' for the possible values of each field. If
261 `config.sub' isn't included in this package, then this package doesn't
262 need to know the host type.
264 If you are building compiler tools for cross-compiling, you can also
265 use the `--target=TYPE' option to select the type of system they will
266 produce code for and the `--build=TYPE' option to select the type of
267 system on which you are compiling the package.
272 If you want to set default values for `configure' scripts to share,
273 you can create a site shell script called `config.site' that gives
274 default values for variables like `CC', `cache_file', and `prefix'.
275 `configure' looks for `PREFIX/share/config.site' if it exists, then
276 `PREFIX/etc/config.site' if it exists. Or, you can set the
277 `CONFIG_SITE' environment variable to the location of the site script.
278 A warning: not all `configure' scripts look for a site script.
283 `configure' recognizes the following options to control how it
287 Use and save the results of the tests in FILE instead of
288 `./config.cache'. Set FILE to `/dev/null' to disable caching, for
289 debugging `configure'.
292 Print a summary of the options to `configure', and exit.
297 Do not print messages saying which checks are being made. To
298 suppress all normal output, redirect it to `/dev/null' (any error
299 messages will still be shown).
302 Look for the package's source code in directory DIR. Usually
303 `configure' can determine that directory automatically.
306 Print the version of Autoconf used to generate the `configure'
309 `configure' also accepts some other, not widely useful, options.