mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-13 15:39:29 +02:00
+ RTL part of WinCE patches from Yuri Sidorov
git-svn-id: trunk@572 -
This commit is contained in:
parent
1f8d6aa678
commit
8adc1c9b0c
3
.gitattributes
vendored
3
.gitattributes
vendored
@ -4176,6 +4176,9 @@ rtl/win32/wprt0_10.as -text
|
||||
rtl/win64/Makefile svneol=native#text/plain
|
||||
rtl/win64/Makefile.fpc svneol=native#text/plain
|
||||
rtl/win64/system.pp svneol=native#text/plain
|
||||
rtl/wince/Makefile.fpc svneol=native#text/plain
|
||||
rtl/wince/system.pp svneol=native#text/plain
|
||||
rtl/wince/wprt0.as svneol=native#text/plain
|
||||
rtl/x86_64/int64p.inc svneol=native#text/plain
|
||||
rtl/x86_64/makefile.cpu -text
|
||||
rtl/x86_64/math.inc svneol=native#text/plain
|
||||
|
@ -19,12 +19,14 @@
|
||||
|
||||
procedure fpc_cpuinit;
|
||||
begin
|
||||
{$IFNDEF WINCE}
|
||||
asm
|
||||
rfs r0
|
||||
and r0,r0,#0xffe0ffff
|
||||
orr r0,r0,#0x00020000
|
||||
wfs r0
|
||||
end;
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
{****************************************************************************
|
||||
|
@ -58,20 +58,27 @@ end;
|
||||
|
||||
procedure chdir(const s:string);[IOCHECK];
|
||||
begin
|
||||
{$ifndef WINCE}
|
||||
If (s='') or (InOutRes <> 0) then
|
||||
exit;
|
||||
dirfn(TDirFnType(@SetCurrentDirectory),s);
|
||||
if Inoutres=2 then
|
||||
Inoutres:=3;
|
||||
{$else WINCE}
|
||||
InOutRes:=1;
|
||||
{$endif WINCE}
|
||||
end;
|
||||
|
||||
procedure GetDir (DriveNr: byte; var Dir: ShortString);
|
||||
{$ifndef WINCE}
|
||||
const
|
||||
Drive:array[0..3]of char=(#0,':',#0,#0);
|
||||
{$endif WINCE}
|
||||
var
|
||||
defaultdrive:boolean;
|
||||
DirBuf,SaveBuf:array[0..259] of Char;
|
||||
begin
|
||||
{$ifndef WINCE}
|
||||
defaultdrive:=drivenr=0;
|
||||
if not defaultdrive then
|
||||
begin
|
||||
@ -92,6 +99,9 @@ begin
|
||||
dir:=strpas(DirBuf);
|
||||
if not FileNameCaseSensitive then
|
||||
dir:=upcase(dir);
|
||||
{$else WINCE}
|
||||
Dir:='\';
|
||||
{$endif WINCE}
|
||||
end;
|
||||
|
||||
{
|
||||
|
@ -29,7 +29,11 @@ end;
|
||||
|
||||
function do_isdevice(handle:thandle):boolean;
|
||||
begin
|
||||
{$ifndef WINCE}
|
||||
do_isdevice:=(getfiletype(handle)=2);
|
||||
{$else WINCE}
|
||||
do_isdevice:=False;
|
||||
{$endif WINCE}
|
||||
end;
|
||||
|
||||
|
||||
|
@ -20,11 +20,11 @@
|
||||
|
||||
{ memory functions }
|
||||
function GetProcessHeap : THandle;
|
||||
stdcall;external 'kernel32' name 'GetProcessHeap';
|
||||
stdcall;external KernelDLL name 'GetProcessHeap';
|
||||
function HeapAlloc(hHeap : DWord; dwFlags : DWord; dwBytes : SIZE_T) : pointer;
|
||||
stdcall;external 'kernel32' name 'HeapAlloc';
|
||||
stdcall;external KernelDLL name 'HeapAlloc';
|
||||
function HeapFree(hHeap : THandle; dwFlags : dword; lpMem: pointer) : boolean;
|
||||
stdcall;external 'kernel32' name 'HeapFree';
|
||||
stdcall;external KernelDLL name 'HeapFree';
|
||||
{$IFDEF SYSTEMDEBUG}
|
||||
function WinAPIHeapSize(hHeap : THandle; dwFlags : DWord; ptr : Pointer) : DWord;
|
||||
stdcall;external 'kernel32' name 'HeapSize';
|
||||
|
@ -171,76 +171,84 @@ threadvar
|
||||
|
||||
{ misc. functions }
|
||||
function GetLastError : DWORD;
|
||||
stdcall;external 'kernel32' name 'GetLastError';
|
||||
stdcall;external KernelDLL name 'GetLastError';
|
||||
|
||||
{ time and date functions }
|
||||
function GetTickCount : longint;
|
||||
stdcall;external 'kernel32' name 'GetTickCount';
|
||||
stdcall;external KernelDLL name 'GetTickCount';
|
||||
|
||||
{$ifndef WINCE}
|
||||
{ process functions }
|
||||
procedure ExitProcess(uExitCode : UINT);
|
||||
stdcall;external 'kernel32' name 'ExitProcess';
|
||||
stdcall;external KernelDLL name 'ExitProcess';
|
||||
|
||||
{ Startup }
|
||||
procedure GetStartupInfo(p : pointer);
|
||||
stdcall;external 'kernel32' name 'GetStartupInfoA';
|
||||
stdcall;external KernelDLL name 'GetStartupInfoA';
|
||||
function GetStdHandle(nStdHandle:DWORD):THANDLE;
|
||||
stdcall;external 'kernel32' name 'GetStdHandle';
|
||||
stdcall;external KernelDLL name 'GetStdHandle';
|
||||
{$endif WINCE}
|
||||
|
||||
{ command line/enviroment functions }
|
||||
function GetCommandLine : pchar;
|
||||
stdcall;external 'kernel32' name 'GetCommandLineA';
|
||||
stdcall;external KernelDLL name 'GetCommandLine' + ApiSuffix;
|
||||
|
||||
{$ifndef WINCE}
|
||||
function GetCurrentProcessId:DWORD;
|
||||
stdcall; external 'kernel32' name 'GetCurrentProcessId';
|
||||
stdcall; external KernelDLL name 'GetCurrentProcessId';
|
||||
|
||||
function Win32GetCurrentThreadId:DWORD;
|
||||
stdcall; external 'kernel32' name 'GetCurrentThreadId';
|
||||
stdcall; external KernelDLL name 'GetCurrentThreadId';
|
||||
{$endif WINCE}
|
||||
|
||||
{ module functions }
|
||||
function GetModuleFileName(l1:longint;p:pointer;l2:longint):longint;
|
||||
stdcall;external 'kernel32' name 'GetModuleFileNameA';
|
||||
stdcall;external KernelDLL name 'GetModuleFileName' + ApiSuffix;
|
||||
function GetModuleHandle(p : pointer) : longint;
|
||||
stdcall;external 'kernel32' name 'GetModuleHandleA';
|
||||
stdcall;external KernelDLL name 'GetModuleHandle' + ApiSuffix;
|
||||
function GetCommandFile:pchar;forward;
|
||||
|
||||
{ file functions }
|
||||
function WriteFile(fh:thandle;buf:pointer;len:longint;var loaded:longint;
|
||||
overlap:pointer):longint;
|
||||
stdcall;external 'kernel32' name 'WriteFile';
|
||||
stdcall;external KernelDLL name 'WriteFile';
|
||||
function ReadFile(fh:thandle;buf:pointer;len:longint;var loaded:longint;
|
||||
overlap:pointer):longint;
|
||||
stdcall;external 'kernel32' name 'ReadFile';
|
||||
stdcall;external KernelDLL name 'ReadFile';
|
||||
function CloseHandle(h : thandle) : longint;
|
||||
stdcall;external 'kernel32' name 'CloseHandle';
|
||||
stdcall;external KernelDLL name 'CloseHandle';
|
||||
function DeleteFile(p : pchar) : longint;
|
||||
stdcall;external 'kernel32' name 'DeleteFileA';
|
||||
stdcall;external KernelDLL name 'DeleteFile' + ApiSuffix;
|
||||
function MoveFile(old,_new : pchar) : longint;
|
||||
stdcall;external 'kernel32' name 'MoveFileA';
|
||||
stdcall;external KernelDLL name 'MoveFile' + ApiSuffix;
|
||||
function SetFilePointer(l1,l2 : thandle;l3 : pointer;l4 : longint) : longint;
|
||||
stdcall;external 'kernel32' name 'SetFilePointer';
|
||||
stdcall;external KernelDLL name 'SetFilePointer';
|
||||
function GetFileSize(h:thandle;p:pointer) : longint;
|
||||
stdcall;external 'kernel32' name 'GetFileSize';
|
||||
stdcall;external KernelDLL name 'GetFileSize';
|
||||
function CreateFile(lpFileName:pchar; dwDesiredAccess:DWORD; dwShareMode:DWORD;
|
||||
lpSecurityAttributes:PSECURITYATTRIBUTES; dwCreationDisposition:DWORD;
|
||||
dwFlagsAndAttributes:DWORD; hTemplateFile:DWORD):longint;
|
||||
stdcall;external 'kernel32' name 'CreateFileA';
|
||||
stdcall;external KernelDLL name 'CreateFile' + ApiSuffix;
|
||||
function SetEndOfFile(h : thandle) : longbool;
|
||||
stdcall;external 'kernel32' name 'SetEndOfFile';
|
||||
stdcall;external KernelDLL name 'SetEndOfFile';
|
||||
{$ifndef WINCE}
|
||||
function GetFileType(Handle:thandle):DWord;
|
||||
stdcall;external 'kernel32' name 'GetFileType';
|
||||
stdcall;external KernelDLL name 'GetFileType';
|
||||
{$endif WINCE}
|
||||
function GetFileAttributes(p : pchar) : dword;
|
||||
stdcall;external 'kernel32' name 'GetFileAttributesA';
|
||||
stdcall;external KernelDLL name 'GetFileAttributes' + ApiSuffix;
|
||||
|
||||
{ Directory }
|
||||
function CreateDirectory(name : pointer;sec : pointer) : longbool;
|
||||
stdcall;external 'kernel32' name 'CreateDirectoryA';
|
||||
stdcall;external KernelDLL name 'CreateDirectory' + ApiSuffix;
|
||||
function RemoveDirectory(name:pointer):longbool;
|
||||
stdcall;external 'kernel32' name 'RemoveDirectoryA';
|
||||
stdcall;external KernelDLL name 'RemoveDirectory' + ApiSuffix;
|
||||
{$ifndef WINCE}
|
||||
function SetCurrentDirectory(name : pointer) : longbool;
|
||||
stdcall;external 'kernel32' name 'SetCurrentDirectoryA';
|
||||
stdcall;external KernelDLL name 'SetCurrentDirectory' + ApiSuffix;
|
||||
function GetCurrentDirectory(bufsize : longint;name : pchar) : longbool;
|
||||
stdcall;external 'kernel32' name 'GetCurrentDirectoryA';
|
||||
stdcall;external KernelDLL name 'GetCurrentDirectory' + ApiSuffix;
|
||||
{$endif WINCE}
|
||||
|
||||
Procedure Errno2InOutRes;
|
||||
Begin
|
||||
|
@ -37,3 +37,12 @@ type
|
||||
LockSemaphore : THandle;
|
||||
SpinCount : ULONG_PTR;
|
||||
end;
|
||||
|
||||
const
|
||||
{$ifdef WINCE}
|
||||
KernelDLL = 'coredll';
|
||||
ApiSuffix = 'W';
|
||||
{$else WINCE}
|
||||
KernelDLL = 'kernel32';
|
||||
ApiSuffix = 'A';
|
||||
{$endif WINCE}
|
||||
|
@ -20,38 +20,41 @@
|
||||
*****************************************************************************}
|
||||
|
||||
const
|
||||
{ GlobalAlloc, GlobalFlags }
|
||||
GMEM_FIXED = 0;
|
||||
GMEM_ZEROINIT = 64;
|
||||
{ LocalAlloc flags }
|
||||
LMEM_FIXED = 0;
|
||||
LMEM_ZEROINIT = 64;
|
||||
|
||||
{$ifndef WINCE}
|
||||
function TlsAlloc : DWord;
|
||||
stdcall;external 'kernel32' name 'TlsAlloc';
|
||||
function TlsGetValue(dwTlsIndex : DWord) : pointer;
|
||||
stdcall;external 'kernel32' name 'TlsGetValue';
|
||||
function TlsSetValue(dwTlsIndex : DWord;lpTlsValue : pointer) : LongBool;
|
||||
stdcall;external 'kernel32' name 'TlsSetValue';
|
||||
stdcall;external KernelDLL name 'TlsAlloc';
|
||||
function TlsFree(dwTlsIndex : DWord) : LongBool;
|
||||
stdcall;external 'kernel32' name 'TlsFree';
|
||||
stdcall;external KernelDLL name 'TlsFree';
|
||||
{$endif WINCE}
|
||||
function TlsGetValue(dwTlsIndex : DWord) : pointer;
|
||||
stdcall;external KernelDLL name 'TlsGetValue';
|
||||
function TlsSetValue(dwTlsIndex : DWord;lpTlsValue : pointer) : LongBool;
|
||||
stdcall;external KernelDLL name 'TlsSetValue';
|
||||
function CreateThread(lpThreadAttributes : pointer;
|
||||
dwStackSize : SIZE_T; lpStartAddress : pointer;lpParameter : pointer;
|
||||
dwCreationFlags : DWord;var lpThreadId : DWord) : THandle;
|
||||
stdcall;external 'kernel32' name 'CreateThread';
|
||||
stdcall;external KernelDLL name 'CreateThread';
|
||||
procedure ExitThread(dwExitCode : DWord);
|
||||
stdcall;external 'kernel32' name 'ExitThread';
|
||||
function GlobalAlloc(uFlags:DWord; dwBytes:DWORD):Pointer;
|
||||
stdcall;external 'kernel32' name 'GlobalAlloc';
|
||||
function GlobalFree(hMem : Pointer):Pointer; stdcall;external 'kernel32' name 'GlobalFree';
|
||||
procedure Sleep(dwMilliseconds: DWord); stdcall;external 'kernel32' name 'Sleep';
|
||||
function WinSuspendThread (threadHandle : THandle) : dword; stdcall;external 'kernel32' name 'SuspendThread';
|
||||
function WinResumeThread (threadHandle : THandle) : dword; stdcall;external 'kernel32' name 'ResumeThread';
|
||||
function TerminateThread (threadHandle : THandle; var exitCode : dword) : boolean; stdcall;external 'kernel32' name 'TerminateThread';
|
||||
function WaitForSingleObject (hHandle : THandle;Milliseconds: dword): dword; stdcall;external 'kernel32' name 'WaitForSingleObject';
|
||||
function WinThreadSetPriority (threadHandle : THandle; Prio: longint): boolean; stdcall;external 'kernel32' name 'SetThreadPriority';
|
||||
function WinThreadGetPriority (threadHandle : THandle): LongInt; stdcall;external 'kernel32' name 'GetThreadPriority';
|
||||
function WinGetCurrentThreadId : dword; stdcall;external 'kernel32' name 'GetCurrentThread';
|
||||
function CreateEvent(lpEventAttributes:pointer;bManualReset:longbool;bInitialState:longbool;lpName:pchar): THandle; stdcall; external 'kernel32' name 'CreateEventA';
|
||||
function ResetEvent(hEvent:THandle):LONGBOOL; stdcall; external 'kernel32' name 'ResetEvent';
|
||||
function SetEvent(hEvent:THandle):LONGBOOL; stdcall; external 'kernel32' name 'SetEvent';
|
||||
stdcall;external KernelDLL name 'ExitThread';
|
||||
function LocalAlloc(uFlags:DWord; dwBytes:DWORD):Pointer;
|
||||
stdcall;external KernelDLL name 'LocalAlloc';
|
||||
function LocalFree(hMem : Pointer):Pointer; stdcall;external KernelDLL name 'LocalFree';
|
||||
procedure Sleep(dwMilliseconds: DWord); stdcall;external KernelDLL name 'Sleep';
|
||||
function WinSuspendThread (threadHandle : THandle) : dword; stdcall;external KernelDLL name 'SuspendThread';
|
||||
function WinResumeThread (threadHandle : THandle) : dword; stdcall;external KernelDLL name 'ResumeThread';
|
||||
function TerminateThread (threadHandle : THandle; var exitCode : dword) : boolean; stdcall;external KernelDLL name 'TerminateThread';
|
||||
function WaitForSingleObject (hHandle : THandle;Milliseconds: dword): dword; stdcall;external KernelDLL name 'WaitForSingleObject';
|
||||
function WinThreadSetPriority (threadHandle : THandle; Prio: longint): boolean; stdcall;external KernelDLL name 'SetThreadPriority';
|
||||
function WinThreadGetPriority (threadHandle : THandle): LongInt; stdcall;external KernelDLL name 'GetThreadPriority';
|
||||
function CreateEvent(lpEventAttributes:pointer;bManualReset:longbool;bInitialState:longbool;lpName:pchar): THandle; stdcall; external KernelDLL name 'CreateEvent' + ApiSuffix;
|
||||
{$ifndef WINCE}
|
||||
function ResetEvent(hEvent:THandle):LONGBOOL; stdcall; external KernelDLL name 'ResetEvent';
|
||||
function SetEvent(hEvent:THandle):LONGBOOL; stdcall; external KernelDLL name 'SetEvent';
|
||||
{$endif WINCE}
|
||||
|
||||
CONST
|
||||
WAIT_OBJECT_0 = 0;
|
||||
@ -94,14 +97,14 @@ CONST
|
||||
{ exceptions which use threadvars but }
|
||||
{ these aren't allocated yet ... }
|
||||
{ allocate room on the heap for the thread vars }
|
||||
dataindex:=pointer(GlobalAlloc(GMEM_FIXED or GMEM_ZEROINIT,threadvarblocksize));
|
||||
dataindex:=pointer(LocalAlloc(LMEM_FIXED or LMEM_ZEROINIT,threadvarblocksize));
|
||||
TlsSetValue(tlskey,dataindex);
|
||||
end;
|
||||
|
||||
|
||||
procedure SysReleaseThreadVars;
|
||||
begin
|
||||
GlobalFree(TlsGetValue(tlskey));
|
||||
LocalFree(TlsGetValue(tlskey));
|
||||
end;
|
||||
|
||||
|
||||
@ -244,16 +247,16 @@ CONST
|
||||
*****************************************************************************}
|
||||
|
||||
procedure WinInitCriticalSection(var cs : TRTLCriticalSection);
|
||||
stdcall;external 'kernel32' name 'InitializeCriticalSection';
|
||||
stdcall;external KernelDLL name 'InitializeCriticalSection';
|
||||
|
||||
procedure WinDoneCriticalSection(var cs : TRTLCriticalSection);
|
||||
stdcall;external 'kernel32' name 'DeleteCriticalSection';
|
||||
stdcall;external KernelDLL name 'DeleteCriticalSection';
|
||||
|
||||
procedure WinEnterCriticalSection(var cs : TRTLCriticalSection);
|
||||
stdcall;external 'kernel32' name 'EnterCriticalSection';
|
||||
stdcall;external KernelDLL name 'EnterCriticalSection';
|
||||
|
||||
procedure WinLeaveCriticalSection(var cs : TRTLCriticalSection);
|
||||
stdcall;external 'kernel32' name 'LeaveCriticalSection';
|
||||
stdcall;external KernelDLL name 'LeaveCriticalSection';
|
||||
|
||||
procedure SySInitCriticalSection(var cs);
|
||||
begin
|
||||
|
241
rtl/wince/Makefile.fpc
Normal file
241
rtl/wince/Makefile.fpc
Normal file
@ -0,0 +1,241 @@
|
||||
#
|
||||
# Makefile.fpc for Free Pascal WinCE RTL
|
||||
#
|
||||
|
||||
[package]
|
||||
main=rtl
|
||||
|
||||
[target]
|
||||
loaders= wprt0 #wdllprt0 gprt0 wcygprt0
|
||||
units=$(SYSTEMUNIT) objpas # ctypes objpas macpas strings \
|
||||
# lineinfo heaptrc matrix \
|
||||
# windows winsock initc cmem dynlibs signals \
|
||||
# dos crt objects graph messages \
|
||||
# rtlconsts sysconst sysutils math types \
|
||||
# strutils convutils dateutils varutils variants typinfo classes \
|
||||
# cpu mmx charset ucomplex getopts \
|
||||
# wincrt winmouse winevent sockets printer \
|
||||
# video mouse keyboard \
|
||||
# winsysut
|
||||
|
||||
rsts=math varutils typinfo variants classes dateutils sysconst
|
||||
|
||||
[require]
|
||||
nortl=y
|
||||
|
||||
[install]
|
||||
fpcpackage=y
|
||||
|
||||
[default]
|
||||
fpcdir=../..
|
||||
target=wince
|
||||
|
||||
[compiler]
|
||||
includedir=$(INC) $(PROCINC) $(RTL)/win
|
||||
sourcedir=$(INC) $(PROCINC)
|
||||
|
||||
|
||||
[prerules]
|
||||
RTL=..
|
||||
INC=$(RTL)/inc
|
||||
PROCINC=$(RTL)/$(CPU_TARGET)
|
||||
#WININC=wininc
|
||||
|
||||
UNITPREFIX=rtl
|
||||
|
||||
SYSTEMUNIT=system
|
||||
PRT0=wprt0
|
||||
|
||||
# Use new feature from 1.0.5 version
|
||||
# that generates release PPU files
|
||||
# which will not be recompiled
|
||||
ifdef RELEASE
|
||||
override FPCOPT+=-Ur
|
||||
endif
|
||||
|
||||
# Paths
|
||||
OBJPASDIR=$(RTL)/objpas
|
||||
GRAPHDIR=$(INC)/graph
|
||||
|
||||
# Files used by windows.pp
|
||||
# include $(WININC)/makefile.inc
|
||||
|
||||
#WINDOWS_SOURCE_FILES=$(addprefix $(WININC)/,$(addsuffix .inc,$(WINDOWS_FILES)))
|
||||
|
||||
|
||||
[rules]
|
||||
SYSTEMPPU=$(addsuffix $(PPUEXT),$(SYSTEMUNIT))
|
||||
|
||||
# Get the system independent include file names.
|
||||
# This will set the following variables :
|
||||
# SYSINCNAMES
|
||||
include $(INC)/makefile.inc
|
||||
SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
|
||||
|
||||
# Get the processor dependent include file names.
|
||||
# This will set the following variables :
|
||||
# CPUINCNAMES
|
||||
include $(PROCINC)/makefile.cpu
|
||||
SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
|
||||
|
||||
# Put system unit dependencies together.
|
||||
SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
|
||||
|
||||
|
||||
#
|
||||
# Loaders
|
||||
#
|
||||
|
||||
wprt0$(OEXT) : $(PRT0).as
|
||||
$(AS) -o $(UNITTARGETDIRPREFIX)wprt0$(OEXT) $(PRT0).as
|
||||
|
||||
gprt0$(OEXT) : gprt0.as
|
||||
|
||||
wdllprt0$(OEXT) : wdllprt0.as
|
||||
|
||||
wcygprt0$(OEXT) : wcygprt0.as
|
||||
|
||||
#
|
||||
# System Units (System, Objpas, Strings)
|
||||
#
|
||||
|
||||
$(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
|
||||
$(COMPILER) -Us -Sg $(SYSTEMUNIT).pp #-Fi..\win
|
||||
|
||||
objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
|
||||
$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
|
||||
|
||||
strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
|
||||
$(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
|
||||
$(SYSTEMUNIT)$(PPUEXT)
|
||||
|
||||
#
|
||||
# System Dependent Units
|
||||
#
|
||||
|
||||
#windows$(PPUEXT) : windows.pp $(WINDOWS_SOURCE_FILES) $(SYSTEMUNIT)$(PPUEXT)
|
||||
# $(COMPILER) -I$(WININC) windows.pp
|
||||
|
||||
#messages$(PPUEXT): messages.pp $(WININC)/messages.inc $(SYSTEMUNIT)$(PPUEXT)
|
||||
# $(COMPILER) -I$(WININC) messages.pp
|
||||
|
||||
#opengl32$(PPUEXT) : opengl32.pp windows$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
|
||||
|
||||
#winsock$(PPUEXT) : winsock.pp windows$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
|
||||
|
||||
#sockets$(PPUEXT) : sockets.pp windows$(PPUEXT) winsock$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
|
||||
# $(INC)/sockets.inc $(INC)/socketsh.inc
|
||||
|
||||
#initc$(PPUEXT) : initc.pp $(SYSTEMUNIT)$(PPUEXT)
|
||||
|
||||
#wincrt$(PPUEXT) : wincrt.pp $(SYSTEMUNIT)$(PPUEXT) windows$(PPUEXT) graph$(PPUEXT)
|
||||
|
||||
#winmouse$(PPUEXT) : winmouse.pp $(SYSTEMUNIT)$(PPUEXT) windows$(PPUEXT) graph$(PPUEXT)
|
||||
|
||||
#dynlibs$(PPUEXT) : $(INC)/dynlibs.pp windows$(PPUEXT)
|
||||
|
||||
#
|
||||
# TP7 Compatible RTL Units
|
||||
#
|
||||
|
||||
#dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
|
||||
|
||||
#crt$(PPUEXT) : crt.pp $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) dos$(PPUEXT) windows$(PPUEXT)
|
||||
|
||||
#objects$(PPUEXT) : $(INC)/objects.pp $(SYSTEMUNIT)$(PPUEXT)
|
||||
|
||||
#
|
||||
# Graph
|
||||
#
|
||||
|
||||
#include $(GRAPHDIR)/makefile.inc
|
||||
#GRAPHINCDEPS=$(addprefix $(GRAPHDIR)/,$(GRAPHINCNAMES))
|
||||
|
||||
#graph$(PPUEXT) : graph.pp strings$(PPUEXT) windows$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT) \
|
||||
# $(GRAPHINCDEPS)
|
||||
# $(COMPILER) -I$(GRAPHDIR) graph.pp
|
||||
|
||||
|
||||
#
|
||||
# Delphi Compatible Units
|
||||
#
|
||||
|
||||
#sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
|
||||
# objpas$(PPUEXT) dos$(PPUEXT) windows$(PPUEXT) sysconst$(PPUEXT)
|
||||
# $(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
|
||||
|
||||
#classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
|
||||
# sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) sysconst$(PPUEXT)
|
||||
# $(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
|
||||
|
||||
#winsysut$(PPUEXT) : winsysut.pp sysutils$(PPUEXT)
|
||||
# $(COMPILER) winsysut.pp
|
||||
|
||||
#typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
|
||||
# $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp
|
||||
|
||||
#math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
|
||||
# $(COMPILER) $(OBJPASDIR)/math.pp
|
||||
|
||||
#varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
|
||||
# $(OBJPASDIR)/varutilh.inc varutils.pp sysutils$(PPUEXT)
|
||||
# $(COMPILER) -Fi$(OBJPASDIR) varutils.pp
|
||||
|
||||
#variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) sysutils$(PPUEXT) sysconst$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT)
|
||||
# $(COMPILER) -Fi$(INC) $(INC)/variants.pp
|
||||
|
||||
#types$(PPUEXT) : $(OBJPASDIR)/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
|
||||
# $(COMPILER) $(OBJPASDIR)/types.pp
|
||||
|
||||
#rtlconsts$(PPUEXT) : objpas$(PPUEXT) $(OBJPASDIR)/rtlconsts.pp
|
||||
# $(COMPILER) $(OBJPASDIR)/rtlconsts.pp
|
||||
|
||||
#sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
|
||||
# $(COMPILER) $(OBJPASDIR)/sysconst.pp
|
||||
|
||||
#dateutils$(PPUEXT) : $(OBJPASDIR)/dateutils.pp
|
||||
# $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutils.pp
|
||||
|
||||
#convutils$(PPUEXT) : $(OBJPASDIR)/convutils.pp
|
||||
# $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/convutils.pp
|
||||
|
||||
#strutils$(PPUEXT) : $(OBJPASDIR)/strutils.pp
|
||||
# $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/strutils.pp
|
||||
|
||||
#
|
||||
# Mac Pascal Model
|
||||
#
|
||||
|
||||
#macpas$(PPUEXT) : $(INC)/macpas.pp $(SYSTEMUNIT)$(PPUEXT)
|
||||
# $(COMPILER) $(INC)/macpas.pp $(REDIR)
|
||||
|
||||
#
|
||||
# Other system-independent RTL Units
|
||||
#
|
||||
|
||||
cpu$(PPUEXT) : $(PROCINC)/cpu.pp $(SYSTEMUNIT)$(PPUEXT)
|
||||
|
||||
mmx$(PPUEXT) : $(PROCINC)/mmx.pp cpu$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
|
||||
|
||||
getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
|
||||
|
||||
heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMUNIT)$(PPUEXT)
|
||||
$(COMPILER) -Sg $(INC)/heaptrc.pp
|
||||
|
||||
lineinfo$(PPUEXT) : $(INC)/lineinfo.pp $(SYSTEMUNIT)$(PPUEXT)
|
||||
|
||||
charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)
|
||||
|
||||
cmem$(PPUEXT) : $(INC)/cmem.pp $(SYSTEMUNIT)$(PPUEXT)
|
||||
|
||||
ucomplex$(PPUEXT) : $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
|
||||
|
||||
#
|
||||
# Other system-dependent RTL Units
|
||||
#
|
||||
|
||||
#callspec$(PPUEXT) : $(INC)/callspec.pp $(SYSTEMUNIT)$(PPUEXT)
|
||||
|
||||
#ctypes$(PPUEXT) : $(INC)/ctypes.pp $(SYSTEMUNIT)$(PPUEXT)
|
||||
|
||||
#variants$(PPUEXT) : $(INC)/variants.pp varutils$(PPUEXT) typinfo$(PPUEXT)
|
1126
rtl/wince/system.pp
Normal file
1126
rtl/wince/system.pp
Normal file
File diff suppressed because it is too large
Load Diff
67
rtl/wince/wprt0.as
Normal file
67
rtl/wince/wprt0.as
Normal file
@ -0,0 +1,67 @@
|
||||
/*
|
||||
Startup code for WinCE port of Free Pascal
|
||||
Written by Yury Sidorov 2005
|
||||
*/
|
||||
|
||||
.section .text
|
||||
.balign 4
|
||||
.globl mainCRTStartup
|
||||
mainCRTStartup:
|
||||
.globl _mainCRTStartup
|
||||
_mainCRTStartup:
|
||||
mov r0,#1
|
||||
b do_start
|
||||
|
||||
.globl WinMainCRTStartup
|
||||
WinMainCRTStartup:
|
||||
.globl _WinMainCRTStartup
|
||||
_WinMainCRTStartup:
|
||||
mov r0,#0
|
||||
do_start:
|
||||
ldr r1, _PISCONSOLE
|
||||
strb r0,[r1]
|
||||
bl _FPC_EXE_Entry
|
||||
|
||||
.globl asm_exit
|
||||
asm_exit:
|
||||
eor r0,r0,r0
|
||||
bl exitthread
|
||||
|
||||
_PISCONSOLE:
|
||||
.long U_SYSTEM_ISCONSOLE
|
||||
|
||||
.globl exitthread
|
||||
exitthread:
|
||||
ldr ip,.L100
|
||||
ldr pc,[ip]
|
||||
.L100:
|
||||
.long .L10
|
||||
|
||||
.section .idata$2
|
||||
.rva .L7
|
||||
.long 0,0
|
||||
.rva .L6
|
||||
.rva .L8
|
||||
|
||||
.section .idata$4
|
||||
.L7:
|
||||
.rva .L9
|
||||
.long 0
|
||||
|
||||
.section .idata$5
|
||||
.L8:
|
||||
|
||||
.section .idata$5
|
||||
.L10:
|
||||
.rva .L9
|
||||
.long 0
|
||||
|
||||
.section .idata$6
|
||||
.L9:
|
||||
.short 0
|
||||
.ascii "ExitThread\000"
|
||||
.balign 2,0
|
||||
|
||||
.section .idata$7
|
||||
.L6:
|
||||
.ascii "coredll.dll\000"
|
Loading…
Reference in New Issue
Block a user