CrossFPC

About

Welcome to CrossFPC, a free toolkit to integrate the FreePascal compiler, targetting various OS and hardware platforms, as a cross-compiler into the Embarcadero® Delphi® IDE.

Using an integrated toolchain, CrossFPC enables you to cross-compile your Windows® Delphi® applications to 32 bit and 64 bit native Linux applications for X86, Linux ARM and Android without ever leaving the IDE. In addition you can compile 64 Bit Windows applications. CrossFPC also runs in a stand-alone not requiring any Delphi IDE, and can be used as an easy cross-build tool for FPC / Lazarus users.

This project was created for people who wish to develop cross-platform applications with Delphi while staying inside the familar Delphi IDE. The project is best suited for usage in console and web applications and embedded projects. The typical work process looks like that you develop, debug and test your application under windows, and then cross-compile it to the deployment platforms with a single click. For now, Visual VCL or CLX applications are not supported. The project is therefore best suited for embedded applications and applications that do not use a standard OS GUI. Today, CrossFPC mostly is used to develop cross-platform embedded applications, for example digital gadgets, and to create multimedia apps and games for ARM-based platforms like mobile handsets. Today, CrossFPC for example is used to write applications used on plug computers like the SheevaPlug or to develop application servers deployed on Linux server systems in data centers.

CrossFPC was born due to the fact that during the last 10 years, Borland® and later Embarcadero have failed to provide Linux plattform support for the Object Pascal language after the Kylix® product line was declared dead. Since 2005, CrossFPC and its discontinued sister project CrossKylix are used internally for R&D for some rather large projects by their authors, and therefore can be regarded production quality. Now, in (very) late 2012 we finally invested some time to clean up the project, write a tiny bit of documentation, clean up licenses and get the project in shape for a public release.

It should be understood that CrossFPC is not meant as a replacement or competition for neither Embarcadero (hopefully finally) upcoming cross-platform offerings, nor for the excellent Lazarus tool chain. CrossFPC fills a niche - people who wish to do their R&D work completely under Windows inside the Delphi IDE, but would like to also natively target other hardware and OS platforms while doing so. There are situations where such a cross-compiler based work-flow makes sense, but there are also situations where it makes much more sense to adapt and compile applications on the target platform itself (which is the Lazarus approach).

Features

CrossFPC has the following features:

Supported target platforms

CrossFPC will constantly try to add more useful target platforms. For now, the following platforms are supported:

How it works

We've built cross-compiler versions of the FPC compiler and binutils and cross-compiled all FPC RTL units for all supported platforms. We've then integrated these cross-compilers into the Delphi IDE using IDE plug-ins we wrote.

Things still to come

CrossFPC is used for years internally, and was designed to suit the authors needs only. Now that we have done a public release it is our intention to maintain this project and keep our internal versions and the public one in sync. You may therefore expect frequent updates. No, the next update won't take 7 years to come. Things currently being worked on:

Requirements and Download

The following things are needed to use CrossFPC:

Download CrossFPC v0.43 installer (241 MB)

Installation

Close any Delphi IDE instances you have opened. Then just launch the setup program which will guide you through the installation. After the installation has finished, restart the Delphi IDE. CrossFPC can now be configured using Tools / CrossFPC options inside the Delphi® IDE.

Hints & Limitations

Here are a few hints and tips for using CrossFPC:

Compatible 3rd party components

In general all software components that are compatible with both Delphi and FreePascal will also work with CrossFPC. Also, next to all components designed for Kylix will work with minimal changes.

The following third-party components are tested and known to work with CrossFPC

License

The short and simple version is: You may use CrossFPC and the included libraries both in commercial closed-source software and of course in open-source products. You may however not create your own distribution of CrossFPC itself.

The longer explanation is:

Version history

Here is a list of recent changes to the project:

So, we did it take us 7 years to get a public release done? Well, the project serves a niche, and was created out of own needs only when we needed to support additional Linux hardware platforms and CrossKylix alone just did not cut it anymore. The project however had been in an unclean state, and we never quite felt the urge to clean it up and release it. But in late 2012 we decided to finally no longer ignore the continuous emails requesting a public release, so we finally took some time to clean this up and bring it into a shape suitable for public release. For the future we plan to keep our internal versions and the public one in sync, so you may expect frequent updates.

CrossFPC application deployment

Applications compiled with CrossFPC are statically linked and do not have any special deployment requirements. Copy the compiled binary to a Linux box, mark the file executable and run it.

Mailing list

For discussion and peer support, a mailing list exists.

Please understand that this software is provided for free "as is", and that the authors are not offering any product support, neither free nor commercial.