Freeciv on QPE

I'm currently working on a port of Freeciv to QPE (Qtopia or OPIE), based on Rob Fisher's Zaurus Freeciv.

In its current state, the client isn't even usable, but I'm putting it here as a proof of concept of some kind. I'll be putting updates as the work progresses.

(I've also adapted Rob Fisher's original work to 1.14.1, and I'm keeping it around for the moment.)


See more screenshots

Building from source

If you want to try builing it, here's the list of what you will need.

Freeciv source

You'll need to get the latest Freeciv source, either from a CVS snapshot or by using CVS directly. These patches might not apply correctly to the current 2.0 beta releases.

Next, apply the following patches, which are required to compile the Freeciv headers with C++. These patches have been submitted upstream, so it's possible they've already been applied in CVS. Check the bug reports for more information.

(These patches should be applied with the -p0 option.)

You should also apply the following patch if you intend to cross-compile the Freeciv server for OpenZaurus 3.5.1 or later (which is compiled with soft-float emulation) using development libraries that were not compiled with soft-float. The patch is harmless otherwise, so you can always apply it:

(This patch should also be applied with the -p0 option.)

Freeciv QPE client source

The source for the QPE client currently comes as two patch files:

(These patches should be applied with the -p1 option.)

Qt/Embedded development headers and libraries

Install the Qt/Embedded development kit, version 2.3 or later (no testing has been done with 4.x yet). If you are installing version 2.x, you will also need the user interface compiler (uic) from Qt 3.x or later.

Cross-compiling for use on a PDA

Remember to match the version of the SDK with the version of libqte that is installed. For example, most Zaurii come with libqte2.

Debian users can install the libqte2-dev-arm-cross package from my arm-cross repository, as well as the qt2-dev-tools and qt3-dev-tools packages.

Compiling natively for use in qvfb

Build and install qvfb according to Trolltech's instructions.

Debian users can install the libqte2-dev or libqte-mt3-dev package, along with the qt3-dev-tools-embedded and qte-fonts packages. (If compiling against Qt/E 3.x, you'll need to run ln -s ../share/qte3/lib/fonts/ /usr/lib/fonts.)

Compiling natively for use on the desktop

It's also possible to compile this client as a regular Qt application, although this is not recommended. (Not only will the layout be radically different from what it would look like on a PDA, but you can't even acknowledge certain dialogs for lack of an OK button.)

Debian users can install the libqt3-dev and libqt3-compat-headers packages.

QPE development files

Install the QPE development files, either from Qtopia or from OPIE.

Debian users can get the libqpe-fb-dev or libqpe-dev-arm-cross package.

(It is actually possible to compile with Qt/Embedded and without QPE -- the same warning as above applies here as well.)

Other stuff

Building

You can now run ./autogen.sh, followed by whatever arguments you would pass to configure. The qpe client is now available, and you can use --with-qt-prefix to specify the location of your Qt/Embedded tree, as well as the --with-qt-uic and --with-qt-moc to specify the location of these tools. With any luck, the default values will be sufficient.

If, as outlined above, you are cross-compiling and running afoul of the soft-float issue, add the --enable-soft-float option.

Here's a possible invocation for a Zaurus client:

./autogen.sh \
	--build i386-linux --host arm-linux \
	--disable-server --enable-client=qpe \
	--with-qt-prefix=/usr/arm-linux/share/qte2 \
	--with-qt-uic=/usr/bin/uic-qt3 \
	--with-qt-moc=/usr/bin/moc-qt2 \
	--enable-soft-float