Sign in Join
Wiki copytemporary

fpcupdeluxe: what changed

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

OldNewLine
1-## Overview
2-
3-![](/wiki-images/3/38/Fpcupdeluxe.png)
4-
5-**FPCUPdeluxe** is a GUI installer for FPC and Lazarus. It's based on [[fpcup]].
1+**FPCUPdeluxe** is a GUI installer for FPC and Lazarus. It's based on [[fpcup]].
62
7-- [GitHub repository](https://github.com/LongDirtyAnimAlf/fpcupdeluxe)
8-- [Latest releases on GitHub](https://github.com/LongDirtyAnimAlf/fpcupdeluxe/releases/latest)
9-- [Lazarus Forum Topic](https://forum.lazarus.freepascal.org/index.php/topic,34645.0.html)
3+ * [GitHub repository](<https://github.com/LongDirtyAnimAlf/fpcupdeluxe>)
4+ * [Latest releases on GitHub](<https://github.com/LongDirtyAnimAlf/fpcupdeluxe/releases/latest>)
5+ * [Lazarus Forum Topic](<https://forum.lazarus.freepascal.org/index.php/topic,34645.0.html>)
106
117## Installation of FPC and Lazarus
128
13-The 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.
14-
15-In order to have the installation working **you MUST use the generated link to start the install** !
9+The 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.
1610
17-That launcher link contains a line like:
11+In order to have the installation working **you MUST use the generated link to start the install** !
1812
19-```text
13+That launcher link contains a line like:
14+```
2015Exec=/P/s/lazarus/lazarus --pcp="/P/s/config_lazarus"
2116```
2217
23-directing 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.
18+directing 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.
2419
2520### Prerequisites
2621
2722#### Debian, Raspbian, Mint gtk2
2823
29-actual working with Debian Buster and Raspbian Buster
24+actual working with Debian Buster and Raspbian Buster
25+```
26+#!/bin/bash
27+ sudo apt-get update
28+ sudo apt-get upgrade
29+
30+ # Missing Packages
31+ sudo apt-get install libx11-dev
32+ sudo apt-get install libgdk-pixbuf2.0-dev
33+ sudo apt-get install libpango1.0-dev
34+ sudo apt-get install libgtk2.0-dev
35+
36+ # if gdb is not installed (eg. Lubuntu)
37+ sudo apt-get install gdb
38+
39+ # GIT is the new SVN
40+ sudo apt-get install git
41+```
3042
31-``` bash
43+#### Debian qt5
44+```
3245#!/bin/bash
33-sudo apt-get update
34-sudo apt-get upgrade
46+ sudo apt-get update
47+ sudo apt-get upgrade
48+
49+ # Missing Packages
50+ sudo apt install libqt5pas-dev
51+
52+ # GIT is the new SVN
53+ sudo apt-get install git
54+```
3555
36-# Missing Packages
37-sudo apt-get install libx11-dev
38-sudo apt-get install libgdk-pixbuf2.0-dev
39-sudo apt-get install libpango1.0-dev
40-sudo apt-get install libgtk2.0-dev
56+See [[Qt5 Interface|Qt5_Interface#Linux]]
4157
42-# if gdb is not installed (eg. Lubuntu)
43-sudo apt-get install gdb
58+#### ALT Linux Sisyphus
4459
45-# GIT is the new SVN
46-sudo apt-get install git
60+Actual working with Alt Linux p11.
4761```
48-
49-#### Debian qt5
50-
51-``` bash
5262#!/bin/bash
53-sudo apt-get update
54-sudo apt-get upgrade
55-
56-# Missing Packages
57-sudo apt install libqt5pas-dev
63+ sudo apt-get update
64+ sudo apt-get dist-upgrade
65+
66+ # Missing Packages
67+ sudo apt-get install libX11-devel
68+ sudo apt-get install libgdk-pixbuf-devel
69+ sudo apt-get install libpango-devel
70+ sudo apt-get install libgtk+2-devel
71+
72+ # gdb
73+ sudo apt-get install gdb
74+
75+ # GIT
76+ sudo apt-get install git
77+```
5878
59-# GIT is the new SVN
60-sudo apt-get install git
79+In one line
6180```
81+#!/bin/bash
82+ sudo apt-get update && apt-get dist-upgrade
83+
84+ # Missing Packages
85+ sudo apt-get install libX11-devel libgdk-pixbuf-devel libpango-devel libgtk+2-devel gdb git
86+```
6287
63-See [[Qt5 Interface|Qt5_Interface#Linux]]
88+For p10, there is no default binutils required for the assembler. So you need to install this package:
89+```
90+sudo apt-get install binutils
91+```
6492
6593#### Raspbian on RPi2
6694
6795You need to extend the swap see [[Lazarus on Raspberry Pi]]
6896
6997## Advanced settings
7098
71-![](/wiki-images/9/99/Fpcupdeluxe_advanced.png)
99+[![](/wiki-images/1/1e/fpcupdeluxe_advanced.png)](</File:fpcupdeluxe_advanced.png>)
72100
73-The above screenshot (click Setup+ on mainscreen) shows the advanced settings of FPCUPdeluxe.
101+[](</File:fpcupdeluxe_advanced.png> "Увеличить")
74102
75-Some examples of advanced settings:
103+FPCUPdeluxe advanced settings screen
76104
77-- for debugging FPC itself, add "-g -gl -O-" into the "FPC options" field.
78-- 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.
105+The above screenshot (click Setup+ on mainscreen) shows the advanced settings of FPCUPdeluxe.
79106
107+Some examples of advanced settings:
108+
109+ * for debugging FPC itself, add "-g -gl -O-" into the "FPC options" field.
110+ * 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.
111+
80112## Cross-compiling
81113
82-FPCUPdeluxe 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.
114+FPCUPdeluxe 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.
83115
84-Use the link to see what is available at the moment:
116+Use the link to see what is available at the moment:
85117
86-- [Linux 64bit binary toolchains](https://github.com/newpascal/fpcupdeluxe/releases/tag/linuxx64crossbins_v1.0)
87-- [Linux 32bit binary toolchains](https://github.com/newpascal/fpcupdeluxe/releases/tag/linuxi386crossbins_v1.0)
88-- [Windows binary toolchains](https://github.com/newpascal/fpcupdeluxe/releases/tag/wincrossbins_v1.0)
89-- [System libraries](https://github.com/newpascal/fpcupdeluxe/releases/tag/crosslibs_v1.0)
118+ * [Linux 64bit binary toolchains](<https://github.com/newpascal/fpcupdeluxe/releases/tag/linuxx64crossbins_v1.0>)
119+ * [Linux 32bit binary toolchains](<https://github.com/newpascal/fpcupdeluxe/releases/tag/linuxi386crossbins_v1.0>)
120+ * [Windows binary toolchains](<https://github.com/newpascal/fpcupdeluxe/releases/tag/wincrossbins_v1.0>)
121+ * [System libraries](<https://github.com/newpascal/fpcupdeluxe/releases/tag/crosslibs_v1.0>)
90122
91123### Cross-compiling from Windows and Linux towards Darwin: the hard way
92124
93-With 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).
125+With 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).
94126
95-First, you will need to get osxcross/cctools-port, and compile it yourself.
127+First, you will need to get osxcross/cctools-port, and compile it yourself.
96128
97-- [osxcross original](https://github.com/tpoechtrager/osxcross)\
98- [osxcross for FPC](https://github.com/LongDirtyAnimAlf/osxcross)
99-- [cctools-port original](https://github.com/tpoechtrager/cctools-port)\
100- [cctools-port for FPC](https://github.com/LongDirtyAnimAlf/cctools-port)
129+ * [osxcross original](<https://github.com/tpoechtrager/osxcross>)
130+[osxcross for FPC](<https://github.com/LongDirtyAnimAlf/osxcross>)
131+ * [cctools-port original](<https://github.com/tpoechtrager/cctools-port>)
132+[cctools-port for FPC](<https://github.com/LongDirtyAnimAlf/cctools-port>)
101133
102-For macOS, you will need the [osxcross for FPC](https://github.com/LongDirtyAnimAlf/osxcross) that has been adapted for use by FPC.
134+For macOS, you will need the [osxcross for FPC](<https://github.com/LongDirtyAnimAlf/osxcross>) that has been adapted for use by FPC.
103135
104-For iOS/iPhone, you will need the [cctools-port for FPC](https://github.com/LongDirtyAnimAlf/cctools-port) that has been adapted for use by FPC.
136+For iOS/iPhone, you will need the [cctools-port for FPC](<https://github.com/LongDirtyAnimAlf/cctools-port>) that has been adapted for use by FPC.
105137
106-Get yourself a SDK, either from your own Mac, or from online sources: [Various Mac SDK's](https://github.com/phracker/MacOSX-SDKs/releases)
138+Get yourself a SDK, either from your own Mac, or from online sources: [Various Mac SDK's](<https://github.com/phracker/MacOSX-SDKs/releases>)
107139
108-SDKs for iPhone can also be obtained from online sources: [Various iPhone SDK's](https://github.com/theos/sdks)
140+SDKs for iPhone can also be obtained from online sources: [Various iPhone SDK's](<https://github.com/theos/sdks>)
109141
110-Build osxcross/cctools-port according to the instructions. For example, on Windows with Cygwin.
142+Build osxcross/cctools-port according to the instructions. For example, on Windows with Cygwin.
111143
112-> **Note:** Please note: to be able to cross from Windows towards Darwin, you need to have NewPascal or FPC trunk installed !
144+![Light bulb](https://upload.wikimedia.org/wikipedia/commons/d/d8/Nuvola_apps_ktip.png) **Note:** Please note: to be able to cross from Windows towards Darwin, you need to have NewPascal or FPC trunk installed !
113145
114-Use fpcupdeluxe to install NewPascal or FPC trunk.
146+Use fpcupdeluxe to install NewPascal or FPC trunk.
115147
116-Before 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:
148+Before 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:
117149
118-- 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.
150+ * 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.
119151
120-![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)
152+[![](/wiki-images/b/bc/fpcupdeluxe_darwinlibs.JPG)](</File:fpcupdeluxe_darwinlibs.JPG>)
121153
122-- Now, on the mainscreen, you can select your CPU and OS (Darwin) and build the cross-compiler !
123-- **Again, fpcupdeluxe also has pre-built tools for crossing towards Darwin: using the fpcupdeluxe-auto-magic will be the easiest !!!**
154+[](</File:fpcupdeluxe_darwinlibs.JPG> "Увеличить")
124155
125-### Caveats, observations, troubleshooting
156+Point fpcupdeluxe towards the library location
126157
127-- 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.
128-- copy and save the logfile for reference / troubleshoot.
129-- adding the [[help]] system is easy: just tag it under "advanced settings", saving some manual labour.
130-- it takes about 10 minutes to make a full new install of fpc + Laz.
131-- 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).
132-- 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.
158+[![](/wiki-images/3/3f/fpcupdeluxe_darwinbins.JPG)](</File:fpcupdeluxe_darwinbins.JPG>)
133159
134-## Launching an installed Lazarus and fpc instance
160+[](</File:fpcupdeluxe_darwinbins.JPG> "Увеличить")
135161
136-For 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:
162+Point fpcupdeluxe towards the binary tools location
137163
138-```text
139- /home/user/Desktop/Lazarus_trunk.desktop (launcher)
140- /home/user/Lazarus_trunk (shell script)
141-```
164+ * Now, on the mainscreen, you can select your CPU and OS (Darwin) and build the cross-compiler !
142165
143-For 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"):
166+ * **Again, fpcupdeluxe also has pre-built tools for crossing towards Darwin: using the fpcupdeluxe-auto-magic will be the easiest !!!**
144167
145-``` bash
146- #!/bin/sh
147- # fpcupdeluxe: FPC home startlink script
148- export PATH="/home/user/trunk/fpc/bin/x86_64-linux:/home/user/trunk/lazarus:${PATH}"
149- export PPC_CONFIG_PATH="/home/user/trunk/fpc/bin/x86_64-linux"
150- exec /bin/bash
168+### Caveats, observations, troubleshooting
169+
170+ * 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.
171+ * copy and save the logfile for reference / troubleshoot.
172+ * adding the [[help]] system is easy: just tag it under "advanced settings", saving some manual labour.
173+ * it takes about 10 minutes to make a full new install of fpc + Laz.
174+ * 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).
175+ * 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.
176+
177+## Launching an installed Lazarus and fpc instance
178+
179+For 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:
151180```
181+/home/user/Desktop/Lazarus_trunk.desktop (launcher)
182+ /home/user/Lazarus_trunk (shell script)
183+```
152184
153-Windows equivalent batch file for setting up environment for working from command line (using example install dir of "f:\trunk"):
185+For 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"):
186+```
187+#!/bin/sh
188+ # fpcupdeluxe: FPC home startlink script
189+ export PATH="/home/user/trunk/fpc/bin/x86_64-linux:/home/user/trunk/lazarus:${PATH}"
190+ export PPC_CONFIG_PATH="/home/user/trunk/fpc/bin/x86_64-linux"
191+ exec /bin/bash
192+```
154193
155-```batch
156- REM fpcupdeluxe: FPC home startlink script
157- SET PATH=F:\trunk\fpc\bin\x86_64-win64;F:\trunk\lazarus;%PATH%
158- SET PPC_CONFIG_PATH=F:\trunk\fpc\bin\x86_64-win64
159- cmd.exe
194+Windows equivalent batch file for setting up environment for working from command line (using example install dir of "f:\trunk"):
160195```
196+REM fpcupdeluxe: FPC home startlink script
197+ SET PATH=F:\trunk\fpc\bin\x86_64-win64;F:\trunk\lazarus;%PATH%
198+ SET PPC_CONFIG_PATH=F:\trunk\fpc\bin\x86_64-win64
199+ cmd.exe
200+```
161201
162-> **Note:** Setting the paths this way is not global and only effects the current terminal shell and child shells.
202+![Light bulb](https://upload.wikimedia.org/wikipedia/commons/d/d8/Nuvola_apps_ktip.png) **Note:** Setting the paths this way is not global and only effects the current terminal shell and child shells.
163203
164204## clang compilation error
165205
166-On compiling for macOS target on Linux, you can see this error:
167-
168-```text
206+On compiling for macOS target on Linux, you can see this error:
207+```
169208clang: error: invalid version number in '-target arm64-apple-macosx11.0.0'
170209```
171210
172-Usually it happens on old systems, e.g. Ubuntu 20.04. This is fixable.
211+Usually it happens on old systems, e.g. Ubuntu 20.04. This is fixable.
173212
174-- Install package "clang-12" in package manager
175-- 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.
213+ * Install package "clang-12" in package manager
214+ * 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.
176215
177- user@PC:~$ ls -l /usr/bin/clang*
216+```
217+user@PC:~$ ls -l /usr/bin/clang*
178218 lrwxrwxrwx 1 root root 24 ноя 7 22:00 /usr/bin/clang -> ../lib/llvm-12/bin/clang
179219 lrwxrwxrwx 1 root root 26 мар 20 2020 /usr/bin/clang++ -> ../lib/llvm-10/bin/clang++
180220 lrwxrwxrwx 1 root root 26 апр 20 2020 /usr/bin/clang++-10 -> ../lib/llvm-10/bin/clang++
181221 lrwxrwxrwx 1 root root 24 апр 20 2020 /usr/bin/clang-10 -> ../lib/llvm-10/bin/clang
182222 lrwxrwxrwx 1 root root 26 мар 8 2022 /usr/bin/clang++-12 -> ../lib/llvm-12/bin/clang++
183223 lrwxrwxrwx 1 root root 24 мар 8 2022 /usr/bin/clang-12 -> ../lib/llvm-12/bin/clang
184224 lrwxrwxrwx 1 root root 28 апр 20 2020 /usr/bin/clang-cpp-10 -> ../lib/llvm-10/bin/clang-cpp
185225 lrwxrwxrwx 1 root root 28 мар 8 2022 /usr/bin/clang-cpp-12 -> ../lib/llvm-12/bin/clang-cpp
226+```
186227
187228## External links
188229
189-- See in depth guide for *BUILD / MAKE*: [Build FAQ](http://www.stack.nl/~marcov/buildfaq.pdf)
190-- [Fpcup by Reinier](http://wiki.lazarus.freepascal.org/fpcup)
191-- [Fpcupdeluxe source](https://github.com/newpascal/fpcupdeluxe)
192-- [Latest release](https://github.com/newpascal/fpcupdeluxe/releases/latest)
193-- [NewPascal](http://newpascal.org)
230+ * See in depth guide for _BUILD / MAKE_ : [Build FAQ](<http://www.stack.nl/~marcov/buildfaq.pdf>)
231+ * [[fpcup|Fpcup by Reinier]]
232+ * [Fpcupdeluxe source](<https://github.com/newpascal/fpcupdeluxe>)
233+ * [Latest release](<https://github.com/newpascal/fpcupdeluxe/releases/latest>)
234+ * [NewPascal](<http://newpascal.org>)
194235
195236---
196-*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).*
237+*From the Free Pascal wiki, page "fpcupdeluxe", as the Internet Archive kept it on 2025-04-28, last changed on 2024-12-28. 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