Building the CLX with FPC

From Lazarus wiki
Revision as of 20:44, 8 March 2006 by FPK (talk | contribs) (Reverted edit of Rd10210261, changed back to last version by FPK)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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 2.1.1 from svn is used.

Status

Current status is that all units except the database related units build.

That's 39 of 44 units.

Howto

  • Build and install FPC from CVS 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/
    • 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/
    • Linux only: rename QFileDialog.res to qfiledialog.res
    • Linux only: rename QDialogs.res to qdialogs.res
    • Linux only: rename QDBPWDlg.xfm to qdbpwdlg.xfm
    • Linux only: rename QDBLogDlg.xfm to qdblogdlg.xfm
    • QFileDialog.res from Lib/
    • QCheckLst.res from Lib/
  • 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
  • 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.)