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 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...
