[Lazarus] How to use two different versions of FPC

Joost van der Sluis joost at cnoc.nl
Thu May 10 14:31:26 CEST 2018


Op 10-05-18 om 14:05 schreef Giuliano Colla via Lazarus:
> Il 09/05/2018 12:34, Joost van der Sluis via Lazarus ha scritto:
>> That's more a hack then a solution
> 
> I fail to grasp why startlazarus should be a feature, and fpc.sh should 
> be a hack.

Startlazarus is also a hack, because on Windows you can not overwrite an 
executable which is open and the design is kept consistent between OS'es.

You can perfectly fine use just 'lazarus' on Linux, I never use 
'startlazarus'.

> Having multiple fpc.cfg files, as it may be required by multiple fpc 
> installations requires invoking the compiler with the appropriate 
> parameters. A script is just the most comfortable way to achieve this 
> result.

This is not true. And it amazes me that people think that. I've never 
understood the use of scripts like 'fpcup'. Multiple fpc installations 
do not need any command-line parameters. Not at all. None.

Believe me. Due to fpc's multi-platform nature the core developers have 
had multiple versions on their systems from the beginning. And then it 
is really annoying to have all kind of parameters to start the compiler. 
So there are several solutions for that build into fpc itself. One such 
feature is the 'fpc' binary, which calls the proper compiler 'ppcx64', 
'ppc386' etc.

Another feature is the system that checks for the proper 
configuration-files.

But it is even possible to use one fpc.cfg configuration file for 
multiple fpc-versions. This is even the default-setup!

Don't believe me? Take a look at the default fpc.cfg, it contains lines 
like: "Fu/usr/lib/fpc/$fpcversion/units/$fpctarget"

Why do you think the $fpcversion and $fpctarget macros are there? 
Because it is impossible to keep two versions of fpc installed alongside 
each other?

> Launching an executable via another program or a script which sets up 
> the appropriate environment according the user needs is a standard well 
> established practice, since the dawn of Unix.

Oh, you may do so. But it is unnecessary and confusing in the fpc-case. 
Off-course you can configure Lazarus to use fpc.sh. But what do you do 
in a terminal? Wouldn't it be easier to just call 'fpc_304' and 
'fpc_trunk'? Or /path/to/compiler/versiona/fpc and 
/path/to/compiler/versionb/fpc?

Believe me when I say that most fpc-developers have really difficult 
setups, which a lot of different versions of fpc installed. And they do 
not use scripts like fpcup. They also don't type magically looking 
command lines. They use just the features already build into the compiler.

Imho the only reason that people are using fpcup is because when they 
have a problem or question about how to setup fpc, people on the forum 
and mailinglist always come with the solution: use fpcup. Instead of 
explaining how they can set it up themselves.

(On linux: Just install both the 3.0.4 and 3.0.2 rpm, and they will run 
nicely along each other.)

Regards,

Joost.


More information about the Lazarus mailing list