Difference between revisions of "FPMake revamp"

From Lazarus wiki
Jump to navigationJump to search
Line 5: Line 5:
 
This document is a place to gather basic design-principles and other ideas for the new version. It is all work-in-progress and input is very welcome.
 
This document is a place to gather basic design-principles and other ideas for the new version. It is all work-in-progress and input is very welcome.
  
== Basic principles ==
+
== Basic design principles ==
  
 
=== Keep it simple ===
 
=== Keep it simple ===
Line 17: Line 17:
 
* etc
 
* etc
  
== Clear separation of responsibilities ==
+
=== Clear separation of responsibilities ===
 +
 
 +
=== Separation between build, target and host ===
 +
 
 +
The original fpmake only dealt with the '''target'' (cpu, abi and operating system) and only implicitly the '''build''' system. Now fpmake differentiates between the '''build'''-system (on which the system is running), the '''host''' system (on which the created compiler is running) and the '''target''' system, for which the compiler will create code.

Revision as of 21:17, 24 July 2022

Template:FPmake

FPMake is a build-system for Pascal code specifically. It can use a make-over, though.

This document is a place to gather basic design-principles and other ideas for the new version. It is all work-in-progress and input is very welcome.

Basic design principles

Keep it simple

One of the things that makes fpmake so complex, is that it tries to do everything that it's predecessors also did. And tries to accommodate all kind of different package-designs as possible. The new version will not do this any more. Other package-managers (yarn, npm) and their onderlying build-systems show that enforcing one design is easier, and in the long term also more feasible.

This means:

  • No functionality to adapt the location of .ppu, .o, .frs, binaries, help-files, tests or any other files. (The UnitInstallDir, UnitConfigFilesInstallDir etc)
  • No need anymore for macro's ($(target) and such)
  • Options to do all kind of fancy stuff, like copying files around, calling external applications, zipping files are removed or limited. So they are not tempted to create their own packages-layouts.
  • etc

Clear separation of responsibilities

Separation between build, target and host

The original fpmake only dealt with the target (cpu, abi and operating system) and only implicitly the build' system. Now fpmake differentiates between the build-system (on which the system is running), the host system (on which the created compiler is running) and the target system, for which the compiler will create code.