Browse Source

Improved Symbian OS support. Added c bindings. Simple softwares for the emulator now work

git-svn-id: trunk@7157 -
sekelsenmat 18 years ago
parent
commit
812ca1e7a7

+ 3 - 0
.gitattributes

@@ -5255,6 +5255,9 @@ rtl/sparc/strings.inc svneol=native#text/plain
 rtl/sparc/stringss.inc svneol=native#text/plain
 rtl/sparc/stringss.inc svneol=native#text/plain
 rtl/symbian/Makefile svneol=native#text/plain
 rtl/symbian/Makefile svneol=native#text/plain
 rtl/symbian/Makefile.fpc svneol=native#text/plain
 rtl/symbian/Makefile.fpc svneol=native#text/plain
+rtl/symbian/bindings/pbeexe.cpp -text
+rtl/symbian/buildrtl.pp -text
+rtl/symbian/symbian.pas -text
 rtl/symbian/sysdir.inc svneol=native#text/plain
 rtl/symbian/sysdir.inc svneol=native#text/plain
 rtl/symbian/sysfile.inc svneol=native#text/plain
 rtl/symbian/sysfile.inc svneol=native#text/plain
 rtl/symbian/sysheap.inc svneol=native#text/plain
 rtl/symbian/sysheap.inc svneol=native#text/plain

+ 7 - 5
compiler/systems/i_symbian.pas

@@ -1,7 +1,8 @@
 {
 {
-    Copyright (c) 1998-2002 by Peter Vreman
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2007 by contributors of the Free Pascal Compiler
 
 
-    This unit implements support information structures for win32
+    This unit implements support information structures for symbian os
 
 
     This program is free software; you can redistribute it and/or modify
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     it under the terms of the GNU General Public License as published by
@@ -32,11 +33,12 @@ unit i_symbian;
             system       : system_i386_SYMBIAN;
             system       : system_i386_SYMBIAN;
             name         : 'Symbian OS for i386';
             name         : 'Symbian OS for i386';
             shortname    : 'Symbian';
             shortname    : 'Symbian';
-            flags        : [tf_files_case_aware,tf_has_dllscanner,tf_use_function_relative_addresses
-                            {,tf_smartlink_sections,tf_section_threadvars}{,tf_needs_dwarf_cfi},tf_winlikewidestring];
+            flags        : [tf_files_case_aware, tf_has_dllscanner,
+                            tf_use_function_relative_addresses,
+                            tf_winlikewidestring];
             cpu          : cpu_i386;
             cpu          : cpu_i386;
             unit_env     : 'SYMBIANUNITS';
             unit_env     : 'SYMBIANUNITS';
-            extradefines : 'UNIX;SYMBIAN';
+            extradefines : 'SYMBIAN';
             exeext       : '.exe';
             exeext       : '.exe';
             defext       : '.def';
             defext       : '.def';
             scriptext    : '.bat';
             scriptext    : '.bat';

+ 6 - 6
compiler/systems/t_symbian.pas

@@ -1,8 +1,9 @@
 {
 {
-    Copyright (c) 1998-2002 by Peter Vreman
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2007 by contributors of the Free Pascal Compiler
 
 
     This unit implements support import,export,link routines
     This unit implements support import,export,link routines
-    for the (i386) Win32 target
+    for the Symbian OS target
 
 
     This program is free software; you can redistribute it and/or modify
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     it under the terms of the GNU General Public License as published by
@@ -31,7 +32,7 @@ interface
        symconst,symdef,symsym,
        symconst,symdef,symsym,
        script,gendef,
        script,gendef,
        cpubase,
        cpubase,
-       import,export,link,cgobj,t_win, i_symbian;
+       import,export,link,cgobj, i_symbian;
 
 
     type
     type
       TInternalLinkerSymbian = class(TInternalLinker)
       TInternalLinkerSymbian = class(TInternalLinker)
@@ -46,7 +47,7 @@ implementation
     SysUtils,
     SysUtils,
     cfileutils,
     cfileutils,
     cpuinfo,cgutils,dbgbase,
     cpuinfo,cgutils,dbgbase,
-    owar,ogbase,ogcoff;
+    owar,ogbase,ogcoff, t_win;
 
 
 {****************************************************************************
 {****************************************************************************
                             TInternalLinkerSymbian
                             TInternalLinkerSymbian
@@ -187,8 +188,7 @@ implementation
 
 
 initialization
 initialization
 {$ifdef i386}
 {$ifdef i386}
-  RegisterExternalLinker(system_i386_symbian_info,TExternalLinkerWin);
-  RegisterInternalLinker(system_i386_symbian_info,TInternalLinkerSymbian);
+  RegisterInternalLinker(system_i386_symbian_info,TExternalLinkerWin);
   RegisterImport(system_i386_symbian,TImportLibWin);
   RegisterImport(system_i386_symbian,TImportLibWin);
   RegisterExport(system_i386_symbian,TExportLibWin);
   RegisterExport(system_i386_symbian,TExportLibWin);
   RegisterDLLScanner(system_i386_symbian,TDLLScannerWin);
   RegisterDLLScanner(system_i386_symbian,TDLLScannerWin);

+ 18 - 454
rtl/symbian/Makefile

@@ -1,8 +1,8 @@
 #
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2007/03/04]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2007/04/22]
 #
 #
 default: all
 default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded
+MAKEFILETARGETS=i386-symbian arm-symbian
 BSDs = freebsd netbsd openbsd darwin
 BSDs = freebsd netbsd openbsd darwin
 UNIXs = linux $(BSDs) solaris qnx
 UNIXs = linux $(BSDs) solaris qnx
 LIMIT83fs = go32v2 os2 emx watcom
 LIMIT83fs = go32v2 os2 emx watcom
@@ -237,477 +237,33 @@ RTL=..
 INC=$(RTL)/inc
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
 COMMON=$(RTL)/common
 PROCINC=$(RTL)/$(CPU_TARGET)
 PROCINC=$(RTL)/$(CPU_TARGET)
-OBJPASDIR=$(RTL)/objpas
 UNITPREFIX=rtl
 UNITPREFIX=rtl
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=system
-endif
+OBJPASDIR=$(RTL)/objpas
 ifeq ($(FULL_TARGET),i386-symbian)
 ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=system
+override TARGET_UNITS+=system objpas macpas buildrtl
 endif
 endif
 ifeq ($(FULL_TARGET),arm-symbian)
 ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=system
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=system
+override TARGET_UNITS+=system objpas macpas buildrtl
 endif
 endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=system
+ifeq ($(FULL_TARGET),i386-symbian)
+override TARGET_IMPLICITUNITS+=ctypes strings symbian
 endif
 endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=system
+ifeq ($(FULL_TARGET),arm-symbian)
+override TARGET_IMPLICITUNITS+=ctypes strings symbian
 endif
 endif
 override INSTALL_FPCPACKAGE=y
 override INSTALL_FPCPACKAGE=y
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
 ifeq ($(FULL_TARGET),i386-symbian)
 ifeq ($(FULL_TARGET),i386-symbian)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
 ifeq ($(FULL_TARGET),arm-symbian)
 ifeq ($(FULL_TARGET),arm-symbian)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
 endif
 endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
-endif
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
 ifeq ($(FULL_TARGET),i386-symbian)
 ifeq ($(FULL_TARGET),i386-symbian)
 override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
 ifeq ($(FULL_TARGET),arm-symbian)
 ifeq ($(FULL_TARGET),arm-symbian)
 override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
 endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
-endif
 ifdef REQUIRE_UNITSDIR
 ifdef REQUIRE_UNITSDIR
 override UNITSDIR+=$(REQUIRE_UNITSDIR)
 override UNITSDIR+=$(REQUIRE_UNITSDIR)
 endif
 endif
@@ -1469,7 +1025,7 @@ override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
 endif
 endif
 ifndef CROSSBOOTSTRAP
 ifndef CROSSBOOTSTRAP
 ifneq ($(BINUTILSPREFIX),)
 ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-XP$(BINUTILSPREFIX) -Xc
+override FPCOPT+=-XP$(BINUTILSPREFIX) 
 endif
 endif
 ifneq ($(BINUTILSPREFIX),)
 ifneq ($(BINUTILSPREFIX),)
 override FPCOPT+=-Xr$(RLINKPATH)
 override FPCOPT+=-Xr$(RLINKPATH)
@@ -1966,3 +1522,11 @@ SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 system$(PPUEXT) : system.pp $(SYSDEPS)
 system$(PPUEXT) : system.pp $(SYSDEPS)
 	$(COMPILER) -Us -Sg system.pp
 	$(COMPILER) -Us -Sg system.pp
+system$(PPUEXT) : system.pp $(SYSDEPS)
+	$(COMPILER) -Us -Sg system.pp -Fi../win
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc system$(PPUEXT)
+	$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
+macpas$(PPUEXT) : $(INC)/macpas.pp system$(PPUEXT)
+	$(COMPILER) $(INC)/macpas.pp $(REDIR)
+buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) objpas$(PPUEXT) macpas$(PPUEXT)
+	$(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(PROCINC) -I$(OBJPASDIR) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl

+ 22 - 2
rtl/symbian/Makefile.fpc

@@ -6,7 +6,9 @@
 main=rtl
 main=rtl
 
 
 [target]
 [target]
-units=system
+units=system objpas macpas buildrtl
+implicitunits=ctypes strings \
+      symbian
 
 
 [require]
 [require]
 nortl=y
 nortl=y
@@ -28,9 +30,11 @@ RTL=..
 INC=$(RTL)/inc
 INC=$(RTL)/inc
 COMMON=$(RTL)/common
 COMMON=$(RTL)/common
 PROCINC=$(RTL)/$(CPU_TARGET)
 PROCINC=$(RTL)/$(CPU_TARGET)
-OBJPASDIR=$(RTL)/objpas
+
 UNITPREFIX=rtl
 UNITPREFIX=rtl
 
 
+OBJPASDIR=$(RTL)/objpas
+
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 SYSTEMPPU=$(addsuffix $(PPUEXT),system)
 SYSTEMPPU=$(addsuffix $(PPUEXT),system)
@@ -56,3 +60,19 @@ SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 
 
 system$(PPUEXT) : system.pp $(SYSDEPS)
 system$(PPUEXT) : system.pp $(SYSDEPS)
         $(COMPILER) -Us -Sg system.pp
         $(COMPILER) -Us -Sg system.pp
+
+#
+# Unit specific rules
+#
+
+system$(PPUEXT) : system.pp $(SYSDEPS)
+        $(COMPILER) -Us -Sg system.pp -Fi../win
+
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc system$(PPUEXT)
+        $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
+
+macpas$(PPUEXT) : $(INC)/macpas.pp system$(PPUEXT)
+        $(COMPILER) $(INC)/macpas.pp $(REDIR)
+
+buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) objpas$(PPUEXT) macpas$(PPUEXT)
+        $(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(PROCINC) -I$(OBJPASDIR) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl

+ 30 - 0
rtl/symbian/bindings/pbeexe.cpp

@@ -0,0 +1,30 @@
+// pbeexe.cpp
+#include <e32std.h>
+
+extern "C"
+{
+
+/* Pascal Entry point declaration */
+int Pascal_E32Main();
+
+/* class User : public UserHeap */
+
+/* User::InfoPrint */
+void User_InfoPrint()
+{
+     // Define a non-modifiable compile time allocated
+     // descriptor (Symbian OS string)
+     _LIT(KQHelloWorldString, "My Hello World");
+     // show an indication
+     User::InfoPrint(KQHelloWorldString);
+}
+
+}
+
+/* Symbian OS Entry Point */
+TInt E32Main()
+{
+     Pascal_E32Main();
+
+     return KErrNone;
+}

+ 11 - 0
rtl/symbian/buildrtl.pp

@@ -0,0 +1,11 @@
+unit buildrtl;
+
+  interface
+
+    uses
+      ctypes, strings,
+      symbian;
+
+  implementation
+
+end.

+ 16 - 0
rtl/symbian/symbian.pas

@@ -0,0 +1,16 @@
+unit symbian;
+
+{$mode objfpc}{$H+}
+
+interface
+
+{ e32std.h header file }
+
+{ User class }
+
+procedure User_InfoPrint(); cdecl; external;
+
+implementation
+
+end.
+

+ 4 - 1
rtl/symbian/system.pp

@@ -168,13 +168,16 @@ var
     to check if the call stack can be written on exceptions }
     to check if the call stack can be written on exceptions }
   _SS : Cardinal;
   _SS : Cardinal;
 
 
+procedure pascalmain; external name 'PASCALMAIN';
+
+{ Entry point for the pascal code }
 function Pascal_E32Main: Integer; cdecl; [public, alias: '_Pascal_E32Main'];
 function Pascal_E32Main: Integer; cdecl; [public, alias: '_Pascal_E32Main'];
 var
 var
   ST : pointer;
   ST : pointer;
 begin
 begin
   IsLibrary := false;
   IsLibrary := false;
 
 
-//  PascalMain;
+  PascalMain;
 
 
   { if we pass here there was no error }
   { if we pass here there was no error }
   system_exit;
   system_exit;