瀏覽代碼

* start of conversion to fpmake

git-svn-id: trunk@9687 -
peter 17 年之前
父節點
當前提交
4c54059cd7
共有 2 個文件被更改,包括 144 次插入106 次删除
  1. 18 64
      rtl/fpmake.inc
  2. 126 42
      rtl/fpmake.pp

+ 18 - 64
rtl/fpmake.inc

@@ -3,8 +3,8 @@ Const
   GraphDir = 'inc/graph/';
   SysUtilsDir = 'objpas/sysutils/';
   Unixes = [darwin,freebsd,linux,netbsd,openbsd];
-  
- 
+
+
 Function CurrentOS : String;
 
 begin
@@ -25,8 +25,8 @@ begin
   else
     Result:=IncludeTrailingPathDelimiter(CurrentOS);
 end;
-  
-  
+
+
 Function CPUDir : String;
 
 begin
@@ -69,16 +69,16 @@ Procedure AddCurrentOS(T : TTarget = Nil);
 Var
   I : Integer;
   O : TOSes;
-  
+
 begin
-  If (T<>Nil) then  
+  If (T<>Nil) then
     begin
     O:=T.OS;
     If (O<>[]) then
       Include(O,Defaults.OS)
     else
       // Don't do anything.  If empty, all will be compiled.
-    T.OS:=O;  
+    T.OS:=O;
     end
   else
     With Installer.Targets do
@@ -91,15 +91,15 @@ Procedure ExcludeCurrentOS(T : TTarget = Nil);
 Var
   I : Integer;
   O : TOSes;
-  
+
 begin
-  If (T<>Nil) then  
+  If (T<>Nil) then
     begin
     O:=T.OS;
     If (O=[]) then
       O:=AllOSs;
     Exclude(O,Defaults.OS);
-    T.OS:=O;  
+    T.OS:=O;
     end
   else
     With Installer.Targets do
@@ -115,54 +115,7 @@ Var
 begin
   With Installer.Targets do
     begin
-    DefaultOS:=AllOSs;
-    DefaultCPU:=AllCPUs;
-    { System unit. For all platforms. }
-    T:=AddUnit(OSDIR(False)+'system.pp');
-    With T.Dependencies do
-      begin
-      // Headers
-      Add(CPUDir+'setjumph.inc');
-      Add('inc/systemh.inc');
-      Add('inc/objpash.inc');
-      Add('inc/dynarrh.inc');
-      Add('inc/compproc.inc');
-      Add('inc/heaph.inc');
-      Add('inc/threadh.inc');
-      Add('inc/varianth.inc');
-      // Implementations
-      Add(CPUDir+CurrentCPU+'.inc');
-      Add(CPUDir+'set.inc');
-      Add(CPUDir+'math.inc');
-      Add(CPUDir+'int64p.inc');
-      Add(CPUDir+'setjump.inc');
-      Add(OSDir+'systhrd.inc');
-      Add(OSDir(False)+'sysos.inc');
-      Add(OSDir+'sysheap.inc');
-      Add(OSDir+'sysdir.inc');
-      Add('inc/filerec.inc');
-      Add('inc/textrec.inc');
-      Add('inc/generic.inc');
-      Add('inc/genset.inc');
-      Add('inc/genmath.inc');
-      Add('inc/sstrings.inc');
-      Add('inc/int64.inc');
-      Add('inc/astrings.inc');
-      Add('inc/wstrings.inc');
-      Add('inc/aliases.inc');
-      Add('inc/dynarr.inc');
-      Add('inc/objpas.inc');
-      Add('inc/variant.inc');
-      Add('inc/rtti.inc');
-      Add('inc/heap.inc');
-      Add('inc/thread.inc');
-      Add('inc/text.inc');
-      Add('inc/file.inc');
-      Add('inc/typefile.inc');
-      end;
-    T:=AddUnit('objpas/objpas.pp');
-    T:=AddUnit('inc/macpas.pp');
-    
+
     { Turbo Pascal RTL units }
     T:=AddUnit(OSDir+'dos.pp');
     T.Dependencies.Add('inc/dosh.inc');
@@ -190,7 +143,8 @@ begin
       Add('inc/genstr.inc');
       Add('inc/genstrs.inc');
       Add('inc/stringsi.inc');
-      end; 
+      end;
+
     { Delphi RTL units }
     T:=AddUnit('objpas/rtlconsts.pp');
     T.Resourcestrings:=True;
@@ -270,7 +224,7 @@ begin
       Add('inc/mouse.inc');
       end;
     T:=AddUnit(OSDir+'video.pp');
-    With T.Dependencies do 
+    With T.Dependencies do
       begin
       Add('inc/video.inc');
       Add('inc/videoh.inc');
@@ -279,8 +233,8 @@ begin
     T.Dependencies.Add('inc/mmatimp.inc');
     T:=AddUnit('inc/dynlibs.pp');
     T.Dependencies.Add(OSDir+'dynlibs.inc');
-    T:=AddUnit('inc/getopts.pp');    
-    T:=AddUnit('inc/cmem.pp');    
+    T:=AddUnit('inc/getopts.pp');
+    T:=AddUnit('inc/cmem.pp');
     T:=AddUnit('inc/ctypes.pp');
     T:=AddUnit('inc/softfpu.pp');
     T:=AddUnit('inc/ucomplex.pp');
@@ -290,5 +244,5 @@ begin
     T:=AddUnit('inc/charset.pp');
     // T:=AddUnit('inc/pagemem.pp');
     end;
-  AddSystemDependencies(Installer.Targets);  
-end; 
+  AddSystemDependencies(Installer.Targets);
+end;

+ 126 - 42
rtl/fpmake.pp

@@ -1,50 +1,134 @@
+{$ifndef ALLPACKAGES}
 {$mode objfpc}{$H+}
-{$define allpackages}
 program fpmake;
 
-uses sysutils,fpmkunit;
-
-{ Read RTL definitions. }
-{$i fpmake.inc}
-
-{ Unix/Posix defines }
-{$i unix/fpmake.inc}
-
-{ Load OS-specific targets and corrections }
-{$i linux/fpmake.inc}
-(*
-  {$i amiga/fpmake.inc}
-  {$i darwin/fpmake.inc}
-  {$i freebsd/fpmake.inc}
-  {$i palmos/fpmake.inc}
-  {$i emx/fpmake.inc}
-  {$i go32v2/fpmake.inc}
-  {$i morphos/fpmake.inc}
-  {$i atari/fpmake.inc}
-  {$i macos/fpmake.inc}
-  {$i netbsd/fpmake.inc}
-  {$i openbsd/fpmake.inc}
-  {$i win32/fpmake.inc}
-  {$i beos/fpmake.inc}
-  {$i netware/fpmake.inc}
-  {$i os2/fpmake.inc}
-  {$i solaris/fpmake.inc}
-*)
+uses fpmkunit;
 
 Var
   T : TTarget;
-
+  P : TPackage;
 begin
-  InitRTL(Installer);           // Define RTL package.
-  AddDefaultTargets(Installer); // Add all cross-platform units.
-  // A line must be added here when adding support for a new OS.
-  Case Installer.Defaults.OS of
-    linux : ApplyLinuxTargets(Installer);
-       
-  else
-    Raise EInstallerError.Create('OS not yet supported by makefile: '+OsToString(Defaults.OS));
-  end;  
-  Installer.EndPackage;
-  Installer.Run; // Go.
-end.
+  With Installer do
+    begin
+{$endif ALLPACKAGES}
+
+    P:=AddPackage('rtl');
+{$ifdef ALLPACKAGES}
+    P.Directory:='rtl';
+{$endif ALLPACKAGES}
+    P.Version:='2.2.0';
+
+    // Where to find the sources using firstmatch
+    P.SourcePath.Add('$(OS)');
+    P.SourcePath.Add('unix',AllUnixOSes);
+    P.SourcePath.Add('win',AllWindowsOSes);
+    P.SourcePath.Add('$(CPU)');
+    P.SourcePath.Add('inc');
+    P.SourcePath.Add('objpas');
+
+    // System unit
+    T:=P.Targets.AddUnit('system.pp');
+      T.IncludePath.Add('inc');
+      T.IncludePath.Add('$(CPU)');
+      T.IncludePath.Add('$(OS)');
+      T.IncludePath.Add('$(OS)/$(CPU)',TOSes([Linux]));
+      T.IncludePath.Add('unix',AllUnixOSes);
+      T.IncludePath.Add('win',AllWindowsOSes);
+      With T.Dependencies do
+        begin
+          // Headers
+          AddInclude('setjumph.inc');
+          AddInclude('systemh.inc');
+          AddInclude('objpash.inc');
+          AddInclude('dynarrh.inc');
+          AddInclude('compproc.inc');
+          AddInclude('heaph.inc');
+          AddInclude('threadh.inc');
+          AddInclude('varianth.inc');
+          // Implementations
+          AddInclude('$(CPU).inc');
+          AddInclude('set.inc');
+          AddInclude('math.inc');
+          AddInclude('int64p.inc');
+          AddInclude('setjump.inc');
+          AddInclude('systhrd.inc');
+          AddInclude('sysos.inc');
+          AddInclude('sysheap.inc');
+          AddInclude('sysdir.inc');
+          AddInclude('filerec.inc');
+          AddInclude('textrec.inc');
+          AddInclude('generic.inc');
+          AddInclude('genset.inc');
+          AddInclude('genmath.inc');
+          AddInclude('sstrings.inc');
+          AddInclude('int64.inc');
+          AddInclude('astrings.inc');
+          AddInclude('wstrings.inc');
+          AddInclude('aliases.inc');
+          AddInclude('dynarr.inc');
+          AddInclude('objpas.inc');
+          AddInclude('variant.inc');
+          AddInclude('rtti.inc');
+          AddInclude('heap.inc');
+          AddInclude('thread.inc');
+          AddInclude('text.inc');
+          AddInclude('file.inc');
+          AddInclude('typefile.inc');
+        end;
 
+    // Compile mode units
+    T:=P.Targets.AddUnit('objpas.pp');
+      T.Dependencies.AddUnit('system');
+    T:=P.Targets.AddUnit('macpas.pp');
+      T.Dependencies.AddUnit('system');
+
+    // Unix units
+    T:=P.Targets.AddUnit('unixtype.pp',AllUnixOSes);
+      T.IncludePath.Add('$(OS)/$(CPU)',TOSes([Linux]));
+      T.IncludePath.Add('$(OS)');
+      T.IncludePath.Add('unix');
+      With T.Dependencies do
+        begin
+          AddUnit('system');
+        end;
+    T:=P.Targets.AddUnit('baseunix.pp',AllUnixOSes);
+      T.IncludePath.Add('$(OS)/$(CPU)',TOSes([Linux]));
+      T.IncludePath.Add('$(OS)');
+      T.IncludePath.Add('unix');
+      T.IncludePath.Add('inc');
+      With T.Dependencies do
+        begin
+          AddUnit('unixtype');
+        end;
+
+    // Turbo Pascal RTL units
+    T:=P.Targets.AddUnit('dos.pp');
+      With T.Dependencies do
+        begin
+          AddUnit('baseunix',AllUnixOSes);
+          AddInclude('inc/dosh.inc');
+        end;
+    T:=P.Targets.AddUnit('crt.pp');
+      With T.Dependencies do
+        begin
+          AddUnit('baseunix',AllUnixOSes);
+          AddInclude('inc/crth.inc');
+        end;
+    T:=P.Targets.AddUnit('strings.pp');
+      T.IncludePath.Add('$(CPU)');
+      T.IncludePath.Add('inc');
+      With T.Dependencies do
+        begin
+          AddUnit('system');
+          AddInclude('strings.inc');
+          AddInclude('stringss.inc');
+          AddInclude('genstr.inc');
+          AddInclude('genstrs.inc');
+          AddInclude('stringsi.inc');
+        end;
+
+{$ifndef ALLPACKAGES}
+    Run;
+    end;
+end.
+{$endif ALLPACKAGES}