Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus / 2012-04

Compiling Win 64 bit LCL only with 32 bit IDE+cross compiler

4 messages · 2 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Reinier Olislagers

Hi list,

Triggered by Mattias' improvements in the make environment, I tried to incorporate support in fpcup.

Goal: on Windows compile 32bit LCL+IDE; also compile 64 bit LCL with x64 cross compiler so users can immediately compile for x64 targets.

Method 1: originally I just did something like
make ide "CPU_TARGET=x86_64" "OS_TARGET=win64"
then
make ide
... which creates first a 64 bit LCL+IDE, then a 32 bit LCL+IDE... It worked but was clunky.

Method 2: I had tried the "-C" "lcl/interfaces/win32" approach, but that didn't work either.... probably because I needed to take the dependencies into account

Method 3: I'm now trying someting like this:
make "CPU_TARGET=x86_64" "OS_TARGET=win64" "registration" "lazutils" "lcl" ...list of dependencies taken from
http://wiki.lazarus.freepascal.org/Getting_Lazarus#Make_parameters

but I get
Compiling fcllaz.pas
Compiling registerfcl.pas
Compiling lazaruspackageintf.pas
PPU Loading
C:\development\fpc\units\x86_64-win64\fcl-extra\ServiceManager.ppu Recompiling ServiceManager, checksum changed for System registerfcl.pas(43,3) Fatal: Can't find unit ServiceManager used by RegisterFCL
Fatal: Compilation aborted

What would be the right way to achieve my goal?
Would it perhaps be possible to let make LCL automatically pull in its dependencies?

Thanks,
Reinier

Reply by email

Reinier Olislagers
to Reinier Olislagers
Reinier Olislagers wrote 20 lines
Method 3: I'm now trying someting like this: make "CPU_TARGET=x86_64" "OS_TARGET=win64" "registration" "lazutils" "lcl" ...list of dependencies taken from http://wiki.lazarus.freepascal.org/Getting_Lazarus#Make_parameters but I get Compiling fcllaz.pas Compiling registerfcl.pas Compiling lazaruspackageintf.pas PPU Loading C:\development\fpc\units\x86_64-win64\fcl-extra\ServiceManager.ppu Recompiling ServiceManager, checksum changed for System registerfcl.pas(43,3) Fatal: Can't find unit ServiceManager used by RegisterFCL Fatal: Compilation aborted What would be the right way to achieve my goal? Would it perhaps be possible to let make LCL automatically pull in its dependencies?

Mmm... deleting all ppu files helped.

It at least compiles with fixes 2.6 - not with trunk, though: Compiling treefilteredit.pas
treefilteredit.pas(28,48) Fatal: Internal error 2011090501 TExternalToolList.Run Exception:
C:\development\lazarus_fpctrunk\components\lazcontrols\treefilteredit.pas(28,48) Fatal: Internal error 2011090501
ERROR: tool reported error

The user will still trigger a recompile of the LCL when compiling his first x64 application though...

Thanks,
Reinier

Reply by email

Mattias Gaertner
to Reinier Olislagers
Show quoted text 18 lines
On 23-4-2012 12:28, Reinier Olislagers wrote: > Method 3: I'm now trying someting like this: > make "CPU_TARGET=x86_64" "OS_TARGET=win64" "registration" "lazutils" "lcl" > ...list of dependencies taken from > http://wiki.lazarus.freepascal.org/Getting_Lazarus#Make_parameters > > but I get > Compiling fcllaz.pas > Compiling registerfcl.pas > Compiling lazaruspackageintf.pas > PPU Loading > C:\development\fpc\units\x86_64-win64\fcl-extra\ServiceManager.ppu > Recompiling ServiceManager, checksum changed for System > registerfcl.pas(43,3) Fatal: Can't find unit ServiceManager used by > RegisterFCL > Fatal: Compilation aborted > > What would be the right way to achieve my goal?

This should work

make clean CPU_TARGET=x86_64 OS_TARGET=win64
make clean all useride
lazbuild.exe --os=win64 --cpu=x86_64 lcl\interfaces\lcl.lpk

Of course you need to have a 64bit compiler installed properly.

> Would it perhaps be possible to let make LCL automatically pull in its > dependencies?

lazbuild does that.

Show quoted text 12 lines
Mmm... deleting all ppu files helped. It at least compiles with fixes 2.6 - not with trunk, though: Compiling treefilteredit.pas treefilteredit.pas(28,48) Fatal: Internal error 2011090501 TExternalToolList.Run Exception: C:\development\lazarus_fpctrunk\components\lazcontrols\treefilteredit.pas(28,48) Fatal: Internal error 2011090501 ERROR: tool reported error The user will still trigger a recompile of the LCL when compiling his first x64 application though...

Mattias

Reply by email

Reinier Olislagers
to Mattias Gaertner
Mattias Gaertner wrote 7 lines
This should work make clean CPU_TARGET=x86_64 OS_TARGET=win64 make clean all useride lazbuild.exe --os=win64 --cpu=x86_64 lcl\interfaces\lcl.lpk Of course you need to have a 64bit compiler installed properly.

Thanks, Mattias, using lazbuild seems to work ok.

Reply by email