mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-19 01:39:30 +02:00
* added library support
This commit is contained in:
parent
048ce5d92c
commit
014395198b
@ -36,7 +36,7 @@
|
||||
inputfile. A ; will be converted into a newline
|
||||
|
||||
Exports will be handled like in win32:
|
||||
procedure bla;
|
||||
procedure bla; cdecl;
|
||||
begin
|
||||
end;
|
||||
|
||||
@ -47,14 +47,16 @@
|
||||
to be in unix-format for exe2nlm)
|
||||
By default, the most import files are included in freepascal.
|
||||
|
||||
i.e. Procedure ConsolePrintf (p:pchar); cdecl; external 'clib.nlm';
|
||||
sets IMPORT @clib.imp and MODULE clib.
|
||||
e.g. function getgrnam(name:Pchar):Pgroup;cdecl;external 'libc' 'getgrnam';
|
||||
sets IMPORT @libc.imp and MODULE libc.
|
||||
To avoid setting the autoload, use ! in the name, e.g.
|
||||
procedure EnterDebugger;cdecl;external '!netware' name 'EnterDebugger';
|
||||
|
||||
Function simply defined as external work without generating autoload but
|
||||
you will get a warnung from nlmconv.
|
||||
Function simply defined as external work without generating autoload and
|
||||
IMPORT but you will get a warning from nlmconv.
|
||||
|
||||
If you dont have nlmconv, compile gnu-binutils with
|
||||
./configure --enable-targets=i386-linux,i386-netware
|
||||
./configure --enable-targets=i386-netware
|
||||
make all
|
||||
|
||||
Debugging is possible with gdb and a converter from gdb to ndi available
|
||||
@ -72,10 +74,14 @@
|
||||
end.
|
||||
|
||||
compile with:
|
||||
ppc386 -Tnetware hello
|
||||
|
||||
ToDo:
|
||||
- No duplicate imports and autoloads
|
||||
ppc386 -Tnetwlibc hello
|
||||
|
||||
Libraries are supported but this needs at least netware 5.1 sp6,
|
||||
6.0 sp3 or netware 6.5
|
||||
|
||||
In case there is a xdc file with the same name as the nlm name,
|
||||
this file will be used for nlmconv. Otherwise a temp xdc will
|
||||
be created and used.
|
||||
|
||||
****************************************************************************
|
||||
}
|
||||
@ -128,7 +134,7 @@ implementation
|
||||
function MakeSharedLibrary:boolean;override;
|
||||
end;
|
||||
|
||||
Const tmpLinkFileName = 'link~tmp._o_';
|
||||
Const tmpLinkFileName = '~link~tmp.o';
|
||||
minStackSize = 32768;
|
||||
|
||||
{*****************************************************************************
|
||||
@ -360,6 +366,13 @@ begin
|
||||
Comment (V_Debug,'adding Object File '+s2);
|
||||
{$ifndef netware} LinkRes.Add (s2); {$else} LinkRes.Add (FExpand(s2)); {$endif}
|
||||
|
||||
if isDll then {needed to provide main}
|
||||
s2 := FindObjectFile('nwl_dlle','',false)
|
||||
else
|
||||
s2 := FindObjectFile('nwl_main','',false);
|
||||
Comment (V_Debug,'adding Object File '+s2);
|
||||
{$ifndef netware} LinkRes.Add (s2); {$else} LinkRes.Add (FExpand(s2)); {$endif}
|
||||
|
||||
{ main objectfiles, add to linker input }
|
||||
while not ObjectFiles.Empty do
|
||||
begin
|
||||
@ -553,7 +566,7 @@ begin
|
||||
|
||||
{ Write used files and libraries and create Headerfile for
|
||||
nlmconv in NLMConvLinkFile }
|
||||
WriteResponseFile(false);
|
||||
WriteResponseFile(isLib);
|
||||
if isLib then
|
||||
NLMConvLinkFile.Add('FLAG_ON 1024'); {0x400 Specifies whether the NLM is a shared library.}
|
||||
|
||||
@ -638,7 +651,10 @@ initialization
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.2 2004-09-19 14:23:43 armin
|
||||
Revision 1.3 2004-09-19 18:10:32 armin
|
||||
* added library support
|
||||
|
||||
Revision 1.2 2004/09/19 14:23:43 armin
|
||||
* support library flag
|
||||
* automaticly gernerate xdc data
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user