Sign in Join
Wiki copytemporary

fpcupdeluxe: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## Overview
22
33![](/wiki-images/3/38/Fpcupdeluxe.png)
44
55**FPCUPdeluxe** is a GUI installer for FPC and Lazarus. It's based on [[fpcup]].
66
77- [GitHub repository](https://github.com/LongDirtyAnimAlf/fpcupdeluxe)
88- [Latest releases on GitHub](https://github.com/LongDirtyAnimAlf/fpcupdeluxe/releases/latest)
99- [Lazarus Forum Topic](https://forum.lazarus.freepascal.org/index.php/topic,34645.0.html)
1010
1111## Installation of FPC and Lazarus
1212
1313The main purpose of fpcdeluxe is to provide a means for installing and updating multiple versions of FPC and Lazarus in a self-contained manner. Self-contained meaning that an install by fpcupdeluxe will have no influence on (interference with) your system: Hence you can install multiple versions of FPC and Lazarus.
1414
1515In order to have the installation working **you MUST use the generated link to start the install** !
1616
1717That launcher link contains a line like:
1818
19-`Exec=/P/s/lazarus/lazarus --pcp="/P/s/config_lazarus"`
19+```text
20+Exec=/P/s/lazarus/lazarus --pcp="/P/s/config_lazarus"
21+```
2022
2123directing Lazarus to use the [[pcp]] , i.e. **primary configuration** setting **path** of "/P/s/config_lazarus" or a similar subdir under /home/ depending on you choice made from the GUI. No fpc or anything is required in the searchpath.
2224
2325### Prerequisites
2426
2527#### Debian, Raspbian, Mint gtk2
2628
2729actual working with Debian Buster and Raspbian Buster
2830
2931``` bash
3032#!/bin/bash
3133sudo apt-get update
3234sudo apt-get upgrade
3335
3436# Missing Packages
3537sudo apt-get install libx11-dev
3638sudo apt-get install libgdk-pixbuf2.0-dev
3739sudo apt-get install libpango1.0-dev
3840sudo apt-get install libgtk2.0-dev
3941
4042# if gdb is not installed (eg. Lubuntu)
4143sudo apt-get install gdb
4244
4345# GIT is the new SVN
4446sudo apt-get install git
4547```
4648
4749#### Debian qt5
4850
4951``` bash
5052#!/bin/bash
5153sudo apt-get update
5254sudo apt-get upgrade
5355
5456# Missing Packages
5557sudo apt install libqt5pas-dev
5658
5759# GIT is the new SVN
5860sudo apt-get install git
5961```
6062
6163See [[Qt5 Interface|Qt5_Interface#Linux]]
6264
6365#### Raspbian on RPi2
6466
6567You need to extend the swap see [[Lazarus on Raspberry Pi]]
6668
6769## Advanced settings
6870
6971![](/wiki-images/9/99/Fpcupdeluxe_advanced.png)
7072
7173The above screenshot (click Setup+ on mainscreen) shows the advanced settings of FPCUPdeluxe.
7274
7375Some examples of advanced settings:
7476
7577- for debugging FPC itself, add "-g -gl -O-" into the "FPC options" field.
7678- to apply a fix for FreeBSD x64 cross-compiler (which fixes FileExists/DirectoryExists functions on FreeBSD 12), press "Add FPC patch" and browse for relevant patch file.
7779
7880## Cross-compiling
7981
8082FPCUPdeluxe makes cross-compiling easy: activate "cross" UI tab, select a CPU and an OS, and press "Install compiler". If libraries and/or binary tools are needed, fpcupdeluxe will try to get them online.
8183
8284Use the link to see what is available at the moment:
8385
8486- [Linux 64bit binary toolchains](https://github.com/newpascal/fpcupdeluxe/releases/tag/linuxx64crossbins_v1.0)
8587- [Linux 32bit binary toolchains](https://github.com/newpascal/fpcupdeluxe/releases/tag/linuxi386crossbins_v1.0)
8688- [Windows binary toolchains](https://github.com/newpascal/fpcupdeluxe/releases/tag/wincrossbins_v1.0)
8789- [System libraries](https://github.com/newpascal/fpcupdeluxe/releases/tag/crosslibs_v1.0)
8890
8991### Cross-compiling from Windows and Linux towards Darwin: the hard way
9092
9193With the help of fpcupdeluxe, NewPascal or FPC trunk, and a toolset called osxcross/cctools-port, you can crosscompile towards Darwin. This help will concentrate on manually setting up crossing from Windows/Linux towards Darwin (fpcupdeluxe can also do all the auto-magic for you for crossing towards Darwin; see above).
9294
9395First, you will need to get osxcross/cctools-port, and compile it yourself.
9496
9597- [osxcross original](https://github.com/tpoechtrager/osxcross)\
9698 [osxcross for FPC](https://github.com/LongDirtyAnimAlf/osxcross)
9799- [cctools-port original](https://github.com/tpoechtrager/cctools-port)\
98100 [cctools-port for FPC](https://github.com/LongDirtyAnimAlf/cctools-port)
99101
100102For macOS, you will need the [osxcross for FPC](https://github.com/LongDirtyAnimAlf/osxcross) that has been adapted for use by FPC.
101103
102104For iOS/iPhone, you will need the [cctools-port for FPC](https://github.com/LongDirtyAnimAlf/cctools-port) that has been adapted for use by FPC.
103105
104106Get yourself a SDK, either from your own Mac, or from online sources: [Various Mac SDK's](https://github.com/phracker/MacOSX-SDKs/releases)
105107
106108SDKs for iPhone can also be obtained from online sources: [Various iPhone SDK's](https://github.com/theos/sdks)
107109
108110Build osxcross/cctools-port according to the instructions. For example, on Windows with Cygwin.
109111
110112> **Note:** Please note: to be able to cross from Windows towards Darwin, you need to have NewPascal or FPC trunk installed !
111113
112114Use fpcupdeluxe to install NewPascal or FPC trunk.
113115
114116Before building the cross-compiler, you need to inform fpcupdeluxe where to find the Darwin libs (SDK) and the binary tools (build by osxcross/cctools-port). The two screenshot below show how to proceed:
115117
116118- Choose a CPU-type and an OS (Darwin). Select custom. You should now be able to use the buttons and point fpcupdeluxe to the right locations.
117119
118120![Point fpcupdeluxe towards the library location](/wiki-images/f/f5/Fpcupdeluxe_darwinlibs.JPG) ![Point fpcupdeluxe towards the binary tools location](/wiki-images/3/31/Fpcupdeluxe_darwinbins.JPG)
119121
120122- Now, on the mainscreen, you can select your CPU and OS (Darwin) and build the cross-compiler !
121123- **Again, fpcupdeluxe also has pre-built tools for crossing towards Darwin: using the fpcupdeluxe-auto-magic will be the easiest !!!**
122124
123125### Caveats, observations, troubleshooting
124126
125127- It was observed, that **f.** often times works on first run on an empty install dir, but subsequents runs, i.e. in order to add controls to the pallette, add the .chm [[help]] system asf., often times fail. In case of failure to recompile / [[make]] the IDE, the Lazarus binary may be gone, so unless you made a file backup earlier, you cannot start Lazarus anymore.
126128- copy and save the logfile for reference / troubleshoot.
127129- adding the [[help]] system is easy: just tag it under "advanced settings", saving some manual labour.
128130- it takes about 10 minutes to make a full new install of fpc + Laz.
129131- try out new --pcp settings to get a feeling for it, you can always delete the config and start anew (save the pristine fresh content of the --pcp dir right after install).
130132- Sometimes, fpcupdeluxe hangs when it cannot download OpenSSL library. It's chicken-egg problem - OpenSSL is needed to download from https, so fpcupdeluxe cannot download OpenSSL without OpenSSL. Fpcupdeluxe has its strategy to overcome this, but sometimes it fails. Then, try this workaround - in fpcupdeluxe go to "Extras" tab and click on "get OpenSSL by browser", then unpack the downloaded file to fpcupdeluxe folder (where fpcupdeluxe.exe is located). Now, try again.
131133
132134## Launching an installed Lazarus and fpc instance
133135
134136For launching the Lazarus GUI, a script is created (in the users home directory) and a launcher (on the desktop) which opens Lazarus with the correct config path & environment. Example, on Linux if installing to a folder named "/home/user/trunk", fpcupdeluxe creates:
135137
136-` /home/user/Desktop/Lazarus_trunk.desktop (launcher)`\
137-` /home/user/Lazarus_trunk  (shell script)`
138+```text
139+ /home/user/Desktop/Lazarus_trunk.desktop (launcher)
140+ /home/user/Lazarus_trunk (shell script)
141+```
138142
139143For Linux FPC/lazbuild command line work the following shell script can be used (assumes a bash shell and using example install dir of "/home/user/trunk"):
140144
141145``` bash
142146 #!/bin/sh
143147 # fpcupdeluxe: FPC home startlink script
144148 export PATH="/home/user/trunk/fpc/bin/x86_64-linux:/home/user/trunk/lazarus:${PATH}"
145149 export PPC_CONFIG_PATH="/home/user/trunk/fpc/bin/x86_64-linux"
146150 exec /bin/bash
147151```
148152
149153Windows equivalent batch file for setting up environment for working from command line (using example install dir of "f:\trunk"):
150154
151155```batch
152156 REM fpcupdeluxe: FPC home startlink script
153157 SET PATH=F:\trunk\fpc\bin\x86_64-win64;F:\trunk\lazarus;%PATH%
154158 SET PPC_CONFIG_PATH=F:\trunk\fpc\bin\x86_64-win64
155159 cmd.exe
156160```
157161
158162> **Note:** Setting the paths this way is not global and only effects the current terminal shell and child shells.
159163
160164## clang compilation error
161165
162166On compiling for macOS target on Linux, you can see this error:
163167
164-`clang: error: invalid version number in '-target arm64-apple-macosx11.0.0'`
168+```text
169+clang: error: invalid version number in '-target arm64-apple-macosx11.0.0'
170+```
165171
166172Usually it happens on old systems, e.g. Ubuntu 20.04. This is fixable.
167173
168174- Install package "clang-12" in package manager
169175- Go to /usr/bin and see all clang* symlinks. "clang" is symlink to Clang-10, and "clang-12" is symlink to Clang-12. Adjust symlinks so that "clang" points to Clang-12.
170176
171177 user@PC:~$ ls -l /usr/bin/clang*
172178 lrwxrwxrwx 1 root root 24 ноя 7 22:00 /usr/bin/clang -> ../lib/llvm-12/bin/clang
173179 lrwxrwxrwx 1 root root 26 мар 20 2020 /usr/bin/clang++ -> ../lib/llvm-10/bin/clang++
174180 lrwxrwxrwx 1 root root 26 апр 20 2020 /usr/bin/clang++-10 -> ../lib/llvm-10/bin/clang++
175181 lrwxrwxrwx 1 root root 24 апр 20 2020 /usr/bin/clang-10 -> ../lib/llvm-10/bin/clang
176182 lrwxrwxrwx 1 root root 26 мар 8 2022 /usr/bin/clang++-12 -> ../lib/llvm-12/bin/clang++
177183 lrwxrwxrwx 1 root root 24 мар 8 2022 /usr/bin/clang-12 -> ../lib/llvm-12/bin/clang
178184 lrwxrwxrwx 1 root root 28 апр 20 2020 /usr/bin/clang-cpp-10 -> ../lib/llvm-10/bin/clang-cpp
179185 lrwxrwxrwx 1 root root 28 мар 8 2022 /usr/bin/clang-cpp-12 -> ../lib/llvm-12/bin/clang-cpp
180186
181187## External links
182188
183189- See in depth guide for *BUILD / MAKE*: [Build FAQ](http://www.stack.nl/~marcov/buildfaq.pdf)
184190- [Fpcup by Reinier](http://wiki.lazarus.freepascal.org/fpcup)
185191- [Fpcupdeluxe source](https://github.com/newpascal/fpcupdeluxe)
186192- [Latest release](https://github.com/newpascal/fpcupdeluxe/releases/latest)
187193- [NewPascal](http://newpascal.org)
188194
189195---
190196*From the Free Pascal wiki, page "fpcupdeluxe", as it stood on 2023-11-08 after a change by Alextpp, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history