Compiling ScummVM/WebOS

From ScummVM :: Wiki
< Compiling ScummVM
Revision as of 19:52, 13 September 2011 by Kayahr (talk | contribs) (Updated download URLs (Files are the same))
Jump to navigation Jump to search

Setting up the Toolchain

Install the WebOS SDK

Download the latest WebOS SDK from the Palm Developer Center and install it. This is an Ubuntu package for x86 but it also works on Debian and even on x86_64 as described on the download page. When successful you will end up with a /opt/PalmSDK/Current directory and you are able to call programs like palm-package from the command-line. The SDK needs a Java 6 Runtime Environment so you have to install that, too.

sudo apt-get install openjdk-6-jre
sudo dpkg -i --force-architecture palm-sdk_3.0.0-svn486609-pho643_i386.deb

Install the WebOS PDK

The PDK is needed for compiling native applications for WebOS. Unfortunately Palm doesn't provide an official PDK for Linux. But the PDK is a pretty simple piece of software which can be hacked together by using the PDK for MacOS X and replacing the Mac binaries of the toolchain with the corresponding linux binaries. The linux-webos-pdk project can be used for creating a WebOS PDK for Linux:

sudo apt-get install wget p7zip-full pax patch git
git clone git://
cd linux-webos-pdk
sudo mv opt/PalmPDK /opt/PalmPDK

When the linux-webos-pdk script asks for the toolchain to use then choose version 2011.03-41.

After this the PDK is installed in /opt/PalmPDK.

Environment variables

Build instructions in this article and the ScummVM build system requires that the environment variables WEBOS_SDK and WEBOS_PDK are pointing to the SDK and PDK directories and that the PATH includes the bin directory of the toolchain:

export WEBOS_SDK=/opt/PalmSDK/Current
export WEBOS_PDK=/opt/PalmPDK
export PATH=$PATH:$WEBOS_PDK/arm-gcc/bin

Compiling required libraries

This section describes how to cross-compile all the libraries needed by the WebOS ScummVM port and how to install them into the toolchain. Only static libraries are compiled even when WebOS devices already have some matching shared libraries installed. That's because the App Catalog guidelines currently only allows dynamic linking against the global Standard C/C++, SDL and OpenGL libraries. So we simply statically link everything else.


zlib is needed to support compressed savefiles.

tar xvfj zlib-1.2.3.tar.bz2
tar xvfz zlib-1.2.3-patches.tgz  -O | patch -d zlib-1.2.3
cd zlib-1.2.3
autoreconf -i
./configure --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared \
    CFLAGS="-mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp"
make install


FLAC is used for playing sounds in FLAC format.

tar xvfz flac-1.2.1.tar.gz
cd flac-1.2.1
./configure --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared \
    --disable-largefile --disable-thorough-tests --disable-doxygen-docs \
    --disable-xmms-plugin --disable-cpplibs --disable-rpath \
    --disable-ogg --disable-oggtest \
    CFLAGS="-mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp"
make install


MAD is used for playing sounds in MP3 format.

tar xvfz libmad-0.15.1b.tar.gz
cd libmad-0.15.1b/
sed -i s/-fforce-mem// configure
./configure --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared \
    --enable-speed --enable-fpm=arm --disable-aso \
    CFLAGS="-mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp"
make install


Tremor is used for playing sounds in Ogg Vorbis format.

svn co -r 16259
cd Tremor
./ --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared \
    CFLAGS="-mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp"
make install

Compiling optional libraries

This section describes how to compile third-party libraries which can be used by ScummVM but which are not used for the ScummVM WebOS release.


Ogg together with Ogg Vorbis is an optional replacement for Tremor. Currently not used by the ScummVM WebOS release.

tar xvfz libogg-1.2.2.tar.gz
cd libogg-1.2.2
./configure --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared \
    CFLAGS="-mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp"
make install

Ogg Vorbis

Ogg Vorbis is an optional replacement for Tremor. Currently not used by the ScummVM WebOS release.

tar xvfj libvorbis-1.3.2.tar.bz2
cd libvorbis-1.3.2
./configure --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared \
    --with-ogg-libraries=$WEBOS_PDK/device/usr/lib --with-ogg-includes=$WEBOS_PDK/device/usr/include \
    CFLAGS="-mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp"
make install


libpng is needed for the Broken Sword 2.5 engine. But this engine is not supported in the ScummVM WebOS release and therefore libpng is not needed.

tar xvfz libpng-1.2.44.tar.gz 
cd libpng-1.2.44
./configure --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared \
    CPPFLAGS=-I$WEBOS_PDK/device/usr/include LDFLAGS=-L$WEBOS_PDK/device/usr/lib \
    CFLAGS="-mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp"
make install


libmpeg2 is no longer used by ScummVM.

tar xvfz libmpeg2-0.5.1.tar.gz
cd libmpeg2-0.5.1
./configure --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared \
    CPPFLAGS=-I$WEBOS_PDK/include LDFLAGS="-L$WEBOS_PDK/device/lib -Wl,--allow-shlib-undefined" \
    CFLAGS="-mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp"
sed -i s%-L/usr/lib%% src/Makefile
make install

Compiling ScummVM

./configure \
      --host=webos \
      --enable-plugins \
      --default-dynamic \
      --enable-release \
      --enable-zlib \
      --enable-tremor \
      --enable-mad \

Building the WebOS package

In the simplest case just type this:

make package

This creates a release package in the portdist directory under the current working directory.

You can specify a custom destination dir if needed:

make package PORTDISTDIR=/tmp/webos

Distributing on App Catalog

Increasing the package version

VER_PACKAGE in backends/platform/webos/ must be set to a number which is higher than the currently used package version in the app catalog. So when creating an updated package for ScummVM 1.3.9 and the current ScummVM package in the app catalog is version 1.3.0902 then you must set VER_PACKAGE to 3 to create the ScummVM package with version 1.3.0903. Yeah, I know that's ugly but WebOS package version numbers are restricted to three numeric components.

App ID and name

As long as Palm doesn't support Team-maintained apps the uploaded packages must not be packaged with the default org.scummvm base id. Instead apps must be uploaded with a user-specific base id. A good practice is using the github user as base id: com.github.<username>. It is also necessary to use a user-specific app name when submitting the created package to the Palm app catalog because the app name must be unique. Use ScummVM (<username>) instead of ScummVM and ScummVM Beta (<username>) instead of ScummVM Beta.

The app id is automatically parsed from the installation prefix. So add a configure parameter like this to prepare a build of a package for the Palm App Catalog:


To build a package for the Palm Beta App Catalog add "-beta" to the prefix: