Difference between revisions of "Free Pascal Wiki"

From Freepascal Amiga wiki
Jump to navigation Jump to search
(→‎Status: Rephrased some things and added comment, more consistent use of Amiga/m68k)
m (Changed as much real names into handles.)
Line 31: Line 31:
 
A restart was done in 2010 by ALB42 based on Free Pascal 2.5.1 and announced in the first half of 2011 at aros-exec, which was again (partially) based on the Amiga 68k port by Nils Sjoholm.
 
A restart was done in 2010 by ALB42 based on Free Pascal 2.5.1 and announced in the first half of 2011 at aros-exec, which was again (partially) based on the Amiga 68k port by Nils Sjoholm.
  
In August 2014, Karoly (porter of Free Pascal to MorphOS and classic Amiga(OS)) started the integrating and unification of all three supported amiga-noid platforms into the FPC 2.7.1 trunk.
+
In August 2014, Chain-Q (porter of Free Pascal to MorphOS and classic Amiga(OS)) started the integrating and unification of all three supported amiga-noid platforms into the FPC 2.7.1 trunk.
  
 
As of FPC 3.0 release, AROS/i386 is officially supported as a target by Free Pascal.
 
As of FPC 3.0 release, AROS/i386 is officially supported as a target by Free Pascal.
Line 43: Line 43:
 
* 2011-05-30 - Initial release of Free Pascal 2.5.1 for AROS available to public. [http://aros-exec.org/modules/newbb/viewtopic.php?post_id=56221#forumpost56221]
 
* 2011-05-30 - Initial release of Free Pascal 2.5.1 for AROS available to public. [http://aros-exec.org/modules/newbb/viewtopic.php?post_id=56221#forumpost56221]
 
* 2011-06-18 - Start of a native LCL implementation for AROS. [http://aros-exec.org/modules/newbb/viewtopic.php?post_id=56793#forumpost56793]
 
* 2011-06-18 - Start of a native LCL implementation for AROS. [http://aros-exec.org/modules/newbb/viewtopic.php?post_id=56793#forumpost56793]
* 2011-08-06 - With commit of revision r18107 by Florian, AROS received its own branch in FPC sources. [http://svn.freepascal.org/cgi-bin/viewvc.cgi/branches/aros/?pathrev=18107]
+
* 2011-08-06 - With commit of revision r18107 by fpk, AROS received its own branch in FPC sources. [http://svn.freepascal.org/cgi-bin/viewvc.cgi/branches/aros/?pathrev=18107]
* 2014-08-18 - With revision 28445, Karoly transferred ALB42's work on AROS RTL from the AROS branch into FPC trunk [http://svn.freepascal.org/cgi-bin/viewvc.cgi?view=revision&revision=28445]
+
* 2014-08-18 - With revision 28445, Chain-Q transferred ALB42's work on AROS RTL from the AROS branch into FPC trunk [http://svn.freepascal.org/cgi-bin/viewvc.cgi?view=revision&revision=28445]
 
* 2014-08-31 - With revision 28547, ALB42 transferred the package AROS units from branch AROS to trunk, effectively adding support for AROS to experimental FPC 2.7.1 compiler. [http://svn.freepascal.org/cgi-bin/viewvc.cgi?view=revision&revision=28547].
 
* 2014-08-31 - With revision 28547, ALB42 transferred the package AROS units from branch AROS to trunk, effectively adding support for AROS to experimental FPC 2.7.1 compiler. [http://svn.freepascal.org/cgi-bin/viewvc.cgi?view=revision&revision=28547].
  
Line 68: Line 68:
  
 
ToDo Items:
 
ToDo Items:
* Threads are not fully supported yet <span style="background:yellow"> -> yes they are, using AThread implementation by Karoly</span>
+
* Threads are not fully supported yet <span style="background:yellow"> -> yes they are, using AThread implementation by Chain-Q</span>
 
* ExecuteProcess() is not supported yet <span style="background:yellow"> -> yes it is, made available by ALB42, need to lookup revision (future functionality?) </span>
 
* ExecuteProcess() is not supported yet <span style="background:yellow"> -> yes it is, made available by ALB42, need to lookup revision (future functionality?) </span>
  

Revision as of 10:51, 24 June 2015

Note

This is a basic initial idea for the official Free Pascal online wiki regarding the AROS port. Please feel free to comment and/or improve, especially on the developer and technical paragraphs.

TODO: add more information, this is merely initial commit

NOTE: if wanted we can use this page for editing in which case i'm willing to keep it in sync with fpc-wiki if/when going online.

Please note that all information detailed here is specific to Free Pascal 3.x and above, and does not apply to the older existing AROS Free Pascal 1.x port, nor does it apply to the older 0.99.x and 1.0.x versions of Free Pascal for classic Amiga/68k.

However, this port is very closely related to the recent supported classic Amiga/m68k and MorphOS platforms as they share some of the same code with AROS in an attempt to unify the support in Free Pascal for these platforms.


AROS Port

This port is aimed at AROS (AROS Research Operating System), the open source implementation of the "classic Amiga operating system", which runs on modern processors like x86/x64/arm and PPC. Currently only x86 ABIv0 is supported.

Because AROS is API compatible with Amiga (and binary compatible with Amiga 68k), there is much similarity when addressing Classic Amiga, MorphOS and AROS (all of which are supported by Free Pascal).

Free Pascal for AROS has its own Wiki page here (under slow and continues development).


History

An initial AROS contribution regarding a port of Free Pascal version 1.x was done by sasu in 2002, which was (partially) based on the support units for the Amiga m68k port of Free Pascal which in its own turn was mostly the work of Nils Sjoholm. Further development of this port for AROS ceased quickly thereafter.

A restart was done in 2010 by ALB42 based on Free Pascal 2.5.1 and announced in the first half of 2011 at aros-exec, which was again (partially) based on the Amiga 68k port by Nils Sjoholm.

In August 2014, Chain-Q (porter of Free Pascal to MorphOS and classic Amiga(OS)) started the integrating and unification of all three supported amiga-noid platforms into the FPC 2.7.1 trunk.

As of FPC 3.0 release, AROS/i386 is officially supported as a target by Free Pascal.


Important dates

  • 2002-02-19 - sasu ported Free Pascal 1.1 to AROS and commited his work into AROS Contrib repo [1]
  • 2007-01-02 - Not being actively developed and for saving build time and space, Free Pascal was removed from AROS Contrib. [2]
  • 2011-04-18 - First official announcement of a working port of FPC 2.5 for AROS. [3]
  • 2011-05-30 - Initial release of Free Pascal 2.5.1 for AROS available to public. [4]
  • 2011-06-18 - Start of a native LCL implementation for AROS. [5]
  • 2011-08-06 - With commit of revision r18107 by fpk, AROS received its own branch in FPC sources. [6]
  • 2014-08-18 - With revision 28445, Chain-Q transferred ALB42's work on AROS RTL from the AROS branch into FPC trunk [7]
  • 2014-08-31 - With revision 28547, ALB42 transferred the package AROS units from branch AROS to trunk, effectively adding support for AROS to experimental FPC 2.7.1 compiler. [8].

Status

  • Most FPC RTL functions are supported
  • AROS' support units and implementations are as much source compatible to AmigaOS m68k as possible, so theoretically any program you write which uses functionality from these units could therefor be cross-compiled for Amiga/m68k (if not using AROS specific functionality).
  • The (cross) compiler is available for multiple platforms, including AROS/i386, Windows32/64 and linux32/64
  • AROS Binutils are available -> Need to prepare archives + Readme's, add links to sources, etc.


Missing features:

  • Support for AROS ABIv1 is not implemented yet. see classic Amiga/m68k for now.
  • No WideStrings manager. Will it ever ?
  • Dynamic Libraries (in the sense of how Free Pascal implements this functionality). Normal dynamic loading of native .library files is of course supported, using Exec LoadLibrary() and CloseLibrary() functions. Reason for missing is that AROS does not officially supports retrieving Function offsets using symlinks and function names are missing fron AROS native libraries.


Future enhancements (requires FPC 3.1.1. Not available in trunk, see also ALB42's blog):

  • Support for fpGUI (native and LCL) was started by ALB42 in 2014 (working for most parts)
  • Support for Lazarus/MUI widgets was (re)started in 2014 by ALB42 (currently in development, already very usable).


ToDo Items:

  • Threads are not fully supported yet -> yes they are, using AThread implementation by Chain-Q
  • ExecuteProcess() is not supported yet -> yes it is, made available by ALB42, need to lookup revision (future functionality?)


A more elaborating status pages can be viewed on the Free Pascal for AROS wiki - Status Page.

Port Notes

The current (cross) compiler is able to create AROS executables for AROS/i386 (abiv0).

Defines

Specific defines for AROS are

  • AROS - To identify AROS exclusively
  • HASAMIGA - To identify any Amiga-like system (Amiga/m68k, MorphOS and AROS), similar to HASUNIX which is defined across Unix systems.
  • LCL_MUI (use LCL/MUI widgetset implementation), if omitted use fpGUI//LCL implementation.


Paths

Every operating system derived from or based upon classic Amiga/m68k, is neither Windows nor Linux. This results in paths being treated differently. Amiga/AROS/MorphOS uses the format "Drive Name:Directory 1/Subdirectory/Name of a file.extention" (without the quotes). Please keep this in mind when developing software that is intended to run cross-platform.


Requirements to start developing for AROS

  • An AROS ABIv0 i386 installation in case testing of the executables is required.
  • Free Pascal for AROS, or (cross)compiler for a supported platform (Windows, Linux, Others ?).
  • The AROS binutils (standard installed by most AROS distros)
  • No other dependencies required, but for completeness the AROS NDK.

Native development and/or testing executables is possible by installing AROS into a virtual machine, running AROS hosted (as single application) under Linux/Windows or on a dedicated AROS machine. All of which require minimal i386 processor.


Documentation/Reference

Technical information

Compiling the compiler from source

Developer information