Difference between revisions of "SymbianOS"

From Lazarus wiki
Jump to navigationJump to search
Line 59: Line 59:
  
 
==Building Symbian OS Applications==
 
==Building Symbian OS Applications==
 +
 +
===Overview===
  
 
Building a Symbian OS Application is much more complex tast then on other operating systems, because there are several unique things about Symbian, like the UIDs, the need to register a application on the Emulator and other things.
 
Building a Symbian OS Application is much more complex tast then on other operating systems, because there are several unique things about Symbian, like the UIDs, the need to register a application on the Emulator and other things.
Line 66: Line 68:
 
===Guide for building applications for the Emulator===
 
===Guide for building applications for the Emulator===
  
 +
You need first to write a .ini file that will contain Symbian OS specific information. Here is a example file called QPasHello.ini
 +
 +
<pre>
 +
[Main]
 +
EXENAME=QPasHello.exe
 +
TARGETTYPE=EXE
 +
UID2=0x100039CE
 +
UID3=0xE1000002
 +
 +
[Files]
 +
source0=QPasHello.pas
 +
</pre>
  
 
===Using mksymbian===
 
===Using mksymbian===

Revision as of 09:27, 23 April 2007

The SymbianOS port of Free Pascal is under construction.

Roadmap to port FPC to SymbianOS

  1. Develop a Hello World application on c++ for SymbianOS - Felipe
  2. Convert the Build software from perl to our own building system, and make it build the c++ software - Felipe
  3. Effectively start to port the Free Pascal Runtime Library - Felipe
  4. Convert some c++ symbian applications to check for errors on the port - Felipe - 1 trivial done, more to go

Versions Roadmap

The first target will be UIQ 3.0 for the Symbian OS on x86 architecture (the emulator).

Compiling Free Pascal for the Emulator

1 - Download the latest FPC from Subversion. Make sure you also have the latest stable FPC installed.

2 - Next you will need a assembler compatible with the Code Warrior linker. Currently this is the GNU Assembler. It´s a good coincidence that the emulator users normal win32 PE executables, but of course it could use any other format, so FPC will expect a cross-assembler with the correct name. Because of this we can simply copy the as.exe file that comes with FPC releases and rename it.

Suppose your win32 gnu assembler is located at: C:\Programas\lazarus20\fpc\2.0.4\bin\i386-win32\as.exe

You should make a copy of it with this name: C:\Programas\lazarus20\fpc\2.0.4\bin\i386-win32\i386-symbian-as.exe

3 - Now, open a Windows Command Line session. The following batch script will execute a full compilation of FPC for the emulator. In this particular case lazarus was installed on C:\Programas\lazarus20 and the fpc 2.1 source code is on C:\Programas\fpc21

PATH=C:\Programas\lazarus20\fpc\2.0.4\bin\i386-win32
cd c:\Programas\fpc21
cd compiler
make i386
cd ..
cd rtl
cd symbian
make FPC=C:\Programas\fpc21\compiler\ppc386.exe

4 - Building the RTL only is not enougth to compile a Symbian OS application. We also need the c++ bindings which connect our RTL to the Symbian libraries.

4.1 - To build the bindings you will need the helper application called mksymbian. Please download it with subversion using this command:

svn co https://p-tools.svn.sourceforge.net/svnroot/p-tools/mksymbian mksymbian

4.2 - Next compile mksymbian. There is a lazarus project to help building it, but directly calling the compiler from command line should work just as well.

4.3 - Copy the mksymbian executable to the fpc/rtl/symbian/bindings directory, open a console, go to the fpc/rtl/symbian/bindings directory and type this command:

mksymbian bindings

4.4 - Copy the resulting .o file(s) to where your symbian os RTL is located. On our example it´s on: C:\Programas\fpc21\rtl\units\i386-symbian

5 - Next you can go to the session "Building Symbian OS Applications" bellow, to learn how to use your compiler to generate a Object Pascal software for Symbian.

The Symbian OS RTL will be located at: C:\Programas\fpc21\rtl\units\i386-symbian

Compiling Free Pascal for the real device

Not yet implemented.


Building Symbian OS Applications

Overview

Building a Symbian OS Application is much more complex tast then on other operating systems, because there are several unique things about Symbian, like the UIDs, the need to register a application on the Emulator and other things.

The UIQ SDK solves this problem using a very complex build system composed of tens of thousends of Perl code, batch files and Makefiles. It forces the software to have a specific directory structure, which is very bad to port existing software, as well as to writting cross-platform software. Because cross-platform is a strong point on Free Pascal we decided to eliminate this limitations when writing our build system for Symbian. We created a external build utility, called mksymbian, written in Pascal that auxiliates the build process.

Guide for building applications for the Emulator

You need first to write a .ini file that will contain Symbian OS specific information. Here is a example file called QPasHello.ini

[Main]
EXENAME=QPasHello.exe
TARGETTYPE=EXE
UID2=0x100039CE
UID3=0xE1000002

[Files]
source0=QPasHello.pas

Using mksymbian

The sintax of this tool is:

mksymbian [action] [project file]

Action can be one of the following:

  • cpp - Compiles a C++ project
  • pascal - Compiles a Object Pascal project
  • bindings - Compiles the pascal bindings for Symbian OS. It supposes that the necessary files are on the location where the command is executed.
  • showpath - Shows the paths found for the Symbian SDKs and Free Pascal. Utilized to check if the tool was able to find the tools.

The project file is a .ini file with many symbian os specific informations about a project, like the UIDs

Target can be one of the following:

  • WinEmulator - Builds for the x86 emulator
  • ArmDevice - Builds a binary for use on PDAs and Smartphones

Note: The tool parameters are not case-sensitive

Screenshots

First pascal symbian os application:

First pascal symbian app.PNG

See Also

External Links