<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.bzflag.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AWilcox</id>
	<title>BZFlagWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.bzflag.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AWilcox"/>
	<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/Special:Contributions/AWilcox"/>
	<updated>2026-05-10T12:11:54Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Compiling&amp;diff=6863</id>
		<title>Compiling</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Compiling&amp;diff=6863"/>
		<updated>2010-01-21T17:06:05Z</updated>

		<summary type="html">&lt;p&gt;AWilcox: updated Mac section somewhat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
Compiling BZFlag is the act of taking the raw source codes for the game and using tools to build an executable application(s) for a target system.&lt;br /&gt;
&lt;br /&gt;
==Source Code==&lt;br /&gt;
In order to compile a user must have his or her own copy of the [[BZFlag_Source|Source Code]]. The code can be obtained from a source archive from the [[Download]] page, or from the BZFlag [[BZFlag_SVN|Subversion]] server.&lt;br /&gt;
&lt;br /&gt;
==Readme Files==&lt;br /&gt;
Users should always read the README files for the appropriate operating system. These files are located in the root directory of the source code tree.&lt;br /&gt;
&lt;br /&gt;
==Compilers==&lt;br /&gt;
BZFlag is capable of being built on a number of compilers. The compiler used will depend in some way on the operating system of the computer doing the build.&lt;br /&gt;
&lt;br /&gt;
* Linux and BSD computers use the GCC compiler.&lt;br /&gt;
* Macintosh computers use the XCode compiler (or gcc, see notes).&lt;br /&gt;
* Windows computers can use the Visual C++ compiler, or the MinGW compiler (based on GCC)&lt;br /&gt;
&lt;br /&gt;
===GCC===&lt;br /&gt;
The GCC build as a number of requirements;&lt;br /&gt;
* Automake X.XX&lt;br /&gt;
* Autoconf X.XX&lt;br /&gt;
* Autotools X.XX&lt;br /&gt;
* SDL Development libraries 1.2.10 or greater (on Mac OS X you need 2.99 from svn and SDL 1.3 which is also only in SVN, to build BZFlag x86_64 binaries; i386 binaries should build fine using Mac OS X version 10.6 after setting the correct environment variables to avoid building x86_64 instead)&lt;br /&gt;
* OpenGL Development libraries 1.1 or greater&lt;br /&gt;
&lt;br /&gt;
If the required dependencies are installed, the user must then run the following commands from at root level of the source tree&lt;br /&gt;
&lt;br /&gt;
  ./autogen.sh&lt;br /&gt;
  ./configure&lt;br /&gt;
  make&lt;br /&gt;
  make install&lt;br /&gt;
&lt;br /&gt;
Please note that depending on permissions levels the &#039;&#039;&#039;make install&#039;&#039;&#039; command may need to be run as an administrator or root.&lt;br /&gt;
On Mac you can either run make to find any problems, or xcodebuild (after ./configure) to make an .app that is useable.&lt;br /&gt;
&lt;br /&gt;
===XCode===&lt;br /&gt;
Launch XCode and open the &#039;&#039;&#039;bzflag/BZFlag.xcodeproj&#039;&#039;&#039; project. Note that XCode should have &#039;&#039;&#039;BZFlag&#039;&#039;&#039; selected as the active target and &#039;&#039;&#039;Development&#039;&#039;&#039; as the active build configuration. Click on &#039;&#039;&#039;Targets&#039;&#039;&#039; then click the &#039;&#039;&#039;Build&#039;&#039;&#039; icon. When this process completes, your application will be in &#039;&#039;&#039;bzflag/build/Development&#039;&#039;&#039;. You can then move it wherever you like.&lt;br /&gt;
&lt;br /&gt;
====Building on Snow Leopard====&lt;br /&gt;
Snow Leopard defaults to 64-bit binaries, which isn&#039;t compatible with MacDisplay.cxx due to Carbon.framework not implementing a lot of functionality in 64-bit mode.  To compile on Snow Leopard, you must build 32-bit.&lt;br /&gt;
&lt;br /&gt;
===Visual C++===&lt;br /&gt;
&lt;br /&gt;
==== 2.0.x ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Compiler&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In order to compile, you need to have Visual C++ 2003 or higher (Express version works just fine).&amp;lt;br&amp;gt;&lt;br /&gt;
To get the latest Express version of Visual C++, visit [http://www.microsoft.com/express/vc/ http://www.microsoft.com/express/vc/]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dependencies&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In order to compile you need &#039;&#039;&#039;ALL&#039;&#039;&#039; of the following:&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.microsoft.com/downloads/details.aspx?FamilyID=86cf7fa2-e953-475c-abde-f016e4f7b61a&amp;amp;DisplayLang=en Microsoft DirectX SDK April 2007] (Only the Headers and Libraries)&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.microsoft.com/downloads/details.aspx?familyid=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&amp;amp;displaylang=en Windows Platform SDK] (This is not required for Visual C++ 2008) &amp;lt;br&amp;gt;&lt;br /&gt;
[http://curl.haxx.se/download/libcurl-7.18.0-win32-msvc.zip LibCURL]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://sourceforge.net/project/downloading.php?group_id=67586&amp;amp;use_mirror=superb-east&amp;amp;filename=glew-1.5.1-win32.zip&amp;amp;1970168 GLEW] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://sourceforge.net/project/downloading.php?group_id=30480&amp;amp;use_mirror=superb-west&amp;amp;filename=pdc34dll.zip&amp;amp;38017788 PDCurses] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You then need to add them to your VC++ Directories, both include and lib folders.&lt;br /&gt;
&lt;br /&gt;
==== 2.99.x =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Compiler&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In order to compile, you need to have Visual C++ 2008 or higher (Express version works just fine).&amp;lt;br&amp;gt;&lt;br /&gt;
To get the latest Express version of Visual C++, visit [http://www.microsoft.com/express/vc/ http://www.microsoft.com/express/vc/]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dependencies&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.microsoft.com/downloads/details.aspx?FamilyId=5493F76A-6D37-478D-BA17-28B1CCA4865A&amp;amp;displaylang=en Microsoft DirectX SDK November 2008]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://sourceforge.net/project/downloading.php?group_id=30480&amp;amp;use_mirror=superb-west&amp;amp;filename=pdc34dll.zip&amp;amp;38017788 PDCurses] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You then need to add them to your VC++ Directories, both include and lib folders.&lt;br /&gt;
&lt;br /&gt;
===Other build systems===&lt;br /&gt;
Other build systems may be supported in the various readme files (minGW, IRIX, SOLARIS,etc..)&lt;br /&gt;
&lt;br /&gt;
===Solaris 10 (Oct, 2009)===&lt;br /&gt;
&lt;br /&gt;
This is what I had to do to get bzflag-2.0.12 to compile and run on Solaris 10&lt;br /&gt;
&lt;br /&gt;
Install Sparc packages (in /opt) from [http://sunfreeware.com Sunfreeware]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You don&#039;t necessarily have to install in /opt&#039;&#039;&#039;.  If not, skip all the &amp;quot;opt&amp;quot; stuff or substitute the correct location instead. Most of these packages will install in /usr/local.  /usr/local was not available to me.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl-7.19.6-sol10-sparc-local.gz&lt;br /&gt;
libidn-1.14-sol10-sparc-local.gz&lt;br /&gt;
libssh2-1.2-sol10-sparc-local.gz&lt;br /&gt;
openssl-0.9.8k-sol10-sparc-local.gz&lt;br /&gt;
libintl-3.4.0-sol10-sparc-local.gz&lt;br /&gt;
libiconv-1.11-sol10-sparc-local.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you get an error saying that a library has moved, you might have to go into the library&#039;s .la file and update its location.&lt;br /&gt;
&lt;br /&gt;
You will also have to update the *.la files if you get errors like this:&lt;br /&gt;
&lt;br /&gt;
 libtool: link: cannot find the library `/usr/local/lib/libidn.la&#039; or unhandled argument `/usr/local/lib/libidn.la&#039;&lt;br /&gt;
&lt;br /&gt;
You will have to update these lines in SMCliconv/lib/libiconv.la, etc:&lt;br /&gt;
&lt;br /&gt;
 dependency_libs=&#039; -R/usr/local/lib -R/usr/lib -R/usr/openwin/lib &amp;lt;b&amp;gt; -R/opt/SMCossl/ssl/lib &amp;lt;/b&amp;gt; -R/usr/local/BerkeleyDB.4.7/lib -R/usr/local/BerkeleyDB.4.2/lib -R/usr/X11R6/lib &lt;br /&gt;
 -L/usr/local/lib -L/usr/lib -L/usr/openwin/lib &amp;lt;b&amp;gt; -L/opt/SMCossl/ssl/lib &amp;lt;/b&amp;gt; -L/usr/local/BerkeleyDB.4.2/lib &amp;lt;/b&amp;gt; /opt/SMClibidn/lib/libidn.la &amp;lt;/b&amp;gt; -L/usr/local/pgsql/lib &lt;br /&gt;
 -L/usr/X11R6/lib &amp;lt;b&amp;gt;/opt/SMClintl/lib/libintl.la&amp;lt;/b&amp;gt; -lsec -lc &amp;lt;b&amp;gt;/opt/SMClssh2/lib/libssh2.la  /opt/SMCliconv/lib/libiconv.la &amp;lt;/b&amp;gt; -lssl -lcrypto -lsocket -lnsl -lz&#039;&lt;br /&gt;
&lt;br /&gt;
Fix missing links&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/sfw/bin/gmake /usr/sfw/bin/make&lt;br /&gt;
 &lt;br /&gt;
 ln -s /usr/xpg4/bin/ar /usr/bin/ar&lt;br /&gt;
&lt;br /&gt;
Modify environment variables&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I/opt/SMClintl/include -I/opt/SMCossl/ssl/include -I/opt/SMCcurl/include -I/opt/SMClssh2/include&amp;quot;&lt;br /&gt;
export CPPFLAGS=&amp;quot;$CPPFLAGS -I/opt/SMClibidn/include -L/opt/SMClintl/lib -L/opt/SMCossl/ssl/lib -L/opt/SMCcurl/lib &amp;quot;&lt;br /&gt;
export CPPFLAGS=&amp;quot;$CPPFLAGS -L/opt/SMClssh2/lib -L/opt/SMClibidn/lib -L/opt/c-ares/lib -L/pt/SMCossl/ssl/lib -I/usr/openwin/include/GL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
export LDFLAGS=&amp;quot;-L/usr/lib -L/opt/SMClintl/lib -L/opt/SMClibidn/lib -L/opt/SMClssh2/lib&amp;quot;&lt;br /&gt;
&lt;br /&gt;
export LD_LIBRARY_PATH=&amp;quot;$LD_LIBRARY_PATH:/opt/SMCcurl/lib:/opt/SMClibidn/lib:/opt/SMClintl/lib:/opt/SMClssh2/lib:/opt/SMCliconv/lib:/opt/SMCossl/lib:/opt/SMCossl/ssl/lib&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run configure&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --with-libcurl=/opt/SMCcurl --prefix=/opt/bzflag --build=sun4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Edit sources&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
In include/SceneNode.h, change &amp;quot;glColor&amp;quot; to myColor&amp;quot;:&lt;br /&gt;
(Solves the &amp;quot;Expected &#039;)&#039; before &#039;-&amp;gt;&#039; token&amp;quot; error)&lt;br /&gt;
&lt;br /&gt;
#define myColor3f(r, g, b)      SceneNode::myColor3f(r, g, b)&lt;br /&gt;
#define myColor4f(r, g, b, a)   SceneNode::myColor4f(r, g, b, a)&lt;br /&gt;
#define myColor3fv(rgb)         SceneNode::myColor3fv(rgb)&lt;br /&gt;
#define myColor4fv(rgba)        SceneNode::myColor4fv(rgba)&lt;br /&gt;
&lt;br /&gt;
 static void         myColor3f(GLfloat r, GLfloat g, GLfloat b)&lt;br /&gt;
  #ifdef __MINGW32__&lt;br /&gt;
        {if (!colorOverride) ::myColor3f(r, g, b); };&lt;br /&gt;
  #else&lt;br /&gt;
        { (*color3f)(r, g, b); }&lt;br /&gt;
  #endif&lt;br /&gt;
&lt;br /&gt;
      static void         myColor4f(GLfloat r, GLfloat g, GLfloat b, GLfloat a)&lt;br /&gt;
  #ifdef __MINGW32__&lt;br /&gt;
        {if (!colorOverride) ::myColor4f(r, g, b, a); };&lt;br /&gt;
  #else&lt;br /&gt;
        { (*color4f)(r, g, b, a); }&lt;br /&gt;
  #endif&lt;br /&gt;
&lt;br /&gt;
      static void         myColor3fv(const GLfloat* rgb)&lt;br /&gt;
  #ifdef __MINGW32__&lt;br /&gt;
        {if (!colorOverride) ::myColor3fv(rgb); };&lt;br /&gt;
  #else&lt;br /&gt;
        { (*color3fv)(rgb); }&lt;br /&gt;
  #endif&lt;br /&gt;
&lt;br /&gt;
      static void         myColor4fv(const GLfloat* rgba)&lt;br /&gt;
  #ifdef __MINGW32__&lt;br /&gt;
        {if (!colorOverride) ::myColor4fv(rgba); };&lt;br /&gt;
  #else&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Fix Makefiles&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Add -lresolv to LIBS in src/bzfs/Makefile, src/bzflag/Makefile, src/bzadmin/Makefile&lt;br /&gt;
(Solves the inet_aton unresolved symbol error)&lt;br /&gt;
&lt;br /&gt;
LIBS = -lsocket -lm -lresolv&lt;br /&gt;
&lt;br /&gt;
In src/platform edit the Makefile and uncomment the Solaris stuff:&lt;br /&gt;
&lt;br /&gt;
am_libPlatform_la_OBJECTS = PlatformFactory.lo \&lt;br /&gt;
        BzfDisplay.lo \&lt;br /&gt;
        BzfJoystick.lo \&lt;br /&gt;
        BzfVisual.lo \&lt;br /&gt;
        BzfWindow.lo \&lt;br /&gt;
        BzfMedia.lo \&lt;br /&gt;
        wave.lo \&lt;br /&gt;
        SolarisPlatformFactory.lo \&lt;br /&gt;
        SolarisMedia.lo \&lt;br /&gt;
        XDisplay.lo \&lt;br /&gt;
        XVisual.lo \&lt;br /&gt;
        XWindow.lo&lt;br /&gt;
&lt;br /&gt;
(Makes sure platform.a gets built - this can probably be done with a configure switch, but I couldn&#039;t find it)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Make and test!&lt;br /&gt;
&lt;br /&gt;
 make; src/bzflag/bzflag&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Compiling]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>AWilcox</name></author>
	</entry>
</feed>