Building the CLX with FPC
From Lazarus wiki
Jump to navigationJump to search
Introduction
There are some efforts to build the (Free)CLX with FPC, here is a short explanation how to build it. For Win32 the Delphi 7 CLX is used while on linux the Kylix 3 CLX is used.
Further, FPC from svn (2.3.1 or 2.2.1) is used.
Status
Current status is that all units except the database related units build.
That's 39 of 44 units.
Today (02.07.2007) I get perfectly compiled Qxxx units and test application (written with Kylix). fpc-2.0.4 (i386 rpm from lazarus snapshots build 20070701), fpc-2.1.5 (build 20070702) cannot do the job.
Howto
- Build and install FPC from SVN sources: How_to_start
- copy the clx sources to a newly created directory as well as the
- Win32 only: CommDlg.pas from Source/Rtl/Win/
- Win32 only: CommCtrl.pas from Source/Rtl/Win/
- Win32 only: ShlObj.pas from Source/Rtl/Win/
- Win32 only: RegStr.pas from Source/Rtl/Win/
- Win32 only: WinInet.pas from Source/Rtl/Win/
- Win32 only: UrlMon.pas from Source/Rtl/Win/
- Win32 only: WinSpool.pas from Source/Rtl/Win/
- Linux only: XLib.pas from source/rtl/linux/
- MaskUtils.pas from Source/Rtl/Common/
- Contnrs.pas from Source/Rtl/Common/
- HelpIntfs.pas from Sources/Common/
- IniFiles.pas from Source/Rtl/Common/
- Registry.pas from Source/Rtl/Common/
- Linux only: QFileCtrls.res from Lib/
and rename it to qfilectrls.res Linux only: rename DirSel.xfm to dirsel.xfm- QButtons.res from Lib/
- QDialogs.res from Lib/
- QDBCtrls.res from Lib/
- QCheckLst.res from Lib/
- QFileCtrls.res from Lib/
Linux only: rename QFileDialog.res to qfiledialog.resLinux only: rename QDialogs.res to qdialogs.resLinux only: rename QDBPWDlg.xfm to qdbpwdlg.xfmLinux only: rename QDBLogDlg.xfm to qdblogdlg.xfm
remove all references to *.xfm files, fpc can't handled them yet (fix this!!)- D7 CLX only: remove usage of sysinit namespace in qdialogs.pas; system can be used instead
replace all RTLConsts with RTLConst (fix this!!) (should be fixed after 1.9.8)- D7 CLX only: fix ShlObj.pas: the lines 3554 to 3557 miss a semicolon at the end; FPC won't emulate bugs in the Delphi parser
Linux ONLY : Add dynlibs unit after implementation (LoadLibrary & FreeLibrary needs it).Compiling with the -Sk switch should be enough- Remove sysutils from uses clause of implementation section of QStyle.pas
- 2.2.1 only:
- Change {$R *.xfm} to {$R *.res} in QFileDialog.pas
- Convert QFileDialog.xfm to resource. It can be done with fpcres utility from a 2.3.1 snapshot:
fpcres -of res QFileDialog.xfm
- create a dummy unit to build the clx:
unit buildclx; interface uses BindHelp, QDBActns, QFileCtrls, QActnList, QFileDialog, QSearch, QButtons, QForms, QStdActns, QCheckLst, QGraphics, QStdCtrls, QClipbrd, QGrids, QStyle, QComCtrls, QImgList, QTypes, QConsts, QDialogs, QMask, QControls, QExtCtrls, QMenus, Qt, QPrinters; implementation end.
- build the CLX with
fpc -Sd buildclx -Rintel
on windows and
fpc -Sdk buildclx -Rintel
on linux.
Building the DB units
Building of the DB units isn't possible yet, however, at least the following steps must be done:
- copy the following files into the directory where you put the clx source:
- DB.pas from Sources/Vcl
- SqlTimSt.pas from Sources/Vcl
- DBConsts.pas from Sources/Vcl
Todo
As you might guess, there is also stuff to do:
- The ClassGrouping functions are only dummies in FPC (StartClassGroup et al.)