diff --git a/rtl/fpmake.inc b/rtl/fpmake.inc index 10493d8bee..57a070df01 100644 --- a/rtl/fpmake.inc +++ b/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; \ No newline at end of file + AddSystemDependencies(Installer.Targets); +end; \ No newline at end of file diff --git a/rtl/fpmake.pp b/rtl/fpmake.pp index 3101bcec92..3be9407ec8 100644 --- a/rtl/fpmake.pp +++ b/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}