Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 780 → Rev 790

/programs/develop/fp/rtl/Makefile.fpc
0,0 → 1,67
#
# Makefile.fpc for Free Pascal KolibriOS RTL
#
 
[package]
main=rtl
 
[target]
loaders=$(LOADERS)
units=system objpas buildrtl
#implicitunits=sysinitpas sysinitcyg sysinitgprof \
# ctypes strings \
# lineinfo lnfodwrf heaptrc matrix \
# windows winsock winsock2 initc cmem dynlibs signals \
# dos crt objects messages \
# rtlconsts sysconst sysutils math types \
# strutils dateutils varutils variants typinfo fgl classes \
# convutils stdconvs cpu mmx charset ucomplex getopts \
# winevent sockets printer \
# video mouse keyboard fmtbcd \
# winsysut sharemem
 
#rsts=math varutils typinfo variants classes dateutils sysconst
 
[require]
nortl=y
 
[install]
fpcpackage=y
 
[default]
target=win32
cpu=i386
 
[compiler]
unittargetdir=../units/rtl
includedir=$(INC) $(PROCINC)
sourcedir=$(INC) $(PROCINC)
 
[prerules]
RTL=$(FPCDIR)/rtl
INC=$(RTL)/inc
PROCINC=$(RTL)/$(CPU_TARGET)
OBJPASDIR=$(RTL)/objpas
 
[rules]
.NOTPARALLEL:
SYSTEMPPU=$(addsuffix $(PPUEXT),system)
 
include $(INC)/makefile.inc
SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
 
include $(PROCINC)/makefile.cpu
SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
 
SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
 
# Unit specific rules
 
system$(PPUEXT): system.pp $(SYSDEPS)
$(COMPILER) -Us -Sg system.pp
 
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc system$(PPUEXT)
$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
 
buildrtl$(PPUEXT): buildrtl.pp system$(PPUEXT) objpas$(PPUEXT)
$(COMPILER) -Fi$(OBJPASDIR)/sysutils -Fi$(OBJPASDIR)/classes -Fu$(PROCINC) -I$(OBJPASDIR) -I$(INC) -Fu$(INC) -Fu$(OBJPASDIR) buildrtl
/programs/develop/fp/rtl/build.bat
1,21 → 1,3
@echo off
 
set FPRTL={FreePascal RTL source code, example c:\fp\src\rtl}
set INCS=-Fi%FPRTL%\inc;%FPRTL%\i386;%FPRTL%\objpas;%FPRTL%\objpas\sysutils;%FPRTL%\objpas\classes
set UNTS=-Fu%FPRTL%\inc;%FPRTL%\i386;%FPRTL%\objpas
set BUILDPATH=..\units
set FPCARGS=-n -Twin32 -Sge5 -O3pPENTIUM3 -CfSSE -di386 -FU%BUILDPATH% %INCS% %UNTS%
 
fpc system.pp -Us %FPCARGS%
if errorlevel 1 goto error
 
fpc %FPRTL%\objpas\objpas.pp %FPCARGS%
if errorlevel 1 goto error
 
fpc buildrtl.pp %FPCARGS%
if errorlevel 0 goto end
 
:error
echo An error occured while building RTL
 
:end
fpcmake -Twin32
make
/programs/develop/fp/rtl/build.sh
0,0 → 1,3
#!/bin/sh
fpcmake -Twin32
make
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/programs/develop/fp/rtl/sysfile.inc
152,5 → 152,8
end;
if InOutRes <> 0 then
begin
FreeMem(KosFile);
FileRec(f).Handle := DWord(-1);
end;
end;
/programs/develop/fp/rtl/system.pp
1,4 → 1,4
{cp866}
{utf8}
unit System;
 
{$i _defines.inc}
56,16 → 56,16
begin
while Args^ <> #0 do
begin
{à®¯ãáâ¨âì «¨¤¨àãî騥 ¯à®¡¥«ë}
{Пропустить лидирующие пробелы}
while Args^ in [#1..#32] do Inc(Args);
if Args^ = #0 then Break;
 
{‡ ¯®¬­¨âì 㪠§ â¥«ì ­  ¯ à ¬¥âà}
{Запомнить указатель на параметр}
SetLength(Ptrs, Argc);
Ptrs[Argc - 1] := Args;
Inc(Argc);
 
{à®¯ãáâ¨âì ⥪ã騩 ¯ à ¬¥âà}
{Пропустить текущий параметр}
InQuotes := False;
while (Args^ <> #0) and (not (Args^ in [#1..#32]) or InQuotes) do
begin
73,7 → 73,7
Inc(Args);
end;
 
{“áâ ­®¢¨âì ®ª®­ç ­¨¥ ¯ à ¬¥âà }
{Установить окончание параметра}
if Args^ in [#1..#32] then
begin
Args^ := #0;
81,12 → 81,12
end;
end;
end;
Argv := GetMem(Argc * SizeOf(PChar)); {XXX: ¯ ¬ïâì ­¥ ®á¢®¡®¦¤ ¥âáï}
Argv := GetMem(Argc * SizeOf(PChar)); {XXX: память не освобождается}
Argv[0] := PKosHeader(0)^.path;
for I := 1 to Argc - 1 do
begin
Argv[I] := Ptrs[I - 1];
{ˆáª«îç¨âì ª ¢ë窨 ¨§ áâப¨}
{Исключить кавычки из строки}
Args := Argv[I];
L := 0;
while Args^ <> #0 do begin Inc(Args); Inc(L); end;
118,7 → 118,7
 
procedure Randomize;
begin
randseed := 0; {GetTickCount()}
randseed := kos_timecounter();
end;
 
const
136,7 → 136,6
end;
 
{$i kos_stdio.inc}
{-$i kos_term.inc}
 
procedure SysInitStdIO;
begin
158,15 → 157,15
begin
if ExitCode <> 0 then
begin
{XXX: ®¡ï§ â¥«ì­®¥ ãá«®¢¨¥ ­  ®¤­®¯®â®ç­ë© Konsole}
{XXX: обязательное условие на однопоточный Konsole}
Write(StdErr, '[Error #', ExitCode,', press any key]');
{®¦¨¤ âì ­ ¦ â¨ï ª« ¢¨è¨}
{ожидать нажатия клавиши}
Konsole.KeyPressed;
while Konsole.KeyPressed = 0 do kos_delay(2);
{TODO: ¨á¯à ¢¨âì ª®áïª ¯à¨ ¯¥à¥à¨á®¢ª¥ Konsole}
{íâ® ­¥¢®§¬®¦­®, â ª ª ª ªãç  ®á¢®¡®¦¤ ¥âáï ¥é¥ ¤® ¢ë§®¢  í⮩ ¯à®æ¥¤ãàë}
{¬®¦­® ­ ¯¨á âì ᢮© ¤¨á¯¥âç¥à ¯ ¬ïâ¨, ­® íâ® á«®¦­®}
{  ¥á«¨ ¢ Konsole ¨á¯®«ì§®¢ âì ¢ë¤¥«¥­¨¥ ¯ ¬ï⨠­ ¯àï¬ãî ç¥à¥§ KosAPI?!}
{TODO: исправить косяк при перерисовке Konsole}
{это невозможно, так как куча освобождается еще до вызова этой процедуры}
{можно написать свой диспетчер памяти, но это сложно}
{а если в Konsole использовать выделение памяти напрямую через KosAPI?!}
end;
Close(StdErr);
Close(StdOut);
/programs/develop/fp/rtl/sysutils.pp
1,12 → 1,13
{utf8}
unit sysutils;
 
{$i _defines.inc}
{$mode objfpc}
{$h+}
 
interface
 
{$mode objfpc}
{ force ansistrings }
{$h+}
 
{$DEFINE HAS_SLEEP}
{-$DEFINE HAS_OSERROR}
150,7 → 151,7
fsFromCurrent: Position := FilePos(FileRecordByHandle(Handle)^.F) + FOffset;
fsFromEnd: Position := FileSize(FileRecordByHandle(Handle)^.F) + FOffset;
end;
{TODO: ¯à®¢¥àª  ᮮ⢥âá⢨ï [0..filesize]}
{TODO: проверка соответствия [0..filesize]}
Seek(FileRecordByHandle(Handle)^.F, Position);
Result := Position;
end;
175,16 → 176,17
var
F: File;
begin
{$i-}
Assign(F, FileName);
try
Reset(F);
FileSize(F);
if IOResult = 0 then
begin
Result := True;
except
Close(F);
end else
Result := False;
{$i+}
end;
Close(F);
end;
 
function DirectoryExists(const Directory: String): Boolean;
begin