Development: wxPalm
About wxPalm
Yesterday
A couple of years ago there were a few people interesting in this port so the wxWidgets team organized a contest to write its skeleton and the existing code is the result of it.
Current
This port is in a very early state. Currently the port provides limited functionality for the wxFrame, wxMenu, wxStatusBar, wxTopLevelWindow, and wxWindow classes. The other classes in the wxWidgets toolkit still need to be ported. In it's current state, the Palm OS 6 port is capable of running the minimal wxWidgets sample.
Development environment
The compiling tools exist both in Linux/*nix and Windows. The tools under the Linux/*nix can only support the m68k CPU. The tools under Windows, PODS 1.2, support both m68k and arm. The current wxPalm can only be compiled with the PODS SDK 6.1 (Windows).
Here we'll illustrate how to install the development environment for the PalmOS in Linux and Windows. The tools we installed are:
- Compiler and debugger: gcc-2.95.3(m68k), gcc-3.3.1, gdb etc.
- Resource Compiler: PilRC
- Emulator: poes-3.5
- IDE: Eclipse
Linux/*nix
Because the prc-tools have not been updated for a long time, you should build it from the source.
Download source
- SDK 5.0r3
- pilrc
- prc-tools
- binutils-2.16.1
- gcc-2.95.3
- gcc-3.3.1
- gdb-5.3
- save the patch as gdb-5.3.palmos.yhfu.diff:
--- orig-gdb-5.3/gdb/remote-palmos.c 2008-01-10 09:04:06.374541492 +0800 +++ gdb-5.3/gdb/remote-palmos.c 2008-01-10 08:57:41.352600342 +0800 @@ -133,7 +133,7 @@ other form of hairy serial connection, I would think 2 seconds would be plenty. */ -static int remote_timeout = 2; +/*static int remote_timeout = 2;*/ static CORE_ADDR text_addr=0, data_addr=0, bss_addr=0; static CORE_ADDR save_ssp, save_usp; diff -Nur orig-gdb-5.3/include/obstack.h gdb-5.3/include/obstack.h --- orig-gdb-5.3/include/obstack.h 2001-03-14 10:27:43.000000000 +0800 +++ gdb-5.3/include/obstack.h 2008-01-10 08:59:15.357957402 +0800 @@ -423,7 +423,8 @@ ({ struct obstack *__o = (OBSTACK); \ if (__o->next_free + sizeof (void *) > __o->chunk_limit) \ _obstack_newchunk (__o, sizeof (void *)); \ - *((void **)__o->next_free)++ = ((void *)datum); \ + *((void **)__o->next_free) = ((void *)datum); \ + (void **)__o->next_free++; \ (void) 0; }) # define obstack_int_grow(OBSTACK,datum) \ @@ -431,7 +432,8 @@ ({ struct obstack *__o = (OBSTACK); \ if (__o->next_free + sizeof (int) > __o->chunk_limit) \ _obstack_newchunk (__o, sizeof (int)); \ - *((int *)__o->next_free)++ = ((int)datum); \ + *((int *)__o->next_free) = ((int)datum); \ + (int *)__o->next_free++; \ (void) 0; }) # define obstack_ptr_grow_fast(h,aptr) (*((void **) (h)->next_free)++ = (void *)aptr)
Prepare for compilation
- create a new directroy:
cd mkdir compileprc cd compileprc
- extract all of the files and patch it:
tar xfz prc-tools-2.3.tar.gz tar xfz binutils-2.16.1.tar.gz tar xfz gdb-5.3.tar.gz tar xfz gcc-2.95.3.tar.gz tar xfz gcc-3.3.1.tar.gz cat prc-tools-2.3/*.diff | patch -p0
- patch the gdb
patch -p0 -i gdb-5.3.palmos.yhfu.diff
- prepare the directory:
cd prc-tools-2.3/ ln -s ../binutils-2.16.1 binutils ln -s ../gdb-5.3 gdb ln -s ../gcc-2.95.3 gcc295 ln -s ../gcc-3.3.1 gcc cd ..
- If you use the Debian system, you also should install the texinfo
sudo apt-get install texi2html texinfo
Create build directory and build
mkdir build cd build mkdir empty ../prc-tools-2.3/configure --target=m68k-palmos --enable-languages=c,c++ --with-headers=`pwd`/empty --with-palmdev-prefix=/opt/palmdev sudo make sudo make install
build the pilrc
wget http://downloads.sourceforge.net/pilrc/pilrc-3.2.tar.gz?modtime=1090022400&big_mirror=0 tar -xvzf pilrc-3.2.tar.gz cd pilrc-3.2/unix ./configure make sudo make install
Install the SDK 5.0r3
- Extract the sdk
tar -x -C /opt/palmdev/ -f palmos-sdk-5.0r3-1.tar.gz
- Prepare the SDK
palmdev-pre export PATH=$PATH:/usr/local/m68k-palmos/bin
If you use the SDK 5r4, which is copied from the Palm_OS_Developer_Suite_1_2_Installer.rar, you should convert the *.h to unix format:
find sdk-5r4/ -name "*.h" | xargs dos2unix
Emulator
At first, I just downloaded the source from the Access website and modified/compiled it myself. I even created a patch! Another guy also do the same thing. But you have another good choice, you should just download the debian source form here, patch to the source of emulator and then goto the source directory run:
sudo apt-get install libfltk-dev fluid libxt-dev debuild -us -uc -b
If you don't use debian/ubuntu, you have to patch the files in debian/patches/* and run:
cd BuildUnix ./configure make make install
It's done!
Windows
The new development suit GODS doesn't contain the SDK 6.x, you have to download it from some other mirror sites.
Download
You can download the PDOS 1.2 from this link or this link
Install
If the file you downloaded from internet is compressed, then you should un-compress it before installation. The installation is easy, just double click the .exe file.
The components of PODS v1.2:
- Eclipse v.3.0.1
- CDT v.2.0.2
- Cygwin/PRC-Tools v.1.2
- Palm OS Resource Editor v.6.2
- Palm OS Debugger v.2.3.7
- Palm OS Emulator v.4.1.2
- Palm OS Simulator (Garnet v.5.4.0、Cobalt v.6.1.0)
- Palm OS SDK (5r4、6.1)
Install by hand
The installation of the PODS 1.2 would deconstruct your Cygwin if you installed Cygwin in your system before. If you have already installed Eclipse and Cygwin, here's the settlement:
Install the PODS 1.2
Select the custom option. Select skiping the installation of cygwin.
Pack some dirs
After the completion of installation, pack some dirs from the PODS 1.2 main directory:
- pods.eclipse.zip: pack these directories:
eclipse\features\com.palmsource* eclipse\features\org.eclipse.cdt* eclipse\plugins\com.palmsource* eclipse\plugins\org.eclipse.cdt*
- pods.tools.zip: pack this directory:
PalmOSTools
- pods.sdk.zip: pack these directories:
sdk-5r4 sdk-6.1
Uninstall the PODS 1.2
Now you may uninstall the PODS.
Install Eclipse
- Backup your own Eclipse's CDT plugins. Move these directories to an backup directory:
eclipse\features\org.eclipse.cdt* eclipse\plugins\org.eclipse.cdt*
- Install the pods.eclipse.zip: extract thoes files to Eclipse's directory.
Install prc-tools
- Before install prc-tools, you should install these packages:
_update-info-dir 00227-1 ash 20040127-1 base-files 2.6-1 base-passwd 1.1-1 bash 2.05b-16 binutils 20040312-1 bison 20030307-1 bzip2 1.0.2-5 ctags 5.5-4 cygutils 1.2.5-1 cygwin 1.5.10-3 cygwin-doc 1.3-7 diffutils 2.8.7-1 editrights 1.01-1 fileutils 4.1-2 findutils 4.1.7-4 flex 2.5.4a-3 gawk 3.1.3-4 gcc 3.3.1-3 gcc-g++ 3.3.1-3 gcc-mingw 20030911-4 gcc-mingw-core 20031020-1 gcc-mingw-g++ 20031020-1 gdb 20030919-1 gdbm 1.8.3-7 grep 2.5-1 groff 1.18.1-2 gzip 1.3.5-1 less 381-1 libbz2_0 1.0.2-1 libbz2_1 1.0.2-5 libgdbm 1.8.0-5 libgdbm-devel 1.8.3-7 libgdbm3 1.8.3-3 libgdbm4 1.8.3-7 libgettextpo0 0.12.1-3 libiconv2 1.9.1-3 libintl1 0.10.40-1 libintl2 0.12.1-3 libncurses5 5.2-1 libncurses6 5.2-8 libncurses7 5.3-4 libpcre 4.1-1 libpcre0 4.5-1 libpopt0 1.6.4-4 libreadline4 4.1-2 libreadline5 4.3-5 login 1.9-7 m4 1.4-1 make 3.80-1 man 1.5k-3 mingw-runtime 3.3-1 mktemp 1.5-3 ncurses 5.3-4 pcre 4.5-1 pcre-doc 4.5-1 pkgconfig 0.15.0-4 prc-tools 2.3 prc-tools-htmldocs 2.3 readline 4.3-5 sed 4.0.9-2 sh-utils 2.0.15-4 tar 1.13.25-5 tcltk 20030901-1 termcap 20021106-2 terminfo 5.3_20030726-1 texinfo 4.2-4 textutils 2.0.21-1 unzip 5.50-5 w32api 2.5-1 which 1.5-2 zip 2.3-6 zlib 1.2.1-1
The prc-tools in the list should be downloaded from this link. The other tools could be installed by the Cygwin's setup.exe utility.
- Install the prc-tools' patch msectgdb. Unpack the package to cygwin/PalmDev. Type the command under the Cygwin shell:
palmdev-prep
- Install the Palm OS Tools:
Unpack the package pods.tools.zip to PalmDev/PalmOSTools
- Install the SDK
Unpack the package pods.sdk.zip to PalmDev/
Configuration
- Add PalmOSTools to environment variable PATH
- Edit all of the Eclipse config files, change the PATH to your PalmOSTools directory:
eclipse\plugins\com.palmsource*\custom_content\default.prefs
- Start the Eclipse. Click on the "Window" menu and select "Preference", open the "Palm OS Development", select "Target Enviroment Settings", change the setting for Emulator and Simulator. For example, the directory of the simulator.
Mac OS X
TODO
Compile
Linux/*nix
TODO
Windows
Command line
Before do any make, you should make sure the variables in wxwidgets_trunk\build\palmos\auto-generated.mk are set to the right values:
TOOLS_DIR = C:/Program Files/PalmSource/Palm OS Developer Suite/PalmOSTools/ SDK_LOCATION = C:/Program Files/PalmSource/Palm OS Developer Suite/sdk-6.1/
The simplest way to compile the wxPalm is, type those command under the command terminal in Windows:
cd wxwidgets_trunk\build\palmos make depend make all
You can also edit a batch file to do that:
@echo off if not "%MYFLGMK%" == "" goto end_flags set MYFLGMK=1 PATH=c:\PalmOSCygwin\bin;%PATH% :end_flags if "%1" == "clean" goto end_dep if "%1" == "distclean" goto end_dep if "%1" == "cleandepend" goto end_dep make -e TARGET_PLATFORM=Device .dependencies :end_dep make -e TARGET_PLATFORM=Device %1 make -e TARGET_PLATFORM=Simulator %1
Save this file as "makeall.bat" and type:
makeall.bat
At last, you can find the file wxWidgets.prc in the directory DebugSim. To install it, you may just drag the file to your Simulator window and drop by your mouse.
IDE (Eclipse)
- Open Palm OS Developer Studio and click on File->Import.
- Select "Existing Project into Workspace" as the import source and click Next.
- On the next screen click the Browse button next to Project contents and select the folder you unpacked the source package into. Click on Finish to continue.
- You should now see the project listed in the Project pane on the right side of the window. Click on the name of the project. Now click on the Project menu and select "Rebuild Project"
- After the build is complete, click on the Run menu and select "" The Palm OS 6 simulator should start. If this is the first time you have used the simulator, you will be prompted to choose a ROM file. You can find the ROM files in a folder like "C:\Program Files\PalmSource\Palm OS Developer Suite\sdk-6\tools\Simulator\6.0.1\ROM" It doesn't really matter whether you choose a Release or a Debug ROM (the debug ROM generates extra reports when an application crashes.)
- You should see the Palm logo appear in the simulator window. You may get a dialog box asking you to choose a language. Click OK to continue. You should see the simulator initialize the built-in Palm applications. After a few moments, the wxWidgets minimal sample should start.
Mac OS X
TODO
To-do
- Base system API support, such as the file stream, wide-char functions.
- UI class
- Compile with SDK 5.x
Reference
Tools
- prc-tools Palm OS programming with GCC.
- Palm OS Emulator binary packages for Linux.
- PDOS Palm OS Developer Suite
- PilRC Palm Pilot resources Compiler.
- piBuilder is a visual resource editor for PalmOS software developers who use PilRC for building application resources.
- osx-palm-tools Mac OS X tools for Palm development
Lib
- PFLib This library is a abstract layer for handling files in PalmOS.
- PHP Palm Database (PDB) Library Read, write, and modify Palm OS PDB files with PHP.
Doc
- PalmFAQ You can find some useful information for the PalmOS
- DllPort2Palm Port DLLs to Palm OS with ease
- prc-tools 64bit Solution to prc-tools on AMD64 and other 64-bit machines.