On 03.10.2010 18:43, Willibald Krenn wrote:
Hi!

Here comes my 'official' plan on how I want to implement Delphi-like
Package Support for FPC on Win64. Feel free to comment.



Definitions
~~~~~~~~~~~
<File>.ppl Free-Pascal Package Library
(shared module, Delphi: bpl)
<File>.ppk Free-Pascal Package
(source, Delphi: dpk)
<File>.pcp Free-Pascal Compiled Packge
(header, ppu's, Delphi: dcp)
(skip package collections for now)

-K <File>[ <File>]*
Command line arg to tell fpc to compile
program/dll with runtime package support.

With this argument you want to specify which packages to use? Then you should use a syntax that is more compatible to the other FPC options:

-K<File> [other options] -K<File> [...]

Also you might want to add it as a new -F* option (e.g. -Fp or -FP) instead of -K, because the -F* options are for filenames and paths.


-> M1
~~~~~
Goal: - Compile System unit into a "fpcrtl.ppl"
- Create a simple application that uses fpcrtl.ppl.
-> Perhaps some simple string sorting program.

Idea: Create a TPackageModule class, might be some descendant of
TPpuModule or TModule, that holds the information found in the
ppk. Don't include the ppu files in the ppk (yet).

If you want this TPackageModule or whatever in system.pp (e.g in the RTL, not in the compiler) you should use records, because objpas.pp is not loaded inside system.pp (and thus TObject isn't available).


Change pmodules.proc_package to load all units found in the
packages of the requires section, create idata for the ppl,
create pcp file.

Add command line parameter (-K) so that applications can be
compiled with packages. Change pmodules.proc_program to pre-load
all units of all referenced packages.

-> M2
~~~~~
Goal: - RTTI in ppk
- Basic OOP support in ppk (ClassInfo etc.)
- Include all ppu information in pcp file

To Consider:
Add Name mangling for RTTI (etc.) if not yet existant.

What do you want to mangle here?


Find code in the rtl that needs to be changed (if any).

Threads/Thread Local Storage?

Yes, that will be another difficult topic...


Tests.

-> M3
~~~~~
Goal: - Implement missing functionality
(Weakpackage, CompilerSwitches...)
- Provide ppk files for class library
- add tests
- merge into trunk

As it doesn't seem that you're working in a branch on the FPC repository you might want to send small patches (e.g. your milestones) to the FPC team as they can be discussed and merged more easily than one big patch (and you don't want to repeat your complete work only because a important feature at the beginning wasn't implemented correctly ^^)

Regards,
Sven
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to