Getting started (1.15 or earlier)

From Doomsday Wiki
Jump to: navigation, search

This article helps you to get started on software development with the Doomsday Engine.

Before you begin

It is important to understand, that Doomsday is an open source project. Doomsday is licensed under the GNU GPL v2 or later license.

To further that goal, we ask that all contributions use the following license:

 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, see <http://www.gnu.org/licenses/>

If you do not wish to use the GPL or a compatible license like the MIT, New BSD or LGPL, then we can't accept your contribution.

Requirements

Check that Doomsday's requirements are fulfilled.

Tools needed

Tool Windows Mac OS X Ubuntu
Git TortoiseGit is a nice Git client for Windows. It integrates with the Windows shell. Git should be installed along with Xcode, but you can also get it from MacPorts or Homebrew (Intel-only). Available as a package (see distro).
qmake Qt web site qt4-qmake, libqt4-dev
Qt Creator (optional) Qt web site qtcreator
Other tools Build tools for Unix

Accessing the deng source code repository

The deng source code is stored in a Git repository on GitHub. You can browse the contents of the repository by visiting that link.

About Git

Git is an advanced distributed version control system. Before you do anything else, you should familiarize yourself with its basic functionality and operating principles. These should get you started:

Setting up a working copy

To get a copy of the Doomsday source files to your own computer, you will first need to set up your working copy of the deng repository. With Git being a distributed version control system, every working copy is actually a full, independent copy of the entire repository. Once you have your working copy set up, it will be configured to fetch changes from the GitHub Doomsday-Engine repository.

The first thing you will need to is to clone the deng repository:

git clone https://github.com/skyjake/Doomsday-Engine.git name-of-your-working-copy

This will download the full repository (about 200MB) from GitHub, so it may take a while.

Next, you should make sure your repository configuration is good. To see all your Git configuration settings, type:

git config -l

Your master branch should be tracking origin's (= the GitHub repository) master branch:

branch.master.remote=origin
branch.master.merge=refs/heads/master
remote.origin.url=https://github.com/skyjake/Doomsday-Engine.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*

You may find it convenient to set a default branch for pulling changes:

git config pull.default tracking

The options user.name and user.email should be set if you are going to commit changes to your repository.

user.name=yourname
user.email=your.email@some.domain

Getting new changes

To synchronize your copy of the repository with the origin, use the following command:

git pull

This will fetch the new changes from the deng repository and merge them to your working copy.

Switching to another branch

Say you want to work on another branch, e.g., stable-1.10. You will first need to create a local branch that tracks the changes of the stable-1.10 branch in the deng repository:

git checkout -t -b stable-1.10 origin/stable-1.10

This will also automatically switch to the new branch. In the config you now see:

branch.stable-1.10.remote=origin
branch.stable-1.10.merge=refs/heads/stable-1.10

This means your stable-1.10 is tracking the one in the origin repository.

Now you can switch between your branches with:

git checkout master
git checkout stable-1.10

Building Doomsday

See: Compilation

See also