浏览代码

* 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 -

nickysn 10 年之前
父节点
当前提交
85cb180d80
共有 2 个文件被更改,包括 9 次插入3 次删除
  1. 8 3
      compiler/link.pas
  2. 1 0
      compiler/systems.pas

+ 8 - 3
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 : ''

+ 1 - 0
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];