mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 10:19:17 +02:00
--- Merging r43485 into '.':
U compiler/systems/t_bsd.pas --- Recording mergeinfo for merge of r43485 into '.': U . git-svn-id: branches/fixes_3_2@44732 -
This commit is contained in:
parent
a4758f3560
commit
947f6825c9
@ -586,28 +586,29 @@ begin
|
|||||||
HPath:=TCmdStrListItem(HPath.Next);
|
HPath:=TCmdStrListItem(HPath.Next);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
{ force local symbol resolution (i.e., inside the shared }
|
|
||||||
{ library itself) for all non-exorted symbols, otherwise }
|
{ force local symbol resolution (i.e., inside the shared }
|
||||||
{ several RTL symbols of FPC-compiled shared libraries }
|
{ library itself) for all non-exorted symbols, otherwise }
|
||||||
{ will be bound to those of a single shared library or }
|
{ several RTL symbols of FPC-compiled shared libraries }
|
||||||
{ to the main program }
|
{ will be bound to those of a single shared library or }
|
||||||
if (isdll) and (target_info.system in systems_bsd) then
|
{ to the main program }
|
||||||
|
if (isdll) and (target_info.system in systems_bsd) then
|
||||||
|
begin
|
||||||
|
LinkRes.add('VERSION');
|
||||||
|
LinkRes.add('{');
|
||||||
|
LinkRes.add(' {');
|
||||||
|
if not texportlibunix(exportlib).exportedsymnames.empty then
|
||||||
begin
|
begin
|
||||||
LinkRes.add('VERSION');
|
LinkRes.add(' global:');
|
||||||
LinkRes.add('{');
|
repeat
|
||||||
LinkRes.add(' {');
|
LinkRes.add(' '+texportlibunix(exportlib).exportedsymnames.getfirst+';');
|
||||||
if not texportlibunix(exportlib).exportedsymnames.empty then
|
until texportlibunix(exportlib).exportedsymnames.empty;
|
||||||
begin
|
|
||||||
LinkRes.add(' global:');
|
|
||||||
repeat
|
|
||||||
LinkRes.add(' '+texportlibunix(exportlib).exportedsymnames.getfirst+';');
|
|
||||||
until texportlibunix(exportlib).exportedsymnames.empty;
|
|
||||||
end;
|
|
||||||
LinkRes.add(' local:');
|
|
||||||
LinkRes.add(' *;');
|
|
||||||
LinkRes.add(' };');
|
|
||||||
LinkRes.add('}');
|
|
||||||
end;
|
end;
|
||||||
|
LinkRes.add(' local:');
|
||||||
|
LinkRes.add(' *;');
|
||||||
|
LinkRes.add(' };');
|
||||||
|
LinkRes.add('}');
|
||||||
|
end;
|
||||||
|
|
||||||
if not LdSupportsNoResponseFile then
|
if not LdSupportsNoResponseFile then
|
||||||
LinkRes.Add('INPUT(');
|
LinkRes.Add('INPUT(');
|
||||||
@ -638,10 +639,7 @@ begin
|
|||||||
|
|
||||||
{ main objectfiles }
|
{ main objectfiles }
|
||||||
|
|
||||||
{ Generate linkfiles.res file if needed }
|
if (target_info.system in systems_darwin) then
|
||||||
{ Only needed on Windows, due to the limitation of 8196 characters for command line }
|
|
||||||
if (LdSupportsNoResponseFile) and
|
|
||||||
(source_info.system in systems_all_windows) then
|
|
||||||
begin
|
begin
|
||||||
FilesList:=TLinkRes.Create(outputexedir+'linkfiles.res',false);
|
FilesList:=TLinkRes.Create(outputexedir+'linkfiles.res',false);
|
||||||
while not ObjectFiles.Empty do
|
while not ObjectFiles.Empty do
|
||||||
@ -649,11 +647,7 @@ begin
|
|||||||
s:=ObjectFiles.GetFirst;
|
s:=ObjectFiles.GetFirst;
|
||||||
if s<>'' then
|
if s<>'' then
|
||||||
begin
|
begin
|
||||||
repeat
|
s:=TargetFixFileName(s);
|
||||||
i:=Pos(source_info.dirsep,s);
|
|
||||||
if i>0 then
|
|
||||||
s[i]:=target_info.dirsep;
|
|
||||||
until i=0;
|
|
||||||
FilesList.Add(s);
|
FilesList.Add(s);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -874,7 +868,7 @@ begin
|
|||||||
Replace(cmdstr,'$MAP',mapstr);
|
Replace(cmdstr,'$MAP',mapstr);
|
||||||
Replace(cmdstr,'$CATRES',CatFileContent(outputexedir+Info.ResName));
|
Replace(cmdstr,'$CATRES',CatFileContent(outputexedir+Info.ResName));
|
||||||
Replace(cmdstr,'$RES',maybequoted(outputexedir+Info.ResName));
|
Replace(cmdstr,'$RES',maybequoted(outputexedir+Info.ResName));
|
||||||
if (LdSupportsNoResponseFile) and (source_info.system in systems_all_windows) then
|
if (target_info.system in systems_darwin) then
|
||||||
Replace(cmdstr,'$FILELIST','-filelist '+maybequoted(outputexedir+'linkfiles.res'))
|
Replace(cmdstr,'$FILELIST','-filelist '+maybequoted(outputexedir+'linkfiles.res'))
|
||||||
else
|
else
|
||||||
Replace(cmdstr,'$FILELIST','');
|
Replace(cmdstr,'$FILELIST','');
|
||||||
@ -931,12 +925,10 @@ begin
|
|||||||
DeleteFile(linkscript.fn);
|
DeleteFile(linkscript.fn);
|
||||||
linkscript.free
|
linkscript.free
|
||||||
end;
|
end;
|
||||||
|
if target_info.system in systems_darwin then
|
||||||
|
DeleteFile(outputexedir+'linkfiles.res');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ Remove linkfiles.res }
|
|
||||||
if (success) and (LdSupportsNoResponseFile) and (source_info.system in systems_all_windows) then
|
|
||||||
DeleteFile(outputexedir+'linkfiles.res');
|
|
||||||
|
|
||||||
MakeExecutable:=success; { otherwise a recursive call to link method }
|
MakeExecutable:=success; { otherwise a recursive call to link method }
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1008,7 +1000,7 @@ begin
|
|||||||
Replace(cmdstr,'$TARGET',targetstr);
|
Replace(cmdstr,'$TARGET',targetstr);
|
||||||
Replace(cmdstr,'$EMUL',EmulStr);
|
Replace(cmdstr,'$EMUL',EmulStr);
|
||||||
Replace(cmdstr,'$CATRES',CatFileContent(outputexedir+Info.ResName));
|
Replace(cmdstr,'$CATRES',CatFileContent(outputexedir+Info.ResName));
|
||||||
if (LdSupportsNoResponseFile) and (source_info.system in systems_all_windows) then
|
if (target_info.system in systems_darwin) then
|
||||||
Replace(cmdstr,'$FILELIST','-filelist '+maybequoted(outputexedir+'linkfiles.res'))
|
Replace(cmdstr,'$FILELIST','-filelist '+maybequoted(outputexedir+'linkfiles.res'))
|
||||||
else
|
else
|
||||||
Replace(cmdstr,'$FILELIST','');
|
Replace(cmdstr,'$FILELIST','');
|
||||||
@ -1090,13 +1082,12 @@ begin
|
|||||||
linkscript.free
|
linkscript.free
|
||||||
end;
|
end;
|
||||||
if (target_info.system in systems_darwin) then
|
if (target_info.system in systems_darwin) then
|
||||||
DeleteFile(outputexedir+'linksyms.fpc');
|
begin
|
||||||
|
DeleteFile(outputexedir+'linksyms.fpc');
|
||||||
|
DeleteFile(outputexedir+'linkfiles.res');
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ Remove linkfiles.res }
|
|
||||||
if (success) and (LdSupportsNoResponseFile) and (source_info.system in systems_all_windows) then
|
|
||||||
DeleteFile(outputexedir+'linkfiles.res');
|
|
||||||
|
|
||||||
MakeSharedLibrary:=success; { otherwise a recursive call to link method }
|
MakeSharedLibrary:=success; { otherwise a recursive call to link method }
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user