mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-07 23:06:11 +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
|
General
|
||||||
=======
|
=======
|
||||||
|
|
||||||
Currently generating NetWare-NLM's only work under Linux and win32. (may be under bsd also)
|
Currently generating NetWare-NLM's only work under Linux and win32. (may work under other
|
||||||
For Win32 you need a win32 compiled binutils with netware target enabled. Because nlmconv
|
unix versions also but this is not tested yet)
|
||||||
only works with elf objects, elf support in binutils is also needed.
|
|
||||||
|
|
||||||
|
|
||||||
Binutils with netware-support needed
|
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
|
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
|
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
|
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:
|
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)
|
I used the prefix /usr because thats the default location on redhat (thats what I'm using)
|
||||||
|
|
||||||
@ -46,18 +26,16 @@
|
|||||||
make install
|
make install
|
||||||
|
|
||||||
to build and install binutils. To check that netware is supported by the version of binutils
|
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
|
installed, use i386-netware-ld --version. The emulation 'i386nw' must be present. Also check that
|
||||||
is present and can be started without specifying the complete path of nlmconv.
|
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
|
You can find more information and a binary version of binutils with netware-support for
|
||||||
linux on:
|
linux on:
|
||||||
http://home.sch.bme.hu/~keresztg/novell/howto/NLM-Linux-HOWTO.html.
|
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
|
Binutils for win32 and Fedora Core 2 are available from:
|
||||||
that supports "copyright" are available from:
|
ftp://ftp.freepascal.org/pub/fpc/contrib/cross
|
||||||
http://home.arcor.de/armin.diehl/fpcnw
|
|
||||||
|
|
||||||
The copyright-patch is included in newer versions of binutils (2.13)
|
|
||||||
|
|
||||||
|
|
||||||
Building the freepascal runtime-library for netware
|
Building the freepascal runtime-library for netware
|
||||||
@ -65,20 +43,37 @@
|
|||||||
|
|
||||||
Install the current fpc sources from ftp.freepascal.org and change to the directory
|
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
|
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
|
Compile and install the rtl with
|
||||||
|
|
||||||
make install
|
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
|
Settings and needed files to compile for netware
|
||||||
================================================
|
================================================
|
||||||
|
|
||||||
Edit your /etc/fpc.cfg and add the rtl source path for netware. This are my settings,
|
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:
|
you may paste it to your fpc.cfg:
|
||||||
|
|
||||||
#IFDEF Netware
|
#IFDEF Netware_clib
|
||||||
-Fu/usr/lib/fpc/1.9.5/units/netware/rtl
|
-Fu/usr/lib/fpc/1.9.5/units/i386-netware/*
|
||||||
-Fl/usr/lib/fpc/1.9.5/units/netware/rtl
|
-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
|
#ENDIF
|
||||||
|
|
||||||
This adds the search path for the rtl-units as well as for the needed import-files.
|
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}
|
{$Description The FreePascal HelloWorld for Netware}
|
||||||
{$Version 1.0.0}
|
{$Version 1.0.0}
|
||||||
{$Copyright Copyright (c) 2001 The FreePascal Development Team}
|
{$Copyright Copyright (c) 2001 The FreePascal Development Team}
|
||||||
{$Screenname The Pascal Hello World for Netware}
|
{$Screenname FPC Hello World for Netware}
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
WriteLn ('This is open source ! FreePascal for netware');
|
WriteLn ('This is open source, FreePascal for netware');
|
||||||
END.
|
END.
|
||||||
|
|
||||||
Hints on using freepascal for nlm's
|
Hints on using freepascal for nlm's
|
||||||
@ -118,7 +113,8 @@
|
|||||||
above.
|
above.
|
||||||
$SCREENNAME : Sets the screen-name (i.e. shown in ctrl-esc screen)
|
$SCREENNAME : Sets the screen-name (i.e. shown in ctrl-esc screen)
|
||||||
$SCREENNAME DEFAULT : output to logger 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"
|
$SCREENNAME MyScreen: Name the screen "MyScreen"
|
||||||
$THREADNAME : Sets the thread name (dont use names that are to long
|
$THREADNAME : Sets the thread name (dont use names that are to long
|
||||||
for netware, that will prevent your nlm from loading)
|
for netware, that will prevent your nlm from loading)
|
||||||
@ -180,31 +176,4 @@
|
|||||||
|
|
||||||
function NWAbortServicingQueueJob2; CDecl; external 'calwin32.nlm';
|
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
|
armin@freepascal.org
|
||||||
|
@ -1509,25 +1509,24 @@ type
|
|||||||
{ Resource tag signatures for AllocateResourceTag }
|
{ Resource tag signatures for AllocateResourceTag }
|
||||||
|
|
||||||
const
|
const
|
||||||
AllocSignature = $54524C41;
|
AllocSignature = $54524C41;
|
||||||
AESProcessSignature = $50534541;
|
AESProcessSignature = $50534541;
|
||||||
CacheNonMovableMemorySignature = $544D4E43;
|
CacheNonMovableMemorySignature = $544D4E43;
|
||||||
ConsoleCommandSignature = $4D4F4343;
|
ConsoleCommandSignature = $4D4F4343;
|
||||||
HardwareInterruptSignature = $50544E49;
|
HardwareInterruptSignature = $50544E49;
|
||||||
InterruptTimeCallBackSignature = $524D4954;
|
InterruptTimeCallBackSignature = $524D4954;
|
||||||
SemiPermMemorySignature = $454D5053;
|
SemiPermMemorySignature = $454D5053;
|
||||||
DebuggerSignature = $47554244;
|
DebuggerSignature = $47554244;
|
||||||
BreakpointSignature = $54504B42;
|
BreakpointSignature = $54504B42;
|
||||||
{ Data structure for RegisterConsoleCommand }
|
|
||||||
{ set by RegisterConsoleCommand }
|
|
||||||
{ parsing routing (user defined) }
|
|
||||||
{ set to resource tag }
|
|
||||||
type
|
type
|
||||||
|
TCommandParserFunc = function (screenID : scr_t;
|
||||||
|
commandLine : PChar):longint;cdecl;
|
||||||
PcommandParserStructure = ^TcommandParserStructure;
|
PcommandParserStructure = ^TcommandParserStructure;
|
||||||
TcommandParserStructure = record
|
TcommandParserStructure = record // Data structure for RegisterConsoleCommand
|
||||||
Link : PcommandParserStructure;
|
Link : PcommandParserStructure; // set by RegisterConsoleCommand
|
||||||
parseRoutine : function (screenID:longint; commandLine:PBYTE):longint;cdecl;
|
parseRoutine : TCommandParserFunc; // parsing routing (user defined)
|
||||||
RTag : longint;
|
RTag : longint; // set to resource tag
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -1962,6 +1961,8 @@ const
|
|||||||
ECDetachedBit = $00000008;
|
ECDetachedBit = $00000008;
|
||||||
ECDirectFileSystemBit = $00000020;
|
ECDirectFileSystemBit = $00000020;
|
||||||
ECFileWriteThroughBit = $00000040;
|
ECFileWriteThroughBit = $00000040;
|
||||||
|
HANDLEDCOMMAND = 0;
|
||||||
|
NOTMYCOMMAND = 1;
|
||||||
{$include npackoff.inc}
|
{$include npackoff.inc}
|
||||||
|
|
||||||
function AllocateResourceTag (NLMHandle:TNlmHandle;
|
function AllocateResourceTag (NLMHandle:TNlmHandle;
|
||||||
@ -2000,6 +2001,7 @@ function NWGetSearchPathElement (searchPathNumber:longint;
|
|||||||
searchPath:PChar):longint;cdecl;external 'clib' name 'NWGetSearchPathElement';
|
searchPath:PChar):longint;cdecl;external 'clib' name 'NWGetSearchPathElement';
|
||||||
function NWInsertSearchPath(searchPathNumber:longint; path:PChar):longint;cdecl;external 'clib' name 'NWInsertSearchPath';
|
function NWInsertSearchPath(searchPathNumber:longint; path:PChar):longint;cdecl;external 'clib' name 'NWInsertSearchPath';
|
||||||
function RegisterConsoleCommand(newCommandParser:PcommandParserStructure):longint;cdecl;external 'clib' name 'RegisterConsoleCommand';
|
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;
|
function RegisterForEvent (eventType:longint;
|
||||||
reportProcedure:TreportProcedure;
|
reportProcedure:TreportProcedure;
|
||||||
warnProcedure:TwarnProcedure):longint;cdecl;external 'clib' name 'RegisterForEvent';
|
warnProcedure:TwarnProcedure):longint;cdecl;external 'clib' name 'RegisterForEvent';
|
||||||
@ -2032,6 +2034,7 @@ procedure SynchronizeStart;cdecl;external 'clib' name 'SynchronizeStart';
|
|||||||
function UnimportSymbol (NLMHandle:TNlmHandle;
|
function UnimportSymbol (NLMHandle:TNlmHandle;
|
||||||
symbolName:Pchar):longint;cdecl;external 'clib' name 'UnimportSymbol';
|
symbolName:Pchar):longint;cdecl;external 'clib' name 'UnimportSymbol';
|
||||||
function UnRegisterConsoleCommand (commandParserToDelete:PcommandParserStructure):longint;cdecl;external 'clib' name 'UnRegisterConsoleCommand';
|
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';
|
function UnregisterForEvent (eventHandle:longint):longint;cdecl;external 'clib' name 'UnregisterForEvent';
|
||||||
{-nwfileio.h-------------------------------------------------------------------}
|
{-nwfileio.h-------------------------------------------------------------------}
|
||||||
type
|
type
|
||||||
@ -5374,7 +5377,10 @@ end.
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$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 NetWare Alert
|
||||||
* added sysutils.sleep
|
* added sysutils.sleep
|
||||||
|
|
||||||
|
@ -4523,22 +4523,28 @@ function RegisterCommand(NLMHandle:TNLMHandle; rTag:rtag_t; keywordFlags:dword;
|
|||||||
{ legacy command parsing; uses ConsoleCommandSignature... }
|
{ legacy command parsing; uses ConsoleCommandSignature... }
|
||||||
|
|
||||||
type
|
type
|
||||||
Parser_t = function (scrID:scr_t; commandline:Pchar):longint;cdecl;
|
TCommandParserFunc = function (scrID:scr_t; commandline:Pchar):longint;cdecl;
|
||||||
|
|
||||||
{ allocate with ConsoleCommandSignature }
|
{ allocate with ConsoleCommandSignature }
|
||||||
|
|
||||||
PCommandParser_t = ^TCommandParser;
|
PCommandParserStructure = ^TCommandParserStructure;
|
||||||
TCommandParser = record
|
TCommandParserStructure = record
|
||||||
link : pointer;
|
link : pointer;
|
||||||
parser : Parser_t;
|
case longint of
|
||||||
rTag : rtag_t;
|
0 : (parser : TCommandParserFunc; rTag : rtag_t);
|
||||||
|
1 : (parseRoutine : TCommandParserFunc; rTag2 : rtag_t);
|
||||||
end;
|
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 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 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';
|
function UnRegisterConsoleCommand(var cmdParser:TCommandParser):longint;cdecl;external libc_nlm name 'UnRegisterConsoleCommand';
|
||||||
|
|
||||||
const
|
const
|
||||||
@ -9111,7 +9117,10 @@ end.
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$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 NetWare Alert
|
||||||
* added sysutils.sleep
|
* added sysutils.sleep
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user