[fpc-devel]to FPC/2 development team
KO Myung-Hun
komh at chollian.net
Fri Oct 20 17:05:48 CEST 2000
Hi/2 all.
I downloaded FPC/2 1.0.2(actually 1.0.3, dated 10/17). I try to
recompile RTL source as before. I could success. Thanks.
But in report of FPC/2 with option -viuf, I found problem. That is like
past problems. Below is the part of report of FPC/2 while making.
-------
ppc386.exe -Fi../inc -Fi../i386 -FE. -viut -di386 -I../objpas
../objpas/objpas.pp
Compiler: ppc386.exe
Target OS: OS/2 via EMX
...
load from OBJPAS (interface) unit SYSOS2
Unitsearch: sysos2.ppo
PPU Loading sysos2.ppo
PPU Name: sysos2.ppo
PPU Time: 2000/10/20 22:41:06
PPU Flags: 145
PPU Crc: 1060779653
PPU Crc: 1798719114 (intfc)
PPU Check file sysos2.oo2 time Not Found
PPU Check file sysos2.so2 time 2000/10/20 22:41:06
Recompiling unit, obj is older than asm
Unitsearch: sysos2.ppo
PPU Loading sysos2.ppo
PPU Name: sysos2.ppo
PPU Time: 2000/10/20 22:41:06
PPU Flags: 145
PPU Crc: 1060779653
PPU Crc: 1798719114 (intfc)
PPU Check file sysos2.oo2 time Not Found
PPU Check file sysos2.so2 time 2000/10/20 22:41:06
Recompiling unit, obj is older than asm
Unitsearch: sysos2.pas
Compiling sysos2.pas
...
Writing .\sysos2.ppo
Assembling sysos2
Parsing interface of unit OBJPAS
Writing .\objpas.ppo
Parsing implementation of OBJPAS
Parsing implementation of OBJPAS
Writing .\objpas.ppo
Closing script .\ppas.cmd
12740 Lines compiled, 5.7 sec
-------
Above msg, I found that FPC/2 do not object files. So, FPC/2 try to
compile three times at least. Although units were created, any object
file are not created. So whenever making, every units which need .oo2
file are recompiled. Therefore overall compiling time of FPC/2 is
slower. Also if I run 'make install' and compile other apps, RTL do not
operate. FPC/2 report that it could not found units( i.e sysos2 ).
Fortunatelly, because there are .so2 files in RTL directory, after
assembling every .so2, and copying assembled files to the UNIT
directory, I could compile apps hardly.
Why FPC/2 do not created .oo2 files ?
And I suggest about DosCalls.pas.
In DosCalls.PAS of 1.00 and 1.0.2, prototype of DosGetInfoBlocks is
changed to pointer type, and remark variant type. But FPC supports
function overloading. So It is regardless that we would enable both
prototypes.
Therefore, unremark DosGetInfoBlocks of variant type, and adding
'external' implementation part like below.
--------
{OS/2 keeps information about the current process and the current thread
is the datastructures Tprocessinfoblock and Tthreadinfoblock. All data
can both be read and be changed. Use DosGetInfoBlocks to get their
address. The service cannot fail, so it is defined as procedure.
The second version of the call might be useful if you only want address
of one of those datastructures, since you can supply nil for the other
parameter then.}
(* FPC supports function overloading. So enabled both prototypes. *)
procedure DosGetInfoBlocks(var ATIB:PThreadInfoBlock;
var APIB:PProcessInfoBlock); cdecl;
procedure DosGetInfoBlocks(PATIB:PPThreadInfoBlock;
PAPIB:PPProcessInfoBlock); cdecl;
...
procedure DosGetInfoBlocks(var ATIB:PThreadInfoBlock;
var APIB:PProcessInfoBlock); cdecl;
external 'DOSCALLS' index 312;
procedure DosGetInfoBlocks(PATIB:PPThreadInfoBlock;
PAPIB:PPProcessInfoBlock); cdecl;
external 'DOSCALLS' index 312;
-------
for better FPC/2 !!!
from KO Myung-Hun...
More information about the fpc-devel
mailing list