Difference between revisions of "Compiling using GCC"

From OdaWiki
(Download)
m (FreeBSD)
 
(29 intermediate revisions by 8 users not shown)
Line 1: Line 1:
== GNU/Linux ==
+
GCC is the official GNU C Compiler which is bundled with many Unix and Linux distributions.  This article assumes that you are planning to build Odamex at the command line.  If you are using an IDE that uses GCC as its compiler, please refer to the IDE's documentation in this wiki on how to compile Odamex.
  
=== Get the source ===
 
You can either download a stable source package, or risk using the bleeding edge svn code.
 
  
==== Download ====
+
== Compiling in a nutshell ==
Download the [http://odamex.net/ latest source]
+
Compiling using GCC is simple.  Simply go to the root directory of the branch that you want to compile and type:
Untar the archive somewhere:
+
  
<code>tar -xjf odamex_build.tar.bz2</code>
+
<pre>make</pre>
  
<code>cd odamex_build</code>
+
This will compile the client, the server and the master, one after another.  If you want to compile them one at a time, simply use one of the following commands:
  
==== SVN ====
+
<pre>make client
Get a dev build using (must have [[svn|subversion]] installed!):
+
make server
 +
make master</pre>
  
<code>svn co svn://odamex.net</code>
+
That's it!
  
=== Build ===
+
== Compiling the Launcher ==
 +
Assuming you have the WX libraries installed, and you are in the trunk directory of SVN (or the root source directory), the following should be enough to compile the Launcher:
  
In the source directory, use the make command:
+
<pre>cd odalaunch
 +
wx-config --prefix        # find out what to pass to the makefile as WXBASE
 +
make WXBASE=/usr          # replace with appropriate value</pre>
  
<code>make</code>
+
This should give you a working launcher.  The Makefile makes some assumptions about the whereabouts of WX, and if these assumptions are wrong, they need to be configured via commandline as WXBASE was above.  Here is a list of the default settings:
  
Binaries should appear in the bin dir after a successful compile: odamex, odasrv, odamaster
+
<pre>WXBASE = /usr/local
 +
WXCONFIG = $(WXBASE)/bin/wx-config
 +
WXRC = $(WXBASE)/bin/wxrc
 +
CFLAGS = $(shell $(WXCONFIG) --cflags) -g
 +
LFLAGS = $(shell $(WXCONFIG) --libs) -g</pre>
  
You can run "make server" or "make client" to only build the module you want:
+
== Platform-specific notes ==
 +
===Package Based Distributions===
 +
Be sure to install the development packages for SDL and other libraries under distributions such as Fedora and Ubuntu.  Odamex will not compile unless they are present.
  
<code>make server</code>
+
===FreeBSD===
 +
FreeBSD has their own version of make, which is not compatable with Odamex.  In order to compile under FreeBSD, you must install gmake from the ports collection:
 +
*'''GNU Make''':  [[http://cvsweb.freebsd.org/ports/devel/gmake gmake-3.80_2]]
 +
Then, substitue '''gmake''' for '''make''', respectively.
  
<code>make client</code>
 
  
<code>make launcher</code>
+
When compiling the launcher on FreeBSD, you must also edit the Makefile so that it points to the correct wx binaries.  First, make sure you have the x11-toolkits/wxgtk28 port installed. (Odamex requires 2.8. 2.6 and 2.4 will not work.)  Then, edit the makefile, changing the lines:
  
== FreeBSD ==
 
  
To compile Odamex on FreeBSD, you must have the following ports installed, above and beyond the usual suspects:
+
WXCONFIG = wx-config
*'''GNU Make''':  [[http://cvsweb.freebsd.org/ports/devel/gmake gmake-3.80_2]]
+
 
*'''SDL 1.2.9''':  [[http://cvsweb.freebsd.org/ports/devel/sdl12 sdl-1.2.9_2,2]]
+
WXRC = wxrc
*'''SDL_Mixer 1.2.6''': [[http://cvsweb.freebsd.org/ports/audio/sdl_mixer sdl_mixer-1.2.6_2]]
+
 
 +
 
 +
to:
 +
 
 +
 
 +
WXCONFIG = wxgtk2-2.8-config
 +
 
 +
WXRC = wxrc-gtk2-2.8
 +
 
 +
 
 +
After that, running "gmake" in the odalaunch/ directory will build the launcher.  Typing "gmake install" (as root) in the odamex source directory will then install the launcher on the system.
 +
 
 +
===Cygwin===
 +
Unfortunately, SDL does not always play ball with cygwin's headers. The biggest offender has been a conflict between <SDL_config_minimal.h> and <stdint.h>. You may need to edit the following two lines in <SDL_config_minimal.h>:
 +
 
 +
* typedef signed int int32_t;
 +
* typedef unsigned int uint32_t;
 +
 
 +
To read:
  
In addition, if you want to compile the absolute latest cutting edge version of Odamex, you will also need:
+
* typedef signed long int int32_t;
*'''Subversion''':  [[http://cvsweb.freebsd.org/ports/devel/subversion subversion-1.3.0_4 ]]
+
* typedef unsigned long int uint32_t;
  
Once those ports are installed, you can simply untar or grab the latest source through subversion into its own directory, switch to the trunk subdirectory, and simply type '''gmake'''If you only want to compile the client or only compile the server, simply type '''gmake client''' or '''gmake server''' respectively.
+
Also there is one extra step you have to do before compilingYou must edit the makefile in the root of the branch you want to compile.  The two things you must change are SDL_LOCATION and SDL_MIXER_LOCATION, and you have to modify these two lines to point to the directories where you extracted your SDL and SDL_Mixer development libraries, respectively.

Latest revision as of 02:41, 5 August 2008

GCC is the official GNU C Compiler which is bundled with many Unix and Linux distributions. This article assumes that you are planning to build Odamex at the command line. If you are using an IDE that uses GCC as its compiler, please refer to the IDE's documentation in this wiki on how to compile Odamex.


Compiling in a nutshell

Compiling using GCC is simple. Simply go to the root directory of the branch that you want to compile and type:

make

This will compile the client, the server and the master, one after another. If you want to compile them one at a time, simply use one of the following commands:

make client
make server
make master

That's it!

Compiling the Launcher

Assuming you have the WX libraries installed, and you are in the trunk directory of SVN (or the root source directory), the following should be enough to compile the Launcher:

cd odalaunch
wx-config --prefix        # find out what to pass to the makefile as WXBASE
make WXBASE=/usr          # replace with appropriate value

This should give you a working launcher. The Makefile makes some assumptions about the whereabouts of WX, and if these assumptions are wrong, they need to be configured via commandline as WXBASE was above. Here is a list of the default settings:

WXBASE = /usr/local
WXCONFIG = $(WXBASE)/bin/wx-config
WXRC = $(WXBASE)/bin/wxrc
CFLAGS = $(shell $(WXCONFIG) --cflags) -g
LFLAGS = $(shell $(WXCONFIG) --libs) -g

Platform-specific notes

Package Based Distributions

Be sure to install the development packages for SDL and other libraries under distributions such as Fedora and Ubuntu. Odamex will not compile unless they are present.

FreeBSD

FreeBSD has their own version of make, which is not compatable with Odamex. In order to compile under FreeBSD, you must install gmake from the ports collection:

Then, substitue gmake for make, respectively.


When compiling the launcher on FreeBSD, you must also edit the Makefile so that it points to the correct wx binaries. First, make sure you have the x11-toolkits/wxgtk28 port installed. (Odamex requires 2.8. 2.6 and 2.4 will not work.) Then, edit the makefile, changing the lines:


WXCONFIG = wx-config

WXRC = wxrc


to:


WXCONFIG = wxgtk2-2.8-config

WXRC = wxrc-gtk2-2.8


After that, running "gmake" in the odalaunch/ directory will build the launcher. Typing "gmake install" (as root) in the odamex source directory will then install the launcher on the system.

Cygwin

Unfortunately, SDL does not always play ball with cygwin's headers. The biggest offender has been a conflict between <SDL_config_minimal.h> and <stdint.h>. You may need to edit the following two lines in <SDL_config_minimal.h>:

  • typedef signed int int32_t;
  • typedef unsigned int uint32_t;

To read:

  • typedef signed long int int32_t;
  • typedef unsigned long int uint32_t;

Also there is one extra step you have to do before compiling. You must edit the makefile in the root of the branch you want to compile. The two things you must change are SDL_LOCATION and SDL_MIXER_LOCATION, and you have to modify these two lines to point to the directories where you extracted your SDL and SDL_Mixer development libraries, respectively.