mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-07-22 23:56:15 +02:00
* made commandParser more compatible between clib and libc
This commit is contained in:
parent
075c0ce582
commit
e8889a1ef5
@ -1,42 +1,22 @@
|
||||
News
|
||||
====
|
||||
|
||||
2004/08/01 armin:
|
||||
- lot of fixes, compiler can compile itself on a netware server
|
||||
2003/02/16 armin:
|
||||
- added nwconio, nwthreads, nwsnut
|
||||
2003/02/15 armin:
|
||||
- changes for new threadvars
|
||||
2002/02/27 armin:
|
||||
- changes for current fpc 1.1
|
||||
2001/04/16 armin:
|
||||
- implemented CRT and SYSUTILS
|
||||
- nwimp/convertimp to convert .imp files to unix
|
||||
2001/05/26 armin:
|
||||
- successfuly compiled binutils for win32 under linux. Patched nlmconv
|
||||
for win32 available. This makes it possible to use FPC to create NLM's
|
||||
unter win32.
|
||||
|
||||
|
||||
|
||||
General
|
||||
=======
|
||||
|
||||
Currently generating NetWare-NLM's only work under Linux and win32. (may be under bsd also)
|
||||
For Win32 you need a win32 compiled binutils with netware target enabled. Because nlmconv
|
||||
only works with elf objects, elf support in binutils is also needed.
|
||||
Currently generating NetWare-NLM's only work under Linux and win32. (may work under other
|
||||
unix versions also but this is not tested yet)
|
||||
|
||||
|
||||
Binutils with netware-support needed
|
||||
====================================
|
||||
|
||||
You need a version of binutils compiled with netware-support. (nlmconv has to be present)
|
||||
You need a version of binutils compiled with netware-support. As of FreePascal 1.9.5 Nov 2004
|
||||
binutils needs to be named i386-netware-* (i.e. i386-netware-ld, i386-netware-nlmconv).
|
||||
Unfortunately in the Linux distibutions this component of the binutils is not included
|
||||
so you have to compile it. So download the latest stable binutils package from your
|
||||
favourite GNU mirror, decompress it ('tar xfz binutils-x.yy.z.tar.gz' on unices
|
||||
with GNU tar), change to the binutils-x.yy.z directory and configure:
|
||||
|
||||
./configure --prefix=/usr --enable-shared --enable-targets=i386-netware,i386-linux
|
||||
./configure --prefix=/usr --enable-shared --enable-target=i386-netware
|
||||
|
||||
I used the prefix /usr because thats the default location on redhat (thats what I'm using)
|
||||
|
||||
@ -46,29 +26,38 @@
|
||||
make install
|
||||
|
||||
to build and install binutils. To check that netware is supported by the version of binutils
|
||||
installed, use ld --version. The emulation 'i386nw' must be present. Also check that nlmconv
|
||||
is present and can be started without specifying the complete path of nlmconv.
|
||||
installed, use i386-netware-ld --version. The emulation 'i386nw' must be present. Also check that
|
||||
i386-netware-nlmconv
|
||||
is present and can be started without specifying the complete path of i386-netware-nlmconv.
|
||||
|
||||
You can find more information and a binary version of binutils with netware-support for
|
||||
linux on:
|
||||
http://home.sch.bme.hu/~keresztg/novell/howto/NLM-Linux-HOWTO.html.
|
||||
|
||||
Binutils-2.11 for win32 and RedHat 7.2 with netware support and a patched nlmconv
|
||||
that supports "copyright" are available from:
|
||||
http://home.arcor.de/armin.diehl/fpcnw
|
||||
Binutils for win32 and Fedora Core 2 are available from:
|
||||
ftp://ftp.freepascal.org/pub/fpc/contrib/cross
|
||||
|
||||
The copyright-patch is included in newer versions of binutils (2.13)
|
||||
|
||||
|
||||
Building the freepascal runtime-library for netware
|
||||
===================================================
|
||||
|
||||
Install the current fpc sources from ftp.freepascal.org and change to the directory
|
||||
rtl/netware under the freepascal sourcetree. Verify the path of your units in
|
||||
Makefile. The default is /usr/lib/fpc/1.9.5/units/netware/rtl.
|
||||
Makefile. The default is /usr/lib/fpc/1.9.5/units/i386-netware/*.
|
||||
Compile and install the rtl with
|
||||
|
||||
make install
|
||||
|
||||
This will install the basic rtl files. To install all (packages,fcl and nlm's) do a
|
||||
|
||||
make OS_TARGET=netware build
|
||||
|
||||
and
|
||||
|
||||
make OS_TARGET=netware install
|
||||
|
||||
at the fpc source root dir.
|
||||
|
||||
|
||||
Settings and needed files to compile for netware
|
||||
================================================
|
||||
@ -76,9 +65,15 @@
|
||||
Edit your /etc/fpc.cfg and add the rtl source path for netware. This are my settings,
|
||||
you may paste it to your fpc.cfg:
|
||||
|
||||
#IFDEF Netware
|
||||
-Fu/usr/lib/fpc/1.9.5/units/netware/rtl
|
||||
-Fl/usr/lib/fpc/1.9.5/units/netware/rtl
|
||||
#IFDEF Netware_clib
|
||||
-Fu/usr/lib/fpc/1.9.5/units/i386-netware/*
|
||||
-Fl/usr/lib/fpc/1.9.5/units/i386-netware/rtl
|
||||
#ENDIF
|
||||
|
||||
#IFDEF Netware_libc
|
||||
-Fu/usr/lib/fpc/1.9.5/units/i386-netwlibc/*
|
||||
-Fl/usr/lib/fpc/1.9.5/units/i386-netwlibc/rtl
|
||||
-XPi386-netware-
|
||||
#ENDIF
|
||||
|
||||
This adds the search path for the rtl-units as well as for the needed import-files.
|
||||
@ -98,10 +93,10 @@
|
||||
{$Description The FreePascal HelloWorld for Netware}
|
||||
{$Version 1.0.0}
|
||||
{$Copyright Copyright (c) 2001 The FreePascal Development Team}
|
||||
{$Screenname The Pascal Hello World for Netware}
|
||||
{$Screenname FPC Hello World for Netware}
|
||||
|
||||
BEGIN
|
||||
WriteLn ('This is open source ! FreePascal for netware');
|
||||
WriteLn ('This is open source, FreePascal for netware');
|
||||
END.
|
||||
|
||||
Hints on using freepascal for nlm's
|
||||
@ -118,7 +113,8 @@
|
||||
above.
|
||||
$SCREENNAME : Sets the screen-name (i.e. shown in ctrl-esc screen)
|
||||
$SCREENNAME DEFAULT : output to logger screen
|
||||
$SCREENNAME NONE : no output at all
|
||||
$SCREENNAME NONE : no output at all (do not use this, writeln,
|
||||
even from a runtime error may crash the sever)
|
||||
$SCREENNAME MyScreen: Name the screen "MyScreen"
|
||||
$THREADNAME : Sets the thread name (dont use names that are to long
|
||||
for netware, that will prevent your nlm from loading)
|
||||
@ -180,31 +176,4 @@
|
||||
|
||||
function NWAbortServicingQueueJob2; CDecl; external 'calwin32.nlm';
|
||||
|
||||
- FreePascal RTL
|
||||
--------------
|
||||
|
||||
Currently the following units are available for netware:
|
||||
|
||||
- SYSTEM
|
||||
- CRT
|
||||
- DOS
|
||||
- SYSUTILS
|
||||
- STRINGS
|
||||
- KEYBOARD
|
||||
- VIDEO
|
||||
- MATH
|
||||
- TYPINFO
|
||||
- OBJECTS
|
||||
- GETOPTS
|
||||
- HEAPTRC
|
||||
- VARUTILS
|
||||
- CPU
|
||||
- MMX
|
||||
- WinSock2
|
||||
- SYSTHRDS
|
||||
- nwconio
|
||||
- nwthreads
|
||||
- nwsnut
|
||||
|
||||
|
||||
armin@freepascal.org
|
||||
|
@ -1509,25 +1509,24 @@ type
|
||||
{ Resource tag signatures for AllocateResourceTag }
|
||||
|
||||
const
|
||||
AllocSignature = $54524C41;
|
||||
AESProcessSignature = $50534541;
|
||||
AllocSignature = $54524C41;
|
||||
AESProcessSignature = $50534541;
|
||||
CacheNonMovableMemorySignature = $544D4E43;
|
||||
ConsoleCommandSignature = $4D4F4343;
|
||||
HardwareInterruptSignature = $50544E49;
|
||||
ConsoleCommandSignature = $4D4F4343;
|
||||
HardwareInterruptSignature = $50544E49;
|
||||
InterruptTimeCallBackSignature = $524D4954;
|
||||
SemiPermMemorySignature = $454D5053;
|
||||
DebuggerSignature = $47554244;
|
||||
BreakpointSignature = $54504B42;
|
||||
{ Data structure for RegisterConsoleCommand }
|
||||
{ set by RegisterConsoleCommand }
|
||||
{ parsing routing (user defined) }
|
||||
{ set to resource tag }
|
||||
SemiPermMemorySignature = $454D5053;
|
||||
DebuggerSignature = $47554244;
|
||||
BreakpointSignature = $54504B42;
|
||||
|
||||
type
|
||||
TCommandParserFunc = function (screenID : scr_t;
|
||||
commandLine : PChar):longint;cdecl;
|
||||
PcommandParserStructure = ^TcommandParserStructure;
|
||||
TcommandParserStructure = record
|
||||
Link : PcommandParserStructure;
|
||||
parseRoutine : function (screenID:longint; commandLine:PBYTE):longint;cdecl;
|
||||
RTag : longint;
|
||||
TcommandParserStructure = record // Data structure for RegisterConsoleCommand
|
||||
Link : PcommandParserStructure; // set by RegisterConsoleCommand
|
||||
parseRoutine : TCommandParserFunc; // parsing routing (user defined)
|
||||
RTag : longint; // set to resource tag
|
||||
end;
|
||||
|
||||
{
|
||||
@ -1962,6 +1961,8 @@ const
|
||||
ECDetachedBit = $00000008;
|
||||
ECDirectFileSystemBit = $00000020;
|
||||
ECFileWriteThroughBit = $00000040;
|
||||
HANDLEDCOMMAND = 0;
|
||||
NOTMYCOMMAND = 1;
|
||||
{$include npackoff.inc}
|
||||
|
||||
function AllocateResourceTag (NLMHandle:TNlmHandle;
|
||||
@ -2000,6 +2001,7 @@ function NWGetSearchPathElement (searchPathNumber:longint;
|
||||
searchPath:PChar):longint;cdecl;external 'clib' name 'NWGetSearchPathElement';
|
||||
function NWInsertSearchPath(searchPathNumber:longint; path:PChar):longint;cdecl;external 'clib' name 'NWInsertSearchPath';
|
||||
function RegisterConsoleCommand(newCommandParser:PcommandParserStructure):longint;cdecl;external 'clib' name 'RegisterConsoleCommand';
|
||||
function RegisterConsoleCommand(var newCommandParser:TcommandParserStructure):longint;cdecl;external 'clib' name 'RegisterConsoleCommand';
|
||||
function RegisterForEvent (eventType:longint;
|
||||
reportProcedure:TreportProcedure;
|
||||
warnProcedure:TwarnProcedure):longint;cdecl;external 'clib' name 'RegisterForEvent';
|
||||
@ -2032,6 +2034,7 @@ procedure SynchronizeStart;cdecl;external 'clib' name 'SynchronizeStart';
|
||||
function UnimportSymbol (NLMHandle:TNlmHandle;
|
||||
symbolName:Pchar):longint;cdecl;external 'clib' name 'UnimportSymbol';
|
||||
function UnRegisterConsoleCommand (commandParserToDelete:PcommandParserStructure):longint;cdecl;external 'clib' name 'UnRegisterConsoleCommand';
|
||||
function UnRegisterConsoleCommand (var commandParserToDelete:TcommandParserStructure):longint;cdecl;external 'clib' name 'UnRegisterConsoleCommand';
|
||||
function UnregisterForEvent (eventHandle:longint):longint;cdecl;external 'clib' name 'UnregisterForEvent';
|
||||
{-nwfileio.h-------------------------------------------------------------------}
|
||||
type
|
||||
@ -5374,7 +5377,10 @@ end.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.5 2004-12-16 12:42:55 armin
|
||||
Revision 1.6 2004-12-29 13:01:42 armin
|
||||
* made commandParser more compatible between clib and libc
|
||||
|
||||
Revision 1.5 2004/12/16 12:42:55 armin
|
||||
* added NetWare Alert
|
||||
* added sysutils.sleep
|
||||
|
||||
|
@ -41,7 +41,7 @@ Type
|
||||
void = pointer;
|
||||
cint = longint;
|
||||
TNLMHandle = Pointer;
|
||||
|
||||
|
||||
const
|
||||
NullNlmHandle = nil;
|
||||
|
||||
@ -4523,22 +4523,28 @@ function RegisterCommand(NLMHandle:TNLMHandle; rTag:rtag_t; keywordFlags:dword;
|
||||
{ legacy command parsing; uses ConsoleCommandSignature... }
|
||||
|
||||
type
|
||||
Parser_t = function (scrID:scr_t; commandline:Pchar):longint;cdecl;
|
||||
TCommandParserFunc = function (scrID:scr_t; commandline:Pchar):longint;cdecl;
|
||||
|
||||
{ allocate with ConsoleCommandSignature }
|
||||
|
||||
PCommandParser_t = ^TCommandParser;
|
||||
TCommandParser = record
|
||||
PCommandParserStructure = ^TCommandParserStructure;
|
||||
TCommandParserStructure = record
|
||||
link : pointer;
|
||||
parser : Parser_t;
|
||||
rTag : rtag_t;
|
||||
case longint of
|
||||
0 : (parser : TCommandParserFunc; rTag : rtag_t);
|
||||
1 : (parseRoutine : TCommandParserFunc; rTag2 : rtag_t);
|
||||
end;
|
||||
PCommandParser = PCommandParser_t;
|
||||
TCommandParser = TCommandParserStructure;
|
||||
PCommandParser = PCommandParserStructure;
|
||||
|
||||
const
|
||||
HANDLEDCOMMAND = 0;
|
||||
NOTMYCOMMAND = 1;
|
||||
|
||||
function ParseCommand(commandLine:Pchar):longint;cdecl;external system_nlm name 'ParseCommand';
|
||||
function RegisterConsoleCommand(cmdParser:PCommandParser_t):longint;cdecl;external system_nlm name 'RegisterConsoleCommand';
|
||||
function RegisterConsoleCommand(cmdParser:PCommandParser):longint;cdecl;external system_nlm name 'RegisterConsoleCommand';
|
||||
function RegisterConsoleCommand(var cmdParser:TCommandParser):longint;cdecl;external system_nlm name 'RegisterConsoleCommand';
|
||||
function UnRegisterConsoleCommand(cmdParser:PCommandParser_t):longint;cdecl;external libc_nlm name 'UnRegisterConsoleCommand';
|
||||
function UnRegisterConsoleCommand(cmdParser:PCommandParser):longint;cdecl;external libc_nlm name 'UnRegisterConsoleCommand';
|
||||
function UnRegisterConsoleCommand(var cmdParser:TCommandParser):longint;cdecl;external libc_nlm name 'UnRegisterConsoleCommand';
|
||||
|
||||
const
|
||||
@ -9111,7 +9117,10 @@ end.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.7 2004-12-16 12:42:55 armin
|
||||
Revision 1.8 2004-12-29 13:01:43 armin
|
||||
* made commandParser more compatible between clib and libc
|
||||
|
||||
Revision 1.7 2004/12/16 12:42:55 armin
|
||||
* added NetWare Alert
|
||||
* added sysutils.sleep
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user