Browse Source

psy-q-sdk lib duplicate named *.o files excluded from link

Kirill Kranz 10 months ago
parent
commit
66f73d466b
3 changed files with 37 additions and 21 deletions
  1. 1 1
      compiler/systems.pas
  2. 36 4
      compiler/systems/t_ps1.pas
  3. 0 16
      rtl/ps1/si_prc.pp

+ 1 - 1
compiler/systems.pas

@@ -398,7 +398,7 @@ interface
                                    system_riscv32_linux,system_riscv64_linux,
                                    system_aarch64_win64,
                                    system_z80_zxspectrum,system_z80_msxdos,
-                                   system_wasm32_wasi,system_loongarch64_linux,system_mipsel_ps1
+                                   system_wasm32_wasi,system_loongarch64_linux
                                   ]+systems_darwin+systems_amigalike;
 
        { all systems that use the PE+ header in the PE/COFF file

+ 36 - 4
compiler/systems/t_ps1.pas

@@ -73,6 +73,14 @@ Var
     megastr : ansistring;
     newname : ansistring;
     HPath    : TCmdStrListItem;
+    ObjectFilesTable : TStringList;
+
+
+procedure delLib(name: string);
+begin
+  if ObjectFilesTable.indexof(name) <> -1 then ObjectFilesTable.delete(ObjectFilesTable.indexof(name));
+end;
+
 
 begin
 
@@ -97,15 +105,39 @@ begin
     end;
 
 
-    LinkRes.Add('INPUT(' + ExtractFileName(ObjectFiles.GetFirst) + ')');  // have to be "si_prc.o"
+    ObjectFilesTable := TStringList.Create;
     while not ObjectFiles.Empty do begin
-        s:= ObjectFiles.GetFirst;
-        if s <> '' then LinkRes.Add('INPUT(' + ExtractFileName(s) + ')');        
+        ObjectFilesTable.add(ExtractFileName(ObjectFiles.GetFirst));
     end;
+    
+    delLib('libcard.o');
+    delLib('libpress.o');
+    delLib('libgpu.o');
+    delLib('libgs.o');
+    delLib('libgte.o');
+    delLib('libcd.o');
+    delLib('libetc.o');
+    delLib('libsn.o');
+    delLib('libsnd.o ');
+    delLib('libspu.o');
+    delLib('libmath.o');
+    delLib('libcomb.o');
+    delLib('libtap.o');
+    delLib('libsio.o');
+    delLib('libpad.o');
+    delLib('libc2.o');
+    delLib('libapi.o');
+
+    for i:= 0 to ObjectFilesTable.count - 1 do begin
+        LinkRes.Add('INPUT(' + ObjectFilesTable[i] + ')');
+    end;
+
+    ObjectFilesTable.Free;
+    
 
     LinkRes.Add('INPUT(libcard.a libpress.a libgpu.a libgs.a libgte.a)');
     LinkRes.Add('INPUT(libcd.a libetc.a libsn.a libsnd.a libspu.a)');
-    LinkRes.Add('INPUT(libmath.a libcomb.a libcard.a libtap.a libsio.a)');
+    LinkRes.Add('INPUT(libmath.a libcomb.a libtap.a libsio.a)');
     LinkRes.Add('INPUT(libpad.a libc2.a libapi.a)');
 
     LinkRes.Add('SECTIONS');

+ 0 - 16
rtl/ps1/si_prc.pp

@@ -1,16 +0,0 @@
-unit si_prc;
-
-interface
-
-implementation
-
-procedure PascalMain; external name 'PASCALMAIN';
-
-{ this function must be the first in this unit which contains code }
-function _FPC_proc_start: longint; cdecl; public name '_start';
-begin
-		PascalMain;
-end; 
-
-begin
-end.