[fpc-pascal] cross-compiling
Karl-Michael Schindler
karl-michael.schindler at web.de
Sat Apr 4 22:12:16 CEST 2026
> Date: Fri, 3 Apr 2026 23:55:19 +0100
> From: Kevin Lyda <kevin at ie.suberic.net>
> To: FPC-Pascal users discussions <fpc-pascal at lists.freepascal.org>
> Subject: [fpc-pascal] Cross-compiling
> Message-ID:
> <CADJ56BTpvnJKL0Og2iKCjCfpU2DgKc=NpRX0ybG6dp2-bSQaEg at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> tl;dr Is there a docker image(s) with an fpc compiler that supports a slew
> of platforms?
>
> For April Fools Day this year I released a command.com shell for Unix[0].
> It included a version of the Turbo Pascal 3.0 "IDE" and it was released for
> a slew of platforms. This is rather easy to accomplish with the go tool -
> you just set some environment variables and it works.
>
> I'm winding down my career and have a number of fun projects in mind. My
> goal this year was to release one written in Pascal - one that would be
> fun, but also hopefully useful. But I ran out of time so I did the simpler
> Go one. Now that I've slipped the release date a year I'd like to make sure
> I can release it just as polished as I did for the silly one I did this
> year. And part of that involves releasing for all the mainstream OS's:
> linux, freebsd, openbsd, netbsd, ilumos, aix and darwin. And also all the
> mainstream architectures: riscv64, arm64, ppc, i386 and amd64. Now, fpc
> might not support all thes, but it likely supports many of them and I'd
> ideally like to build them all in one runner. I can install the forgejo
> runner on a slew of libvirt machines and configure them all, but that's a
> rather heavy solution.
>
> I'm working on building an fpc cross compiler[2] for a number of
> architectures, but am I triodding well-trodden ground? Does something like
> this already exist? I can't find anything, but maybe I'm not looking in the
> right places. What I've built[3] supports:
>
> fpc -Px86_64 -Tlinux
> fpc -Paarch64 -Tlinux
> fpc -Parm -Tlinux
> fpc -Pi386 -Tlinux
> fpc -Ppowerpc64 -Tlinux
> fpc -Pmipsel -Tlinux
> fpc -Px86_64 -Tfreebsd
> fpc -Px86_64 -Tnetbsd
> fpc -Px86_64 -Topenbsd
>
> I think I'd need to do darwin on an actual Mac and not sure what other
> architectures are supported for the *BSDs. It's a large container as it is.
>
> As an aside, if there's someone out there wanting to collaborate on a TUI
> application that would have a filesystem focus, please reach out. I'm not
> close to that part, but I might be later in the year and I've honestly
> never made one. Alternatively, if folks could suggest good tview TUI
> applications to read, that would be great.
>
> Thanks,
>
> Kevin
>
> [0]: https://codeberg.org/lyda/command-com/releases
> [1]:
> https://codeberg.org/lyda/command-com/src/branch/main/.forgejo/workflows/release.yml
> [2]: https://codeberg.org/lyda/fpc-docker
> [3]: https://codeberg.org/lyda/fpc-docker/packages
>
> --
> Kevin Lyda
> Galway, Ireland
Slightly related: I maintain the package description for Freepascal for macports, a package manager for macOS. It also includes a couple of cross-compilers. I also did this with fink, a similar package manager, but stopped doing so in favor of macports.
You can find the macports package description file here: https://github.com/macports/macports-ports/blob/master/lang/fpc/Portfile
I do not really know docker, and you may not need cross compiling, But in case, have a look at this page about binutils and complete the table, if you figured out missing platforms: https://wiki.lazarus.freepascal.org/Binutils
Have fun - Michael.
More information about the fpc-pascal
mailing list