mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-18 13:31:28 +02:00
89 lines
3.1 KiB
Plaintext
89 lines
3.1 KiB
Plaintext
Welcome to the MacOS port of FreePascal (FPC)
|
|
==============================================
|
|
|
|
It is considered under construction, at the moment.
|
|
|
|
Most of the programs in demo/text works.
|
|
|
|
Prerequisites:
|
|
--------------
|
|
Please note that compiling must be done on a platform
|
|
supported by FPC, either in Darwin (MacOS X) or e g on
|
|
Windows or Linux.
|
|
|
|
MPW (or ToolServer, but the rest of the description consider doing it
|
|
from MPW) must be installed on the target Macintosh.
|
|
It can be downloaded from Apple Computer, see
|
|
ftp://ftp.apple.com/developer/Tool_Chest/Core_Mac_OS_Tools/MPW_etc./
|
|
|
|
Compiling on host:
|
|
------------------
|
|
When compiling for target MacOS, use FPC as for other
|
|
operating systems with these options:
|
|
|
|
-Tmacos # target macos
|
|
-st # dont generate executable, link on target
|
|
|
|
If make is used, add OPT=-st OS_TARGET=macos (on foreign platforms
|
|
CPU_TARGET=powerpc must also be added)
|
|
|
|
Note that one must first build the RTL by issuing make in rtl/macos, with
|
|
the above options, to be able to buld other programs. (Currently only
|
|
system.pp and som OS independant units are available)
|
|
|
|
You might also want to add option -a, then the link script will not delete
|
|
not needed files, in particular the assembler files (*.s). This can be
|
|
useful if there are problems with the link script and you want to rerun it.
|
|
|
|
Assembling and linking on target:
|
|
---------------------------------
|
|
In case that host and target machine is different, transfer the produced
|
|
files, that is assembler files (*.s) and link script *_ppas, to the host.
|
|
|
|
On the target, use MPW to assemble and link the output from FreePascal by
|
|
executing the link script (which is an MPW script), with its directory
|
|
as current directory. Unfortunatelly the link script does not have the
|
|
proper mac file type, so this has to be fixed first e. g with
|
|
the MPW command SetFile.
|
|
|
|
Example: To build Hello World, execute:
|
|
|
|
Directory HD:Projekt:FreePascal:fpc:rtl:macos
|
|
SetFile -c 'MPS ' -t 'TEXT' system_ppas
|
|
system_ppas #executes the script
|
|
Directory HD:Projekt:FreePascal:fpc:demo:text
|
|
SetFile -c 'MPS ' -t 'TEXT' hello_ppas
|
|
hello_ppas #executes the script
|
|
|
|
|
|
Note on the compiler implementation
|
|
===================================
|
|
|
|
Global variables
|
|
----------------
|
|
Currently all global variables are indirect, that is the entry in
|
|
the TOC is always a pointer to data. (In the future small data items
|
|
may be stored directly in the TOC)
|
|
|
|
Thus all references to globals are via a construct like:
|
|
lwz rX, yyy[TC](r2) ;loads a pointer to a global into rX
|
|
|
|
Debugging
|
|
----------
|
|
-g is considered under construction.
|
|
|
|
When -g has been fixed, some debugging should be possible in
|
|
Power Mac Debugger 2.1, can be downloaded from Apple,
|
|
ftp://ftp.apple.com/developer/Tool_Chest/Core_Mac_OS_Tools
|
|
/MPW_etc./Debuggers/Power_Mac_Debugger.sit.hqx
|
|
|
|
|
|
It should be possible to see source code
|
|
but it will not be possible to examine variables.
|
|
One can of course examine registers, especially
|
|
at entry and exit point where the parameter lists is stored
|
|
in registers, according to the calling conventions.
|
|
|
|
A suggestion is to do the main debugging in GDB in the Darwin version of the
|
|
program.
|