From 85cb180d80db6902dc90aef7eb0dcde0fc04994c Mon Sep 17 00:00:00 2001 From: nickysn Date: Mon, 23 Mar 2015 01:19:19 +0000 Subject: [PATCH] * prepend "+" to each file name to be added to the library by wlib. This indicates an "add" command, instead of "replace". git-svn-id: trunk@30287 - --- compiler/link.pas | 11 ++++++++--- compiler/systems.pas | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/compiler/link.pas b/compiler/link.pas index d589ac5de5..1f9e654bae 100644 --- a/compiler/link.pas +++ b/compiler/link.pas @@ -761,11 +761,11 @@ Implementation Function TExternalLinker.MakeStaticLibrary:boolean; - function GetNextFiles(const maxCmdLength : Longint; var item : TCmdStrListItem) : TCmdStr; + function GetNextFiles(const maxCmdLength : Longint; var item : TCmdStrListItem; const addfilecmd : string) : TCmdStr; begin result := ''; while (assigned(item) and ((length(result) + length(item.str) + 1) < maxCmdLength)) do begin - result := result + ' ' + item.str; + result := result + ' ' + addfilecmd + item.str; item := TCmdStrListItem(item.next); end; end; @@ -849,7 +849,7 @@ Implementation nextcmd := firstcmd else nextcmd := cmdstr; - Replace(nextcmd,'$FILES',GetNextFiles(2047, current)); + Replace(nextcmd,'$FILES',GetNextFiles(2047, current, target_ar.addfilecmd)); if first then success:=DoExec(firstbinstr,nextcmd,false,true) else @@ -1604,6 +1604,7 @@ Implementation ar_gnu_ar_info : tarinfo = ( id : ar_gnu_ar; + addfilecmd : ''; arfirstcmd : ''; arcmd : 'ar qS $LIB $FILES'; arfinishcmd : 'ar s $LIB' @@ -1612,6 +1613,7 @@ Implementation ar_gnu_ar_scripted_info : tarinfo = ( id : ar_gnu_ar_scripted; + addfilecmd : ''; arfirstcmd : ''; arcmd : 'ar -M < $SCRIPT'; arfinishcmd : '' @@ -1619,6 +1621,7 @@ Implementation ar_gnu_gar_info : tarinfo = ( id : ar_gnu_gar; + addfilecmd : ''; arfirstcmd : ''; arcmd : 'gar qS $LIB $FILES'; arfinishcmd : 'gar s $LIB' @@ -1626,6 +1629,7 @@ Implementation ar_watcom_wlib_omf_info : tarinfo = ( id : ar_watcom_wlib_omf; + addfilecmd : '+'; arfirstcmd : 'wlib -q -fo -c -b -n -o=$OUTPUTLIB $LIB $FILES'; arcmd : 'wlib -q -fo -c -b -o=$OUTPUTLIB $LIB $FILES'; arfinishcmd : '' @@ -1634,6 +1638,7 @@ Implementation ar_watcom_wlib_omf_scripted_info : tarinfo = ( id : ar_watcom_wlib_omf_scripted; + addfilecmd : '+'; arfirstcmd : ''; arcmd : 'wlib @$SCRIPT'; arfinishcmd : '' diff --git a/compiler/systems.pas b/compiler/systems.pas index 059291610e..20dd58b0c5 100644 --- a/compiler/systems.pas +++ b/compiler/systems.pas @@ -83,6 +83,7 @@ interface parinfo = ^tarinfo; tarinfo = record id : tar; + addfilecmd : string[10]; arfirstcmd : string[50]; arcmd : string[50]; arfinishcmd : string[10];