#1 2023-01-07 11:11:39

dcoun
Member
From: Crete, Greece
Registered: 2020-02-18
Posts: 272

fpc goes unicode

Date: Fri, 6 Jan 2023 18:05:43 +0100 (CET)
From: Michael Van Canneyt <michael@freepascal.org>
To: Lazarus mailing list <lazarus@lists.lazarus-ide.org>,  FPC
    development mailing list <fpc-devel@lists.freepascal.org>
Subject: [Lazarus] Unicode RTL for FPC


Hello,

I'm currently working for a company (Tixeo.com) that is preparing to use FPC to recompile their flagship product (written in Delphi) for certain targets.
As part of this work, we're striving to make the Free Pascal RTL and Packages more compatible with recent Delphis.
That means:
- String = UnicodeString, Char=WideChar
- Dotted units.
Before you all get a heart attack:
Because backwards compatibility is important, FPC will of course continue to distribute a backwards-compatible RTL and packages, with single-byte string. All FPC modes will continue to function.
To make this possible a feature called 'subtargets' has been implemented.This can be used for other things than the unicode RTL, but will be used forthe unicode RTL.
The RTL is compiled 'normally' and with subtarget=unicodertl; this will result in 2 separate sets of .o/.ppu files:

The normal CPU-OS directory and a CPU-OS-unicodertl directory.

The first part of the work has been pushed to gitlab in a branch called unicodertl (NOT the svn/unicodertl branch):

- subtarget support is there
- The rtl compiles with make SUB_TARGET=unicodertl with the compiler as it is in that branch.

Needless to say, this is a major change that will need thorough testing. The earlier testing starts, the better.
For those that wish to help in testing:

- Update your git clone
- switch to branch unicodertl.
- in the toplevel FPC directory, do a

make all

- if that went well, next to your fpc.cfg, create a file fpc-unicodertl.cfg  with the following contents:

----
-dUNICODERTL
-Municodestrings
----

- to create a Unicode RTL, in the rtl directory do a make clean all SUB_TARGET=unicodertl PP=path/to/the/new/compiler
- if that worked, you can try then a make install SUB_TARGET=unicodertl
Note that this is NOT ready for production use:

- The packages have not yet been converted (working on this now) and will certainly fail...
- a private testsuite has been run and gives no failures, but the complete compiler testsuite still needs to be examined.
- Dotted names will be created after the unicode transition is deemed complete.

if you do wish to test and spot errors in the RTL or compiler, please file a bugreport.
You can use a tag 'UnicodeRTL' to report bugs for this.

Michael.

Offline

Board footer

Powered by FluxBB