* smartlink dynamic libraries under Mac OS X (mantis #15984)

git-svn-id: trunk@15011 -
This commit is contained in:
Jonas Maebe 2010-03-13 23:37:20 +00:00
parent 0cfc6e1cac
commit 2e544bd8de

View File

@ -166,9 +166,9 @@ begin
ExeCmd[1]:='ld $PRTOBJ $OPT $DYNLINK $STATIC $GCSECTIONS $STRIP -multiply_defined suppress -L. -o $EXE `cat $RES`';
{$endif ndef cpu64bitaddr}
if (apptype<>app_bundle) then
DllCmd[1]:='ld $PRTOBJ $OPT -dynamic -dylib -multiply_defined suppress -L. -o $EXE `cat $RES`'
DllCmd[1]:='ld $PRTOBJ $OPT $GCSECTIONS -dynamic -dylib -multiply_defined suppress -L. -o $EXE `cat $RES`'
else
DllCmd[1]:='ld $PRTOBJ $OPT -dynamic -bundle -multiply_defined suppress -L. -o $EXE `cat $RES`'
DllCmd[1]:='ld $PRTOBJ $OPT $GCSECTIONS -dynamic -bundle -multiply_defined suppress -L. -o $EXE `cat $RES`'
end
end
else
@ -620,16 +620,26 @@ var
cmdstr,
extdbgbinstr,
extdbgcmdstr : TCmdStr;
GCSectionsStr : string[40];
exportedsyms: text;
success : boolean;
begin
MakeSharedLibrary:=false;
GCSectionsStr:='';
if not(cs_link_nolink in current_settings.globalswitches) then
Message1(exec_i_linking,current_module.sharedlibfilename^);
{ Write used files and libraries }
WriteResponseFile(true);
if (cs_link_smart in current_settings.globalswitches) and
(tf_smartlink_sections in target_info.flags) then
if not(target_info.system in systems_darwin) then
{ disabled because not tested
GCSectionsStr:='--gc-sections' }
else
GCSectionsStr:='-dead_strip -no_dead_strip_inits_and_terms';
InitStr:='-init FPC_LIB_START';
FiniStr:='-fini FPC_LIB_EXIT';
SoNameStr:='-soname '+ExtractFileName(current_module.sharedlibfilename^);
@ -645,6 +655,7 @@ begin
Replace(cmdstr,'$RES',maybequoted(outputexedir+Info.ResName));
Replace(cmdstr,'$INIT',InitStr);
Replace(cmdstr,'$FINI',FiniStr);
Replace(cmdstr,'$GCSECTIONS',GCSectionsStr);
Replace(cmdstr,'$SONAME',SoNameStr);
if (target_info.system in systems_darwin) then
Replace(cmdstr,'$PRTOBJ',GetDarwinPrtobjName(true));