Difference between revisions of "Compiling ScummVM/WebOS"

Jump to navigation Jump to search
1,627 bytes added ,  17:23, 2 February 2016
m
Add notice about no longer existing Palm App Catalog
m (Corrected prefix)
m (Add notice about no longer existing Palm App Catalog)
 
(14 intermediate revisions by the same user not shown)
Line 3: Line 3:
=== Install the WebOS SDK ===
=== Install the WebOS SDK ===


Download the latest [https://developer.palm.com/content/resources/develop/sdk_pdk_download.html WebOS SDK] from the [https://developer.palm.com/ 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.
Download the latest [https://developer.palm.com/content/resources/develop/sdk_pdk_download.html WebOS SDK] from the [https://developer.palm.com/ Palm Developer Center] and install it. The Ubuntu package is for x86 but it also works on Debian and even on x86_64 as described on the download page. When successfully installed you will end up with a ''/opt/PalmSDK/Current'' and a ''/opt/PalmPDK'' 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.


<syntaxhighlight type="bash">
'''Palm has removed the download pages for the WebOS PDK. The old download page is [https://web.archive.org/web/20130527051214/https://developer.palm.com/content/resources/develop/sdk_pdk_download.html archived here]. The files are also [http://www.ailis.de/~k/permdata/20140715/palm/ archived here]'''.
sudo apt-get install openjdk-6-jre
wget https://cdn.downloads.palm.com/sdkdownloads/2.1.0.519/sdkBinaries/palm-sdk_2.1.0-svn409992-pho519_i386.deb
sudo dpkg -i --force-architecture palm-sdk_2.1.0-svn409992-pho519_i386.deb
</syntaxhighlight>


=== Install the WebOS PDK ===
=== Fixing 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
Since [https://github.com/scummvm/scummvm/commit/4d13d44f8a2db8f887e285dbcbd3bb75ccc0ae2e Commit #4d13d44] ScummVM includes some SDL headers which are incorrectly configured in the WebOS PDK. This causes X11 related error messages (WebOS has no X11). To fix this simply edit the file ''/opt/PalmPDK/include/SDL/SDL_config.h'' and remove or comment-out the following line:
using the PDK for MacOS X and replacing the Mac binaries of the toolchain with the corresponding linux binaries. The [https://github.com/kayahr/linux-webos-pdk linux-webos-pdk project] can be used for creating a WebOS PDK for Linux:


<syntaxhighlight type="bash">
<syntaxhighlight type="c">
sudo apt-get install wget p7zip-full pax patch git
#define SDL_VIDEO_DRIVER_X11 1
git clone git://github.com/kayahr/linux-webos-pdk.git
cd linux-webos-pdk
./linux-webos-pdk
sudo mv opt/PalmPDK /opt/PalmPDK
</syntaxhighlight>
</syntaxhighlight>
After this the PDK is installed in ''/opt/PalmPDK''.


=== Environment variables ===
=== Environment variables ===
Line 45: Line 34:


<syntaxhighlight type="bash">
<syntaxhighlight type="bash">
wget http://palm.cdnetworks.net/opensource/2.1.0/zlib-1.2.3.tar.bz2
wget http://downloads.help.palm.com/opensource/3.0.5/zlib-1.2.3.tar.bz2
tar xvfj zlib-1.2.3.tar.bz2
tar xvfj zlib-1.2.3.tar.bz2
wget http://palm.cdnetworks.net/opensource/2.1.0/zlib-1.2.3-patches.tgz
wget http://downloads.help.palm.com/opensource/3.0.5/zlib-1.2.3-patches.tgz
tar xvfz zlib-1.2.3-patches.tgz  -O | patch -d zlib-1.2.3
tar xvfz zlib-1.2.3-patches.tgz  -O | patch -d zlib-1.2.3
cd zlib-1.2.3
cd zlib-1.2.3
touch NEWS AUTHORS
touch NEWS AUTHORS
autoreconf -i
autoreconf -i
./configure --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared
./configure --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared \
    CFLAGS="-mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp"
make install
make install
</syntaxhighlight>
</syntaxhighlight>
Line 65: Line 55:
cd flac-1.2.1
cd flac-1.2.1
./configure --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared \
./configure --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared \
      --disable-largefile --disable-thorough-tests --disable-doxygen-docs \
    --disable-largefile --disable-thorough-tests --disable-doxygen-docs \
      --disable-xmms-plugin --disable-cpplibs --disable-rpath \
    --disable-xmms-plugin --disable-cpplibs --disable-rpath \
      --disable-ogg --disable-oggtest
    --disable-ogg --disable-oggtest \
    CFLAGS="-mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp -O1"
make install
make install
</syntaxhighlight>
</syntaxhighlight>
Line 81: Line 72:
sed -i s/-fforce-mem// configure
sed -i s/-fforce-mem// configure
./configure --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared \
./configure --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared \
      --enable-speed --enable-fpm=arm --disable-aso
    --enable-speed --enable-fpm=arm --disable-aso \
    CFLAGS="-mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp"
make install
make install
</syntaxhighlight>
</syntaxhighlight>
Line 92: Line 84:
svn co -r 16259 http://svn.xiph.org/trunk/Tremor
svn co -r 16259 http://svn.xiph.org/trunk/Tremor
cd Tremor
cd Tremor
./autogen.sh --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared
./autogen.sh --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared \
    CFLAGS="-mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp"
make install
make install
</syntaxhighlight>
</syntaxhighlight>
Line 108: Line 101:
tar xvfz libogg-1.2.2.tar.gz
tar xvfz libogg-1.2.2.tar.gz
cd libogg-1.2.2
cd libogg-1.2.2
./configure --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared
./configure --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared \
    CFLAGS="-mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp"
make install
make install
</syntaxhighlight>
</syntaxhighlight>
Line 121: Line 115:
cd libvorbis-1.3.2
cd libvorbis-1.3.2
./configure --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared \
./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
    --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
make install
</syntaxhighlight>
</syntaxhighlight>
Line 134: Line 129:
cd libpng-1.2.44
cd libpng-1.2.44
./configure --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared \
./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
    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
make install
</syntaxhighlight>
</syntaxhighlight>
Line 147: Line 143:
cd libmpeg2-0.5.1
cd libmpeg2-0.5.1
./configure --host=arm-none-linux-gnueabi --prefix=$WEBOS_PDK/device/usr --disable-shared \
./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"
    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
sed -i s%-L/usr/lib%% src/Makefile
make install
make install
Line 157: Line 154:
./configure \
./configure \
       --host=webos \
       --host=webos \
      --prefix=/media/cryptofs/apps/usr/palm/applications/com.github.kayahr.scummvm \
       --enable-plugins \
       --enable-plugins \
      --default-dynamic \
      --enable-release \
      --disable-debug\
       --enable-zlib \
       --enable-zlib \
       --enable-tremor \
       --enable-tremor \
Line 165: Line 164:
make
make
</syntaxhighlight>
</syntaxhighlight>
The specified prefix must match the base app id as used when building the WebOS package.


== Building the WebOS package ==
== Building the WebOS package ==


This builds a release package:
In the simplest case just type this:


<syntaxhighlight type="bash">
<syntaxhighlight type="bash">
make webosrelease BASE_APP_ID=com.github.kayahr VER_PACKAGE=1
make package
</syntaxhighlight>
</syntaxhighlight>


This builds a beta package:
This creates a release package in the ''portdist'' directory under the current working directory.
 
You can specify a custom destination dir if needed:


<syntaxhighlight type="bash">
<syntaxhighlight type="bash">
make webosbeta BASE_APP_ID=com.github.kayahr VER_PACKAGE=1
make package PORTDISTDIR=/tmp/webos
</syntaxhighlight>
</syntaxhighlight>


After this the IPK file can be found in the root directory of ScummVM.
== Distributing on App Catalog ==


The specified package version must be higher than the one which is currently submitted to the Palm App Catalog.
'''NOTICE: The Palm App Catalog does not exist anymore. So the information in this section has only historical value.'''


The base app id must be a developer-specific id becaues Palm currently doesn't support team-maintained packages. When no base app id is specified then it defaults to ''org.scummvm''.
=== Increasing the package version ===
 
''VER_PACKAGE'' in ''backends/platform/webos/webos.mk'' 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:
 
<syntaxhighlight type="bash">
--prefix=/media/cryptofs/apps/usr/palm/applications/com.github.kayahr.scummvm
</syntaxhighlight>
 
To build a package for the Palm Beta App Catalog add "-beta" to the prefix:
 
<syntaxhighlight type="bash">
--prefix=/media/cryptofs/apps/usr/palm/applications/com.github.kayahr.scummvm-beta
</syntaxhighlight>
40

edits

Navigation menu