Jelajahi Sumber

Adds symbian arm target.

git-svn-id: trunk@9327 -
sekelsenmat 17 tahun lalu
induk
melakukan
8476d0af2c
3 mengubah file dengan 72 tambahan dan 1 penghapusan
  1. 2 0
      compiler/systems.pas
  2. 63 1
      compiler/systems/i_symbian.pas
  3. 7 0
      compiler/systems/t_symbian.pas

+ 2 - 0
compiler/systems.pas

@@ -404,6 +404,8 @@ interface
              system_iA64_embedded,system_x86_64_embedded,system_mips_embedded,
              system_arm_embedded,system_powerpc64_embedded];
 
+       { all symbian systems }
+       systems_symbian = [system_i386_symbian,system_arm_symbian];
 
        cpu2str : array[TSystemCpu] of string[10] =
             ('','i386','m68k','alpha','powerpc','sparc','vm','ia64','x86_64',

+ 63 - 1
compiler/systems/i_symbian.pas

@@ -30,7 +30,7 @@ unit i_symbian;
     const
        system_i386_symbian_info : tsysteminfo =
           (
-            system       : system_i386_SYMBIAN;
+            system       : system_i386_symbian;
             name         : 'Symbian OS for i386';
             shortname    : 'Symbian';
             flags        : [tf_files_case_aware, tf_has_dllscanner,
@@ -88,6 +88,67 @@ unit i_symbian;
             abi          : abi_default;
           );
 
+       system_arm_symbian_info : tsysteminfo =
+          (
+            system       : system_arm_symbian;
+            name         : 'Symbian OS for ARM';
+            shortname    : 'Symbian';
+            flags        : [tf_files_case_aware, tf_has_dllscanner,
+                            tf_use_function_relative_addresses,
+                            tf_requires_proper_alignment,tf_no_pic_supported];
+            cpu          : cpu_arm;
+            unit_env     : 'SYMBIANUNITS';
+            extradefines : 'SYMBIAN';
+            exeext       : '.exe';
+            defext       : '.def';
+            scriptext    : '.bat';
+            smartext     : '.sl';
+            unitext      : '.ppu';
+            unitlibext   : '.ppl';
+            asmext       : '.s';
+            objext       : '.o';
+            resext       : '.res';
+            resobjext    : '.or';
+            sharedlibext : '.dll';
+            staticlibext : '.a';
+            staticlibprefix : 'libp';
+            sharedlibprefix : '';
+            sharedClibext : '.dll';
+            staticClibext : '.a';
+            staticClibprefix : 'lib';
+            sharedClibprefix : '';
+            Cprefix      : '_';
+            newline      : #13#10;
+            dirsep       : '\';
+            assem        : as_gas;
+            assemextern  : as_gas;
+            link         : nil;
+            linkextern   : nil;
+            ar           : ar_gnu_ar;
+            res          : nil;
+            dbg          : dbg_stabs;
+            script       : script_dos;
+            endian       : endian_little;
+            alignment    :
+              (
+                procalign       : 4;
+                loopalign       : 4;
+                jumpalign       : 0;
+                constalignmin   : 0;
+                constalignmax   : 4;
+                varalignmin     : 0;
+                varalignmax     : 4;
+                localalignmin   : 0;
+                localalignmax   : 4;
+                recordalignmin  : 0;
+                recordalignmax  : 4;
+                maxCrecordalign : 4
+              );
+            first_parm_offset : 8;
+            stacksize    : 262144;
+            abi          : abi_default;
+          );
+
 
 implementation
 
@@ -104,4 +165,5 @@ initialization
   set_source_info(system_arm_symbian_info);
   {$endif Symbian}
 {$endif CPUARM}
+
 end.

+ 7 - 0
compiler/systems/t_symbian.pas

@@ -195,4 +195,11 @@ initialization
 //  RegisterRes(res_gnu_windres_info);
   RegisterTarget(system_i386_symbian_info);
 {$endif i386}
+{$ifdef arm}
+//  RegisterExternalLinker(system_arm_symbian_info,TExternalLinkerWin);
+  RegisterInternalLinker(system_arm_symbian_info,TInternalLinkerWin);
+  RegisterImport(system_arm_symbian,TImportLibWin);
+  RegisterExport(system_arm_symbian,TExportLibWin);
+  RegisterTarget(system_arm_symbian_info);
+{$endif arm}
 end.