mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-25 17:49:55 +02:00
* start of conversion to fpmake
git-svn-id: trunk@9687 -
This commit is contained in:
parent
63258c61fe
commit
4c54059cd7
@ -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;
|
168
rtl/fpmake.pp
168
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}
|
||||
|
Loading…
Reference in New Issue
Block a user